instalação de Firewall com Iptables utilizando Layer7
Autor: Artur Luís | Publicado: 2011-05-30T08:50:00-03:00

Introdução       O projeto Layer7 é um patch que permite ao Netfilter tratar a camada de  aplicação. Em nosso caso, foi instalado especificamente para controlar MSN e  transferência de arquivos pelo MSN. Porém ele trata muitos outros  protocolos. Para conhecê-los melhor, basta acessar o link:   http://l7-filter.sourceforge.net/protocols Existem diversos tutoriais na internet que tratam sobre esta instalação  de Layer7 com Iptables, porém devido a atualização de versões, entre  outros fatores, sempre é bom fazer uma revisão atualizando os dados e  melhorando em alguns pontos. Este artigo tem por objetivo esta revisão.  Toda e qualquer sugestão de melhoria é bem vinda.Procedimentos de instalação  Caso queira baixar todos os pacotes necessários antes de iniciar, seguem os links diretos para download:  Layer 7 versão 2.21  Kernel 2.6.25.2  Iptables 1.4.0  Protocolos do Layer7 atualizados até 28/05/2009 1. Instalar pacotes necessários (caso falte alguma dependência, basta  instalar ou se preferir faça a instalação dos pacotes abaixo usando o  aptitude):# apt-get install libncurses5-dev kernel-package gcc2. Criar diretório para armazenar pacotes:# mkdir /opt/layer7# cd /opt/layer73. Baixar e descompactar o pacote do projeto Layer7 (utilizei a versão 2.21):# wget -c http://downloads.sourceforge.net/project/l7-filter/l7-filter%20kernel%20version/2.21/netfilter-layer7-v2.21.tar.gz?use_mirror=ufpr&amp;ts=1278937632# tar zxvf netfilter-layer7-v2.21.tar.gz4. Baixar e descompactar o fonte do Kernel (utilizei a versão 2.6.25.2):# cd /root/# wget -c ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.2.tar.bz2#  cd /usr/src# tar jxvf /root/linux-2.6.25.2.tar.bz25. Aplicar o patch do Layer7 no novo kernel:# cd /usr/src/linux-2.6.25.2# patch -p1 &lt; /opt/layer7/netfilter-layer7.v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch6. Aproveitar configuração do kernel atual:Caso queira usar as configurações do kernel atual no novo kernel,  utilize os comandos abaixo. Provavelmente será necessário responder  várias perguntas referentes a novos itens inclusos no novo kernel e que  não existiam no atual. Para estas perguntas, caso não saiba as  respostas, pressione então de fora a fora, pois depois você poderá rever  as opções na próxima etapa).# cp /boot/config-2.6[pressione o tab] /.config# make oldconfig7. Configurar o novo kernel:# make menuconfigAcesse os submenus como segue:Networking  Networking options     Network packet filtering framework (netfilter)        Core Netfilter ConfigurationMarque os módulos referentes ao Layer 7 (na dúvida marque todos os módulos). Volte 1 nível e entre no submenu:IP: Netfilter ConfigurationMarque o módulo "IPv4 connection tracking support (required for NAT)".Marque o módulo "Full NAT" e demais sub-itens desse módulo.Obs.: Em caso de instalar sem utilizar a configuração de kernel  anterior, convém dar uma passada em todo o submenu de Networking afim de  verificar se opções referentes a bridge, nat e afins estejam  selecionadas.Terminado, salve e saia.8. Compilar o novo kernel e criar um pacote .deb do mesmo:# make-kpkg -initrd kernel_imageObs.: Caso esteja fazendo a atualização de um servidor remoto, por  questões de segurança convém deixar este processamento em segundo plano.# make-kpkg -initrd kernel_image &amp;Saia para tomar um merecido café, pois esta etapa demora um tempo considerável.Obs.: A instalação manual também pode ser realizada, mas como se trata  de Debian, não precisamos ficar "reiventando a roda", vamos gerar o  pacote e deixar o dpkg fazer o resto. Mas caso queira fazer manualmente  também funciona.9. Instalar o novo kernel:# dpkg -i ../linux-image-2.6.25[pressione TAB].deb10. Reiniciar a máquina com o novo kernel:# shutdown -r nowObs.: Caso aconteça algum erro, dê boot com o kernel antigo e então remova este novo kernel para fazer melhorias.# apt-get remove --purge  linux-image-2.6.25.2(para ver o nome correto do pacote faça: dpkg -l | grep linux-image)11. Baixar o Iptables (utilizei a versão 1.4.0, pois as posteriores não obtive sucesso):# cd /opt/layer7# wget -c http://www.netfilter.org/projects/iptables/files/iptables-1.4.0.tar.bz212. Descompactar o fonte e aplicar o patch:# cd /opt/layer7# tar jxvf  iptables-1.4.0.tar.bz2# cd iptables-1.4.0# patch -p1 &lt;  /opt/layer7/netfilter-layer7-v2.1/iptables-1.4-for-kernel-2.6.20forward-layer7-2.21.patch# chmod 755 extension/.layer7-test13. Remover o Iptables antigo e instalar a nova versão:# aptitude purge iptables# make KERNEL_DIR=/usr/src/linux-2.6.25 BINDIR=/sbin LIBDIR=/lib# make install KERNEL_DIR=/usr/src/linux-2.6.25 BINDIR=/sbin LIBDIR=/libVerificar se tudo correu bem:# iptables -n -L# iptables -n -L -t nat# ls -l /lib/iptables/*layer7*14. Baixar e instalar os pacotes de protocolos do Layer7:# cd /opt/layer7# wget -c http://downloads.sourceforge.net/project/l7-filter/Protocol%20definitions/2009-05-28/l7-protocols-2009-05-28.tar.gz?use_mirror=ufpr&amp;ts=1278938145# tar zxvf l7-protocols-2009-05-28.tar.gz# cd l7-protocols-2009-05-28# make install# ls /etc/l7-protocols/protocolsDicas importantes a respeito do Layer7  Dica 1: Caso você já tenha o Layer7 funcionando e necessite apenas  atualizar os protocolos suportados, basta fazer apenas o item 14,  observando é claro o nome do novo arquivo de protocolos. O que acontece é  apenas copiar os novos pacotes de protocolos em cima dos antigos. Então  convém fazer um backup dos arquivos dos protocolos antigos.Dica 2: Nem sempre todos os pacotes mais recentes envolvidos funcionam  plenamente em conjunto, então observe as versões de kernel, iptables e  layer7 compatíveis antes fazer as compilações._______________________________________________CRÉDITOS PARA: Dorival Junior (http://www.vivaolinux.com.br/~dorivaljunior)