As vezes é necessário fazer bloqueio nos firewalls que vão além de portas e ips. No caso do emule por exemplo, não podemos definir um ip de origem ou mesmo uma porta, pois esses são variáveis. Neste caso, temos que subir até a camada de aplicação, nos protocolos utilizados por esses programas que não são variáveis igual aos ips e portas, e fazer o bloqueio pelos padrões de comunicação utilizados pela aplicação.
Resumindo, o iptables l7 permite a filtragem de pacotes por protocolo da camada 7 (modelo OSI). É uma filtragem menos eficiente (como dito, o iptbles deve "subir" até a camada 7) porém eficaz (como dito, a aplicação não varia o protocolo ).
Abaixo mostro um passo a passo da instalação do iptables l7 no Debian. Do original http://www.eduardoramos.eti.br/ drupal/?q=node/12, porém com algumas correções:
[Passos prévios]
- O sistema utilizado para a instalação foi debian-40r4a-i386-netinst baixado no site http://www.debian.org/distrib/netinst em 09/09/2008 no link http://cdimage.debian.org/debian-cd/4.0_r4a/i386/iso-cd/debian-40r4a-i386-netinst.iso
É necessário que seja i386 por causa das versões dos fontes que utilizaremos.
- Autentique-se como root no sistema para efetuar todos os passos desta explicação.
- Adicione a linha abaixo no arquivo /etc/apt/source.list para manter o apt-get atualizado:
deb http://ftp.br.debian.org/debian etch main contrib
- Após adicionada a linha, atualize o apt-get com o comando abaixo:
apt-get update
[Baixando fontes e instalando utilitarios]
- O iptables é intimamente ligado ao kernel para aumetar sua performance, então, para a instalação do iptables l7 é necessário compilar um kernel com as opções de l7. Baixe os fontes necessários com os comandos abaixo:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/ linux-2.6.19.tar.gz
wget http://www.netfilter.org/projects/iptables/files/ iptables-1.3.7.tar.bz2
wget http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/ netfilter-layer7-v2.9.tar.gz
wget http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/ l7-protocols-2007-01-14.tar.gz
- Alguns utilitarios que não vêm com o Debian devem ser instalados:
aptitude install bzip2 gzip unzip
aptitude install libncurses5-dev
aptitude install kernel-package
- Descompactando fontes:
tar xvzf linux-2.6.19.tar.gz
tar xvjf iptables-1.3.7.tar.bz2
tar xvzf netfilter-layer7-v2.9.tar.gz
tar xvzf l7-protocols-2007-01-14.tar.gz
[Configurando, compilando e instalando o kernel com l7]
- Criando um link para o diretório do kernel para auxiliar no processo de configuração:
ln -s /usr/src/linux-2.6.19 /usr/src/linux
- Copiando as configurações de boot:
cp /boot/config-2.6.24* /usr/src/linux/.config
- Aplicando o patch do layer7 no kernel:
cd /usr/src/linux
patch -p1 < /usr/src/netfilter-layer7-v2.9/kernel-2.6.18-2.6.19-layer7-2.9.patch
- Agora o kernel está pronto para ser configurado, compilado e instalado:
make menuconfig
- Uma tela de configuração do kernel será mostrada. Você deverá seguir os passos:
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core Netfilter Configuration ---> Netfilter Xtables support (required for ip_tables)
- Ative com M a opção Netfilter Xtables support.
- Siga para:
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> IP: Netfilter Configuration ---> IP tables support (required for filtering/masq/NAT) --->
- Ative:
Layer 7 match support (EXPERIMENTAL)
[*] Layer 7 debugging output
- Após ativar conforme acima, siga selecionando Exit e até que seja perguntado se você deseja salvar a nova configuração do kernel, selecione YES e para salvar.
- compilando o kernel:
make-kpkg -initrd kernel_image
Nota: demorará vários minutos.
- Após a compilação, será gerado um arquivo em /usr/src/linux-image-2.6.19.7_2.6.19.7-10.00.Custom_i386.deb, instale-o com o comando abaixo:
dpkg -i linux-image-2.6.19.7_2.6.19.7-10.00.Custom_i386.deb
- Após a instalação, reinicie sua máquina e selecione o novo kernel para ser carregado.
[Configurando e instalando o iptables l7]
- O iptables deve ser configurado para utilizar as novas funcionalidades oferecidas pelo kernel. Faça os comandos abaixo para efetivar essa configuração:
cd /usr/src/iptables-1.3.7
patch -p1 < /usr/src/netfilter-layer7-v2.9/iptables-layer7-2.9.patch
chmod +x extensions/.layer7-test
- Instalando o iptables:
make KERNEL_DIR=/usr/src/linux
make install KERNEL_DIR=/usr/src/linux
- Instalando protocolos que podem ser filtrados:
cd /usr/src/l7-protocols-2007-01-14
make install
[Finalizações]
- Reinicie sua máquina, selecione o novo kernel e insira a seguinte regra para testar o novo iptables:
iptables -I FORWARD -m layer7 --l7proto bittorrent -j DROP
[Possíveis problemas]
- Se a regra anterior for executada com sucesso, o seu iptables está pronto para ser utilizado. Caso contrário, o módulo l7 talvez não foi carregado automaticamente. Carregue-o com o comando abaixo:
modprobe ipt_layer7
- Se for exibida uma mensagem que o módulo não foi encontrado, a sua instalação falhou. Comente os problemas nesta postagem.
[Informações adicionais]
- Uma relação dos protocolos suportados pode ser vista em http://l7-filter.sourceforge.net/protocols
Assinar:
Postar comentários (Atom)
2 comentários:
No arquivo /var/log/messages temos a seguinte mensagem:
"
iptables kernel: layer7: This is some protocol I can't handle
"
E pelo que parece o layer7 não reconhece seus protocolos. Estou estudando esse erro, se alguém pudar ajudar.
Graaaaaaande Oshiro,
Muuuuuuuito irado o seu blog, tem muitas informações úteis para o dia a dia de um administrador.
Shooooow !!!
Abraços !!!
Postar um comentário