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
:
netfilter-layer7-v2.17.tar.gz
Disponível aquil7-protocols-2008-12-18.tar.gz
Disponível aquiiptables-1.3.8.tar.bz2
Disponível aquiipp2p-0.8.2.tar.gz
Disponível aqui
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.