segunda-feira, 30 de maio de 2011

instalação de Firewall com Iptables utilizando Layer7

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:
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:
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 gcc

2. Criar diretório para armazenar pacotes:

# mkdir /opt/layer7
# cd /opt/layer7


3. 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&ts=1278937632
# tar zxvf netfilter-layer7-v2.21.tar.gz

4. 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.bz2


5. Aplicar o patch do Layer7 no novo kernel:

# cd /usr/src/linux-2.6.25.2
# patch -p1 < /opt/layer7/netfilter-layer7.v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch


6. 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 oldconfig


7. Configurar o novo kernel:

# make menuconfig

Acesse os submenus como segue:

Networking
Networking options
Network packet filtering framework (netfilter)
Core Netfilter Configuration

Marque 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 Configuration

Marque 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_image

Obs.: 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 &

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].deb

10. Reiniciar a máquina com o novo kernel:

# shutdown -r now

Obs.: 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.bz2

12. 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 < /opt/layer7/netfilter-layer7-v2.1/iptables-1.4-for-kernel-2.6.20forward-layer7-2.21.patch
# chmod 755 extension/.layer7-test


13. 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=/lib


Verificar 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&ts=1278938145
# tar zxvf l7-protocols-2009-05-28.tar.gz
# cd l7-protocols-2009-05-28
# make install
# ls /etc/l7-protocols/protocols


Dicas 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)

Nenhum comentário: