Para facilitar, vamos descompactar todos os arquivos em /usr/src.
# tar -zxvf netfilter-layer7-vX.X.X.tar.gz -C /usr/src
# tar -zxvf l7-protocols-YYYY_MM_DD.tar.gz -C /usr/src
# tar -jxvf iptables-1.X.XX.tar.bz2 -C /usr/src
# tar -jxvf linux-2.6.XX.tar.bz2 -C /usr/src
(se você estiver utilizando a versão do kernel de www.kernel.org)
OBS: É necessário que as coisas sejam feitas nesta ordem.
3.1) Patch do kernel (aqui vou considerar que você já possui os fontes do seu kernel no diretório /usr/src/linux-2.6.xx e que um link simbólico de nome /usr/src/linux aponta para este diretório).
Entre no diretório /usr/src/linux e execute o seguinte comando:
Após isso, você deve habilitar algumas coisas no kernel:
Em "Device Drivers -> Networking support -> Networking options" marque a opção "Network packet filtering". Depois entre nela e em "Netfilter Configuration" e marque "Layer 7 match support". Você provavelmente vai querer marcar outras opções, ou talvez todas elas.
Se você pretende utilizar o CBQ ou o HTB para limitação de banda (eu utilizo o HTB), você deve verificar se eles estão selecionados em "Device Drivers -> Networking support -> Networking options -> QoS and/or fair queueing". Aqui eu tenho todas as opções selecionadas.
Opcionalmente você pode editar o arquivo Makefile do Kernel e na linha EXTRAVERSION você acrescenta a um texto sugestivo (como L7 ou algo assim ...). Esse texto vai aparecer junto da versão do Kernel quando você digitar "uname -r".
Feito isso, compile e instale o novo kernel. Não vou entrar em detalhes aqui sobre como fazer isso, pois isso fugiria do escopo do artigo e já há muita documentação sobre isso na Internet.
3.2) Patch do iptables
Entre no diretório /usr/src/iptables-1.X.XX e execute o seguinte comando:
# make BINDIR=/usr/bin LIBDIR=/usr/lib MANDIR=/usr/man
Debian Sarge:
# make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man
e instale com o comando:
Conectiva:
# make BINDIR=/usr/bin LIBDIR=/usr/lib MANDIR=/usr/man install
Debian Sarge:
# make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
3.3) Arquivos de definições de protocolos
Entre no diretório /usr/src/l7-protocols-YYYY_MM_DD e digite o comando:
# make install
Isso vai criar um diretório /etc/l7-protocols e copiar os arquivos para lá. Simples não? Quando for atualizar as definições basta repetir estes passos (descompactar o arquivo com as definições atualizadas, entrar na pasta e executar "make install").
[2] Comentário enviado por herloncamargo em 26/04/2006 - 10:53h
Utilizo o Layer7 há mais de um ano. Bloqueio quase todos os protocolos, com excessão do Skype. O L7 só bloqueia versões antigas do Skype. Alguém já conseguiu bloquear as versões recentes do Skype com o L7? Se conseguiu, como?
[5] Comentário enviado por patrickbrandao em 26/04/2006 - 16:55h
Olá Fabiano,
eu trabalho muito com iptables, e preciso de uma solução:
o l7, modulo string, entre outros, sao capazes de detectar o pacote que contem uma palavra/frase/expressao regular, porem preciso que, apos identificar um pacote, a conexao TCP inteira fique na regra, ou seja:
iptables -A FORWARD -m string --string 'X-Owner' -j ACCEPT
Apenas o primeiro pacote que contem o cabecalho X-Owner sera positivo nessa regra, os demais pacotes da conexao nao, preciso que os demais pacotes entrem na regra, ou sejam lembrados de alguma maneira, para que eu possa dar tratamento diferenciado a eles.
Se voce conhece ou tem alguma sugestao, agradeço!
abraços
[6] Comentário enviado por leandromoreirati em 26/04/2006 - 18:16h
Cara vc so cometeu um pecado, avisar que o layer7 no kernel da família 2.6 so roda mas versões 2.6.13 a 2.6.15. Eu testei as versoes ora kernel antigo (old kernel e deram muito pau) quando apliquei no 2.6.14 resolveu o meu problema. Apliquei em 2 firewalls de produção uma rodando Debian e outro Slackware.
[7] Comentário enviado por leandromoreirati em 26/04/2006 - 18:36h
Eu tenho tido mto problema com o string estou usando o iptables 1.3.5, será que pode ser a versao do iptables que eu to compilando? Olha so o que acontece quando eu aplico uma regra:
# iptables -A INPUT -m string --string "X-Owner" -j DROP
iptables v1.3.5: STRING match: You must specify `--algo'
Try `iptables -h' or 'iptables --help' for more information
ele me pede esse " --algo" e nao faço a mínima idéia do que seja. Algume pode me dar uma ideia.
[8] Comentário enviado por paulinholinux em 26/04/2006 - 23:06h
Cara ....
Nossa esse artigo veio em hora certinha ....
eu mandei a pouco uma duvida pra lista de discução do fedora sobr como implementar o L7, pois nao estava conseguindo. Agora só uma coisa, eu tenho rodando um servidor gateway com fedora3 (estou para migrando-o pra fedora 5 este final de semana), será qe vc sabe se tenho mesmo qe compilar o kernel? nao exite nenhum pacote .rpm qe aplique isso ao kernel?
se eu precisar mesmo compilar o kernel, vc me indicaria um bom tutorial pra o meu caso (compilação de kernel no fedora core, pois sempre qe me arrisco a compilar o kernel da pau)
[13] Comentário enviado por agk em 15/05/2006 - 22:13h
Com squid é praticamente impossível bloquear os WEB Messengers, são tantos e a cada dia surgem mais e mais. Pensei que talvez com iptables mais alguns módulos fosse possível ler o conteúdo dos pacotes e bloqueá-los.
Com squid é possível sim, quando se tem uma rede pequena com poucos usuários, mas imagine 3 mil usuários, onde cerca de 500 acessam todos os dias o dia todo, são milhões de linhas de log's para conferir em busca do malditos web messengers. E como disse, quanto mais se bloqueia, mais Web msn surgem.
Estou pensando seriamente em começar a punir os usuários aos invés de bloquear os sites. :-)
[16] Comentário enviado por fpires em 19/03/2007 - 16:57h
Não, mesmo assim vc precisa do iptables, porque precisa aplicar um patch nele. Agora, há uma versão nova do L7 que não precisa de patch no kernel nem no iptables. Assim que tiver um tempo, vou preparar um tuto sobre ele.
[18] Comentário enviado por fpires em 25/04/2008 - 03:03h
Para essa versão do L7 sim, vc precisa recompilar o Kernel, porque o L7 não está incluso na ávore principal do Kernel, mas existe uma versão dele (que pretendo fazer um tutorial sobre elea) que roda em userspace e não precisa de recompilar o kernel (apenas compilar o programa). De uma olhadinha na página do projeto.
[20] Comentário enviado por Hellfire em 30/10/2008 - 18:26h
pessoal, estou tendo problemas com a compilação do iptables.
eu apliquei o patch do l7 ao iptables
dei um # make configure : executou sem problemas;
mas quando dou um # make ou # make install, aparece seguinte erro:
Making install in extensions
make[1]: Entering directory `/usr/src/iptables-1.4.2/extensions'
CC libxt_esp.oo
libxt_esp.c: In function `parse_esp_spi':
libxt_esp.c:37: error: `ERANGE' undeclared (first use in this function)
libxt_esp.c:37: error: (Each undeclared identifier is reported only once
libxt_esp.c:37: error: for each function it appears in.)
make[1]: ** [libxt_esp.oo] Erro 1
make[1]: Leaving directory `/usr/src/iptables-1.4.2/extensions'
make: ** [install-recursive] Erro 1
não faço ideia de como resolver isso, alguém pode me ajudar?