Como Instalar e Configurar o iptables com l7filter e ipp2p no Ubuntu 8.04

Neste guia, você aprenderá como instalar e configurar o iptables com os módulos l7filter e ipp2p no Ubuntu 8.04. Este processo é útil para aqueles que precisam de um controle mais avançado sobre o tráfego de rede, permitindo a filtragem de pacotes com base em padrões de protocolo de camada 7, além de possibilitar o controle de tráfego peer-to-peer (P2P). Abaixo, explico passo a passo como realizar essa configuração.

1. Preparação do Ambiente: Instalando o Código-Fonte do Kernel

O primeiro passo é preparar o ambiente para a compilação e instalação dos módulos. Para isso, você precisará instalar o código-fonte do kernel do Ubuntu e algumas ferramentas essenciais de desenvolvimento. Execute o seguinte comando no terminal como root:

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

Substitua {versao} pela versão do kernel que você está utilizando. Este comando instalará o código-fonte do kernel, bem como as bibliotecas e ferramentas necessárias para compilar o kernel e os módulos.

2. Baixando os Pacotes Necessários

Agora, baixe os pacotes necessários para o l7filter, l7-protocols, iptables e ipp2p. Salve esses pacotes no diretório /usr/src:

Acesse 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

3. Criando Links Simbólicos

Antes de aplicar os patches, é necessário garantir que os links simbólicos para o kernel e o iptables estejam criados. Se ainda não estiverem, crie-os com os seguintes comandos:

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

Esses links garantem que os diretórios corretos sejam referenciados durante a aplicação dos patches e compilação.

4. Aplicando o Patch do l7filter

Com o ambiente preparado, o próximo passo é aplicar os patches necessários no kernel e no iptables. Comece acessando o diretório do kernel:

$ cd /usr/src/linux

Aplique o patch do l7filter ao kernel com o seguinte comando:

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

Depois de aplicar o patch ao kernel, faça o mesmo com o iptables:

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

Esse processo aplica as modificações necessárias ao código do kernel e do iptables para suportar o módulo l7filter.

5. Corrigindo o Ipp2p

A versão do ipp2p disponível pode apresentar um problema de compilação. Para resolver isso, é necessário modificar o arquivo Makefile. Acesse o diretório do ipp2p e edite o arquivo:

$ cd /usr/src/ipp2p-0.8.2
$ vi Makefile

Substitua a linha:

ld -shared -o libipt_ipp2p.so libipt_ipp2p.o

Por:

$(CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o

Isso garantirá que o processo de compilação do ipp2p ocorra sem problemas.

6. Recompilando o Kernel

Agora é hora de recompilar o kernel com as novas configurações. Acesse o diretório do kernel e abra o menu de configuração:

$ cd /usr/src/linux
$ make menuconfig

No menu de configuração, marque as seguintes opções com M (para compilar como módulo):

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

Saia do menu e salve as alterações. Em seguida, compile os módulos do kernel:

$ make modules

Esse processo pode demorar alguns minutos, dependendo do desempenho do seu hardware.

7. Compilando o iptables

Antes de compilar o iptables, é necessário ajustar o diretório de instalação padrão no código-fonte, para garantir a compatibilidade com o Ubuntu. Acesse o diretório do iptables e edite o arquivo Makefile:

$ cd /usr/src/iptables
$ vi Makefile

Altere a linha:

PREFIX:=/usr/local

Para:

PREFIX:=/

Agora, compile o iptables com o seguinte comando:

$ make KERNEL_DIR=/usr/src/linux

8. Compilando o Ipp2p

Com o kernel e o iptables configurados, é hora de compilar o ipp2p. Acesse o diretório do ipp2p e execute o comando:

$ cd /usr/src/ipp2p-0.8.2
$ make

Isso criará os arquivos necessários para o ipp2p funcionar como parte do iptables.

9. Criando o Instalador

Para facilitar a instalação dos módulos em outros sistemas, você pode criar um instalador personalizado. Primeiro, crie os diretórios necessários em /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

Depois, copie os arquivos compilados para os diretórios correspondentes:

$ 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 um script de instalação com o nome de install

$ vi install

Com o seguinte conteúdo:

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

Salve o script como install e dê permissão de execução:

$ chmod 755 install

Por fim, compacte o pacote:

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

Esse pacote pode ser utilizado para distribuir e instalar os módulos em outros computadores.

Conclusão

Seguindo os passos descritos acima, você terá configurado com sucesso o iptables com suporte para l7filter e ipp2p no Ubuntu 8.04. Com essas ferramentas, você pode implementar uma filtragem de pacotes mais avançada, controlando o tráfego de rede de acordo com as suas necessidades específicas.

Se você tiver mais perguntas sobre iptables, sinta-se à vontade para entrar em contato.

Rolar para cima