iptables com layer7

Como ativar um firewall Linux (iptables), com suporte ao layer7.

Geralmente quando pensamos em firewall sempre olhamos para a camanda 4 que, ou seja, TCP ou UDP, portas de origem ou destino.Mas será que isso é suficiente? E os programas específicos como jogos, p2p, msn, gtalk, irc e outros? Será que pega? A soluçao em vez de voce ficar se matando em correr atras de portas é bloquear a conexão por templates baseadas nesses softwares específicos.

Vamos implementar no kernel o suporte ao layer 7 para que o iptables (e sua camada netfilter), tenha suporte ao sistema baseado no flag -m layer7 –l7proto XXXX“, onde XXXX é o protocolo desejado.

Exemplo de uma regra do iptables COM SUPORTE AO LAYER 7: iptables -I INPUT -m layer7 –l7proto msn -j DROP.

que neste caso qualquer conexão com qualquer programa que use o protocolo msnp, serão derrubados e usar tambem o
L7-Filter em conjkunto com a ferramenta tc para fazer controle da banda baseado em layer 7.

http://l7-filter.sf.net -> Site do projeto.

Geralmente vc tera que baixar 2 arquivos necessarios, o netfilter-layer7-vX.X.X.tar.gz que contem os modulos nec
essários para ativar o layer 7 no kernel (suporte a camada do netfilter) e l7-protocols-YYYY_MM_DD.tar.gz que co
ntem as definições de protocolos baseado em data de alterações que SEMPRE são atualizados.

Para realizar essa tarefa entre no seu /usr/src/linux onde se encontra o seu kernel compilado e adcione os patch
s do suporte ao layer 7 com o comando patch -p1 < ../netfilter-layer7-vX.X.X/kernel-2.6-layer7-X.X.X.patch. Apos
patch do kernel entre no seu kernel pelo make menuconfig e va em Device Drivers > Networking Support > Network
Options > e marque a opcao Network Packet Filtering > Netfilter Configuration > e marque LAYER 7 match suypport
(leia o help das outras opções, valem a pena).

Caso vc queira usar o CBQ ou o HTB para LIMITAR A BANDA (o rate, download, upload e outros), va em Device Driver
s >> NEtworking Support > Networking Options > QoS and/or fail queueing
e selecione TUDO.

COMPILE o kernel e boot na nova imagem com suporte ao layer7.
NOTA: Instale ou compile nova versão do iptables com o suporte ao layer7, veja os procedimentos abaixo:

# cd DIRETORIO DO SOURCE
# tar jxvf iptables-x.x.xx.tar.bz2
# cd iptables-x.x.xx
#apt-get remove iptables –purge

Vamos adcionar o patch ao source do iptables:
# patch -p1 < /opt/layer7/netfilter-layer7-v2.1/iptables-1.4-for-kernel-2.6.20forward-layer7-2.21.patch
# chmod 755 extension/.layer7-test

Instale e compile o novo iptables ja com o suporte.
# make KERNEL_DIR=/usr/src/linux-<VERSAO DO SEU KERNEL> BINDIR=/sbin LIBDIR=/lib
# make install KERNEL_DIR=/usr/src/linux-<VERSAO DO SEU KERNEL> BINDIR=/sbin LIBDIR=/lib
#iptables -n -L

# iptables -n -L -t nat –> para apenas verificar as tabelas.

Entao vamos verificar o diretorio /lib/iptables/*layer7*

Vamos instalar os pacotes de protocolos do layer7, baixe os protocolos definidos direto do source em http://sourceforge.net/projects/l7-filter/. Descompacte e compile com make install para ser criado em /etc/i7-protocols/protocols.

Vamos testar? Mas antes carregue o módulo ipt_layer7 do iptables com o modprobe e coloque em /etc/rc.local (no SuSE em /etc/rc.d/boot.local) ou /etc/modules para ser automaticamente iniciado no boot.
NOTA: Caso vc tenha um kernel ja pronto e otimizado com o suporte ao layer 7 use entao os seguintes exemplos de -m layer 7 –l7proto.

#modprobe ipt_layer7

Bloqueando o MSN pelo nome da aplicação:
#iptables -A FORWARD -m layer7 –l7proto msnmessenger -j DROP

Caso vc queira ver a lista de procolos suportados (que podem ser adcionados), veja o site abaixo:
http://l7-filter.sourceforge.net/protocols

Voce tambem pode usar geradores de gráficos para ver o consumo de cada protocolo.

Powered by Moblie Video for WordPress + Daniel Watrous