Instalando iptables l7filter ipp2p no Ubuntu 8.04

Instalando o kernel-source

Instale o código fonte do kernel do ubuntu

 sudo apt-get linux-source-{versao} build-essential libncurses5-dev

Baixe os seguintes pacotes, salvando no diretório /usr/src

 netfilter-layer7-v2.17.tar.gz (http://l7-filter.sf.net)
 l7-protocols-2008-12-18.tar.gz (http://l7-filter.sf.net)
 iptables-1.3.8.tar.bz2 (http://ftp.netfilter.org/pub/iptables/)
 ipp2p-0.8.2.tar.gz (http://www.ipp2p.org)

Acesso o diretório /usr/src e descompacte os pacotes:

 cd /usr/src
 tar zxf netfilter-layer7-v2.17.tar.gz
 tar jxf iptables-1.3.8.tar.bz2
 tar zxf l7-protocols-2008-12-18.tar.gz
 tar zxf ipp2p-0.8.2.tar.gz

Crie os links simbólicos para o kernel e iptables, caso não estejam criados:

 ln -s linux-source-2.6.24 linux
 ln -s iptables-1.3.8 iptables

Aplicando o patch do layer7

Precisamos aplicar os patchs do layer7 no kernel e no iptables, vamos começar pelo kernel. Acesse o diretório do kernel:

 cd /usr/src/linux

Aplique o patch com o seguinte comando:

 patch -p1 < ../netfilter-layer7-v2.17/kernel-2.6.22-2.6.24-layer7-2.17.patch

Agora acesse o diretório do iptables para aplicarmos o patch nele:

 cd /usr/src/iptables

Aplique o patch com o seguinte comando:

 patch -p1 < ../netfilter-layer7-v2.17/iptables-1.4-for-kernel-2.6.20forward-layer7-2.17.patch
 chmod +x extensions/.layer7-test

Corrigindo o ipp2p

A versão do ipp2p tem um problema de compilação, é necessário fazer uma alteração no arquivo Makefile. Acesse o diretório do ipp2p e altere o seguinte:

 cd /usr/src/ipp2p-0.8.2
 vi Makefile
 troque: ld -shared -o libipt_ipp2p.so libipt_ipp2p.o
 por:    $(CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o

Recompilando o kernel

Antes de recompilar o kernel, é necessário marcar algumas opções. Acesso o diretório do kernel e execute:

 cd /usr/src/linux
 make menuconfig

Marque as opções com M:

 Networking->Networking options->Network packet filtering framework (Netfilter)->Core Netfilter Configuration
   <M>   "layer7" match support

Saia do menu e salve. Agora execute o comando para recompilar o kernel e os módulos

 make modules

Compilando o iptables

Antes de compilar o iptables, precisamos mudar o diretório de instalação padrão em seu código fonte, para manter a compatibilidade com o ubuntu. Acesse o diretório do iptables e altere o arquivo Makefile para o seguinte:

 cd /usr/src/iptables
 vi Makefile
 altere: PREFIX:=/usr/local
 para:   PREFIX:=/

Agora compile o iptables:

 make KERNEL_DIR=/usr/src/linux

Compilando o ipp2p

Acesse o diretório do ipp2p e execute:

 cd /usr/src/ipp2p-0.8.2
 make

Criando o instalador

Crie os seguintes diretórios no /root

 cd /root
 mkdir -p l7-filter-amd64-ubuntu-804-2.6.24-23/etc/l7-protocols/
 mkdir -p l7-filter-amd64-ubuntu-804-2.6.24-23/lib/modules/2.6.24-23-server/kernel/net/netfilter/
 mkdir -p l7-filter-amd64-ubuntu-804-2.6.24-23/lib/modules/2.6.24-23-server/kernel/net/ipv4/netfilter/
 mkdir -p l7-filter-amd64-ubuntu-804-2.6.24-23/lib/iptables

Copie os arquivos para os seus respectivos diretórios:

 cp /usr/src/linux/net/netfilter/*.ko /root/l7-filter-amd64-ubuntu-804-2.6.24-23/lib/modules/2.6.24-23-server/kernel/net/netfilter/
 cp /usr/src/linux/net/ipv4/netfilter/*.ko /root/l7-filter-amd64-ubuntu-804-2.6.24-23/lib/modules/2.6.24-23-server/kernel/net/ipv4/netfilter/
 cp /usr/src/l7-protocols-2008-12-18/protocols/* /root/l7-filter-amd64-ubuntu-804-2.6.24-23/etc/l7-protocols/
 cp /usr/src/ipp2p-0.8.2/libipt_ipp2p.so /root/l7-filter-amd64-ubuntu-804-2.6.24-23/lib/iptables
 cp /usr/src/ipp2p-0.8.2/ipt_ipp2p.ko /root/l7-filter-amd64-ubuntu-804-2.6.24-23/lib/modules/2.6.24-23-server/kernel/net/ipv4/netfilter/
 cp /usr/src/iptables/extensions/libipt_layer7.so /root/l7-filter-amd64-ubuntu-804-2.6.24-23/lib/iptables

Crie agora o arquivo install no diretório /root/l7-filter-amd64-ubuntu-804-2.6.24-23 com o seguinte conteúdo:

 #!/bin/bash
 cp -av lib/ /
 cp -av etc/ /
 depmod -a
 ldconfig
 exit 0

Dê permissão de execução para o script install:

 chmod 755 install

Crie agora um pacote compactado com este arquivo:

 cd /root/
 tar czf l7-filter-amd64-ubuntu-804-2.6.24-23.tar.gz l7-filter-amd64-ubuntu-804-2.6.24-23/

Se quiser instalar os pacotes nesta máquina, somente execute o comando ./install. Utilize o pacote compactado para distribuir estes modulos para outros computadores.

Pronto, os pacotes foram todos instalados, você já pode usar os novos recursos do seu iptables.