Iptables Layer7 Firweall Howto

From Pruonckk.org

Autor: Pruonckk le Punk

Conteúdo

Prefacio

Tenho percebido ultimamente uma série de pessoas querendo fazer bloqueios de msn, p2p como o emule o kazaa, entre outras softwares, entao uma solucao para esta questao é usar o modulo layer7 no kernel, junto com o iptables

Dependencias

Como dependencias para trabalharmos com o layer7 temos as seguintes dependencias

kernel 2.6.14
iptables 1.3.4
gcc
make
libncurses5-dev
l7-patchs
l7-protocols

O kernel e o iptables terao de ser compilados, pois temos de aplicar patchs para isso

Kernel

entao para baixar o kernel, use o link abaixo

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2

Iptables

Para o iptables, use o link abaixo

http://www.netfilter.org/projects/iptables/files/iptables-1.3.4.tar.bz2

Ferramentas

os outros pacotes, voce pode instalar pelo apt

apt-get install gcc make libncurses5-dev

Layer7

Os patchs do Layer7 voce pega no link abaixo

http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.1.tar.gz

Layer7 protocols

http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2006-01-22.tar.gz

Descompactando as aplicacoes

Bom, eu so ponho que voce tenha baixado todos os pacotes em /usr/src caso nao tenha feito isso, mova-os pra la

cd /usr/src
tar -xjvf netfilter-layer7-v2.1.tar.gz
tar -xjvf iptables-1.3.4.tar.bz2
tar -xjvf linux-2.6.14.tar.bz2
tar -xzvf l7-protocols-2006-01-22
mv l7-protocols-2006-01-22 /etc/l7-protocols

Aplicando os patchs de layer7

Agora com os aplicativos descompactados, podemos aplicar os patchs do layer7, vamos iniciar pelo kernel

no kernel

cd /usr/src/linux-2.6.14
patch -p1 < ../netfilter-layer7-v2.1/kernel-2.6.13-2.6.15-layer7-2.1.patch

no iptables

cd /usr/src/iptables-1.3.4
patch -p1 < ../netfilter-layer7-v2.1/iptables-layer7-2.1.patch
chmod +x extensions/.layer7-test

Compilando o kernel

Aqui eu espero que voce saiba compilar um kernel sem problemas, caso nao saiba sugiro que voce aprenda algumas coisas antes de tentar implanter este tipo de servico, pois voce esta pulando alguns passos

Para iniciarmos a compilacao do kernel vamos ate o diretorio

cd /usr/src/linux-2.6.14.3
make menuconfig

dentro do menu, vamos seguir o seguinte caminho

Networking ---> 
   Networking options --->
       [*] Network packet filtering (replace ipchains) --->
           IP: Netfilter Configuration --->
              <M> Layer 7 match support (EXPERIMENTAL)
              [ ] Layer 7 debugging output

com estas opcoes selecionadas, e as outras que voce decidir, voce ja pode salvar o arquivo e compilar

Compilando o iptables

Agora que você ja compilou o kernel, e espero que voce o esteja usando agora vamos até o diretorio do iptables

cd /usr/src/iptables-1.3.4
make KERNEL_DIR=/usr/src/linux-2.6.14
make install KERNEL_DIR=/usr/src/linux-2.6.14

Os arquivos binários serão instalados em /usr/local/sbin/

ls /usr/local/sbin/
ip6tables  iptables  iptables-restore  iptables-save

desta maneiro, voce pode ou passar o caminho todo no arquivo com as regras ou criar os links em /sbin

Instalando o l7-protocols

Agora precisamos instalar o l7-protocols para que o layer7 saiba como trabalhar com as regras

tar -xzvf /usr/src/l7-protocols-2006-01-22.tar.gz -C /usr/src
cd /usr/src/l7-protocols-2006-01-22
make install

Criando uma regra

Agora aqui em baixo, vou colocar um exemplo de uma regra simples

#!/bin/bash
#
#
###############################################################
# Script de demonstracao para uso de layer7 criado por
# pruonckk le punk ( pruonckk at pruonckk.org ) para o 
# tutorial de firewall com layer7 do DebianForDummies
#
# Este script nao tem nenhuma garantia, use por sua conta
# e risco, eu nao me responsabilizo por qualquer consequencia
# que voce possa ter ao usalo
#
###################################################################
#
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
#
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
#
iptables -L
iptables -t nat -L
iptables -t mangle -L
#
#
# Gerando logs do msn
#
iptables -A FORWARD -m layer7 --l7proto msnmessenger -j LOG --log-prefix "msn : "
#
# Gerando logs de emule
iptables -A FORWARD -m layer7 --l7proto edonkey -j LOG --log-prefix "edonkey : "
iptables -A FORWARD -m layer7 --l7proto gnutella -j LOG --log-prefix "gnutella : "
#
#######################
## exemplo de bloqueio
## OBS: O bloqueio deve ser feito antes do log, para que nao 
## confunda o administrador
# iptables -A FORWARD -m layer7 --l7proto msnmessenger -j DROP
#
#
# Mascarando saida das conexoes
#
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# OBS: Substitua eth0 pela sua interface ligada a internet
#

Salve este arquivo em /etc/init.d com o nome de firewall

para acrescentar ele na inicializacao do debian, execute os comando abaixo

chmod +x /etc/init.d/firewall
ln -s /etc/init.d/firewall /etc/rc2.d/S99firewall

Feito isso, voce pode testar as conexoes e acompanhar os logs, e acrescentar os bloqueios de acordo com sua necessidade


Voltar

Ferramentas pessoais
Inutilidades