Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: conky
Por tatuiano
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Incrementando seu Firewall com o Layer 7 Filter
Linux user
fpires
26/04/2006
Neste artigo demonstro como compilar, instalar e utilizar o L7 Filter, um filtro de pacotes que se baseia no protocolo da aplicação utiliza.
[ Hits: 105520 ]
Conceito: 10.0   3 voto(s)3 voto(s)3 voto(s)3 voto(s)3 voto(s) + quero dar nota ao artigo

Introdução

As formas tradicionais de classificação de pacotes, baseadas geralmente no tipo de protocolo de transporte, na camada 4 do modelo de rede OSI (TCP ou UDP) e nas portas de origem e/ou destino, são suficientes na maioria dos casos. Porém ela pode ser ineficaz em alguns casos específicos, como por exemplo, no caso de programas de P2P (programas de compartilhamento de arquivos, como o Kazaa), que utilizam portas aleatórias ou em caso de serviços rodando em uma porta não padrão (por exemplo um servidor HTTP rodando na porta 1111). Em casos como este, o uso de um classificador de pacotes que faz a análise dos dados na camada de aplicação (camada 7 do modelo OSI) torna-se indispensável.

Funcionamento


O sistema atua como uma extensão do iptables, e é utilizado através da sintaxe "-m layer7 --l7proto XXXX", onde XXXX é o protocolo desejado (veremos alguns exemplos mais à frente). Vamos a um exemplo mais concreto:

# iptables -I INPUT -m layer7 --l7proto fasttrack -j DROP

Este comando "derruba" (-j DROP) pacotes que utilizem o protocolo FastTrack (--l7proto fasttrack) e estejam entrando na máquina (-I INPUT). Vale lembrar que o protocolo FastTrack é utilizado pelo Kazaa e por outros aplicativos P2P. Perceba que não é feita nenhuma referência à portas ou endereços IP (embora elas possam ser utilizadas em conjunto - você poderia escrever essa regra de forma a afetar apenas um host especificamente).

Também é possível utilizar o L7-Filter em conjunto com a ferramenta tc, para fazer controle de banda.

Próxima página >>




Páginas do artigo

Outros artigos deste autor
Nenhum artigo encontrado.

Leitura recomendada

Comentários
[1] Comentário enviado por davidsonbhz em 26/04/2006 - 09:30h:

Ja tinha lido algo a respeito do L7 mas faltava alguma coisa em portugues pra ajudar. Muito bom!

[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?

[3] Comentário enviado por balani em 26/04/2006 - 11:56h:

Alguem sabe me dizer se há uma maneira mais facil e eficiente de bloquear o orkut?

[4] Comentário enviado por rjacomel em 26/04/2006 - 16:26h:

Já havia implementado o Layer7 e recomendo...

[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 leo_jfa 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 leo_jfa 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)

Muito obrigado e parabéns pelo artigo.

Té mais

Paulinholinux
<<-_->>

[9] Comentário enviado por fpires em 30/04/2006 - 10:42h:

Danger Will Robinson !!
Encontrei um erro no Tutorial:

Onde está escrito

----Inicio ------
Entre no diretório /usr/src/iptables-1.X.XX e execute o seguinte comando:

# patch -p1 < ../netfilter-layer7-vX.X.X/iptables-layer7-X.X.X.patch

Compile o iptables com o comando:

---- Fim ------

Deveria estar escrito:

----- Inicio ------
Entre no diretório /usr/src/iptables-1.X.XX e execute o seguinte comando:

# patch -p1 < ../netfilter-layer7-vX.X.X/iptables-layer7-X.X.X.patch

e execute o seguinte comando: chmod +x extensions/.layer7-test

Compile o iptables com o comando:

---- Fim ------

Caso contrário o iptables vai compilar SEM o suporte ao Layer 7.
Tem como editar isso no artigo?

[10] Comentário enviado por fpires em 30/04/2006 - 10:54h:

Paulinho, até onde eu sei é necessário compilar o kernel e o iptables sim. Nunca ouvi falar de nenhuma distro que venha com suporte nativo ao projeto.

[11] Comentário enviado por agk em 04/05/2006 - 13:54h:

Ótimo artigo, excelente para ampliar as funcionalidades do IPTABLES.
Só tenho uma dúvida, tem como bloquear os Web Messengers da vida com isso?

[12] Comentário enviado por fpires em 10/05/2006 - 21:35h:

Não, Web Messengers rodam em cima do protocolo HTTP e devem ser bloqueados com o squid ou outro proxy.

[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. :-)

[14] Comentário enviado por tuxlinuxbr2 em 03/10/2006 - 16:53h:

consegui bloquear o MSN o squid asssim:
# ACLS
acl msnmessenger url_regex -i gateway.dll
acl MSN req_mime_type -i ^application/x-msn-messenger$
acl MSN_DOM dstdomain loginnet.passport.com
acl MSN_DOM dstdomain webmessenger.msn.com

#Liberacao individual MSN
acl liberal src "/etc/squid/listas/libera_msn"

#Regra Bloqueio MSN
http_access deny horacom MSN !liberal
http_access deny horacom msnmessenger !liberal
http_access deny horacom MSN_DOM !liberal

esse "liberal" voce cria um arquivo com os IP's que voce deseja que possam usar o MSN.

abraços,

[15] Comentário enviado por pedrohc em 19/03/2007 - 15:01h:

Ola se eu ja tiver o iptables instalado... eh somente instalar o L7?
no make e make install?
ou precisa de mais alguma configuraçao?

[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.

[17] Comentário enviado por claudio.-.rodrig em 24/04/2008 - 16:19h:

Olá amigo,

Estou precisando implementar o Layer7 urgente, possuo o kernel-2.6.15-26-server, distruição ubuntu, versão iptables 1.3.3.

Eu preciso recompilar o kernel, mesmo tendo o 2.6?

Abraços,
Claudio R

[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.

[19] Comentário enviado por jardineti em 16/09/2008 - 11:06h:

Olá meu servidor funcionou perfeitamente, só gostaria de saber como desabilitar os logs que ficam aparecendo na tela.
Obrigado.

[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?

[21] Comentário enviado por blade_ander em 27/12/2010 - 11:09h:

Pessoal,

Se tiverem problemas e o módulo não subir, vai a dica, no caso usando Debian 5.06 lenny.

Alterando configuração do modulo L7:
# cp /lib/modules/2.6.26/kernel/net/netfilter/xt_layer7.ko
/lib/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/xt_layer7.ko


Editando arquivo de módulos:


vim /lib/modules/2.6.26-2-686/modules.dep

Adicone a linha abaixo no final do arquivo:

/lib/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/xt_layer7.ko: /lib/modules/2.6.26-2-686/kernel/net/netfilter/nf_conntrack.ko /lib/modules/2.6.26/kernel/net/netfilter/x_tables.ko


Reinicie o servidor.

Subir o modulo: modprobe xt_layer7



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.