转载:

Conteúdo [esconder]
1 Prefacio
2 Dependencias
2.1 Kernel
2.2 Iptables
2.3 Ferramentas
2.4 Layer7
2.5 Layer7 protocols
3 Descompactando as aplicacoes
4 Aplicando os patchs de layer7
4.1 no kernel
4.2 no iptables
5 Compilando o kernel
6 Compilando o iptables
7 Instalando o l7-protocols
8 Criando uma regra

[editar]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

[editar]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

[editar]Kernel
entao para baixar o kernel, use o link abaixo

[url]http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2[/url]
[editar]Iptables
Para o iptables, use o link abaixo

[url]http://www.netfilter.org/projects/iptables/files/iptables-1.3.4.tar.bz2[/url]
[editar]Ferramentas
os outros pacotes, voce pode instalar pelo apt

apt-get install gcc make libncurses5-dev
[editar]Layer7
Os patchs do Layer7 voce pega no link abaixo

[url]http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.1.tar.gz[/url]
[editar]Layer7 protocols
[url]http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2006-01-22.tar.gz[/url]
[editar]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
[editar]Aplicando os patchs de layer7
Agora com os aplicativos descompactados, podemos aplicar os patchs do layer7, vamos iniciar pelo kernel

[editar]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
[editar]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
[editar]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

    [editar]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 maneira, você pode ou passar o caminho todo no arquivo com as regras ou criar os links em /sbin

    [editar]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
    [editar]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

    Retirado de "[url]http://www.debianfordummies.org/wiki/index.php/Firewall_com_Layer7[/url]"