Configurando um Firewall de A a Z. Parte 1
15/04/2008 às 16:34 | por Humberto Caetano |Estamos começando uma série de artigos com a intenção de configurarmos um firewall por completo. Existe uma grande demanda para a instalação de firewall’s Linux em muitas empresas, e este conjunto de artigos pode ser utilizado como um manual de instalação e configuração.
Para este primeiro artigo vamos instalar, configurar a rede e compilar o Kernel do Linux de forma que o mesmo tenha suporte a L7Filter. Assim poderemos controlar o uso de software P2P em nossa rede.
Inicialmente vamos instalar um GNU Debian Linux 4.0. A escolha desta distribuição se deve ao fato da facilidade de instalação de muitos pacotes, tornando nossa vida mais fácil na questão de dependências de softwares.
Para a instalação você pode utilizar um PC qualquer que tenha a disposição, o ideal é que o mesmo tenha duas placas de rede. Caso não tenha um PC você poderá utilizar uma solução como o VirtualBox, que cria máquinas virtuais.
Instale o Debian padrão. No meu caso, fiz a instalação sem acesso a internet, e só depois configurei o apt. Durante o processo de instalação configure a rede para um endereço que você considere externo. Por exemplo:
Mesmo os dois endereços do nosso servidor sendo IP’s não válidos, em um ambiente de testes, poderemos utilizá-los.
Com o Debian instalado, vamos editar o arquivo de configuração do apt-get e adicionar os repositórios.
# vim /etc/apt/sources.list
deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
deb http://ftp.us.debian.org/debian/ etch main contrib non-free
Agora rodamos o apt-get update, e então instalamos os pacotes básicos necessários. Para que esta parte funcione corretamente, é necessário que seu Debian tenha acesso a internet. Qualquer dúvida em relação a configuração de rede do Linux leia Configurando uma Rede em Linux.
# apt-get update
# apt-get install build-essential ssh bzip2 ncurses-dev initrd-tools
O ssh só está sendo instalado no caso de precisarmos acessar o servidor remotamente.
Agora que estamos encaminhados com os programas básicos, vamos baixar o Kernel do Linux, os patches de atualização do netfilter, as definições de protocolos e o iptables versão 1.4.
No site do kernel, http://www.kernel.org, faça o download da última versão do Kernel. No meu caso foi a 2.6.24.4. Em http://l7-filter.sourceforge.net/HOWTO-kernel, baixe o iptables, o netfilter-layer7 e a definição de protocolos que é o arquivo l7-protocols. Com todos os softwares em seu servidor vamos começar a configuração. Primeiro descompactamos.
# tar jxvf linux-2.6.24.4.tar.bz2
# tar zxvf netfilter-layer7-v2.17.tar.gz
# tar jxvf iptables-1.4.0.tar.bz2
# tar zxvf l7-protocols-2008-02-20.tar.gz
Agora vamos aplicar o patch do netfilter no Kernel do Linux.
# cd linux-2.6.24.4
# patch -p1 < ../netfilter-layer7-v2.17/kernel-2.6.22-2.6.24-layer7-2.17.patch
Neste momento podemos compilar o Kernel
# cp /boot/config-2.6.18-4-486 .config
# make menuconfig
Grande parte das configurações do seu Kernel já devem estar prontas, só precisamos que sejam alterados alguns pontos.
Em Networking -> Networking Options -> Network Packet Filtering Framework -> Core Netfilter Configuration, habilite o Netfilter Connection Tracking Support, e o Layer7 Match Support. Também é interessante ativar o suporte aos protocolos nesta mesma janela, o FTP por exemplo. Lembre-se, também de ativar o suporte IPv4 Connection Tracking Support em IP: Netfilter Configuration. Você já pode sair da configuração do Kernel e executar o make.
# make
Ao final do make eu gosto sempre de rodar esses dois comandos
# make modules
# make modules_install
São vestígios da época do Kernel 2.4, mas me deixam mais a vontade. Agora temos que preparar a inicialização do servidor. Vamos copiar os arquivos bzImage, que é o Kernel do Linux, o System.map, .config, e criar o initrd.
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.24.4
# cp System.map /boot/System.map-2.6.24.4
# cp .config /boot/config-2.6.24.4
# mkinitrd -o /boot/initrd.img-2.6.24.4 2.6.24.4
Agora vamos colocar tudo no grub e reiniciar nosso servidor.
# vim /boot/grub/menu.lst
title Debian GNU/Linux, kernel 2.6.24.4
root (hd0,0)
kernel /boot/vmlinuz-2.6.24.4 root=/dev/hdb1 ro
initrd /boot/initrd.img-2.6.24.4
savedefault
Lembre-se de manter seu Kernel anterior. Caso você precise dele, ele ainda estará lá! Agora reinicie o servidor e vamos as configurações finais. Se as configurações estiverem corretas, você já deve estar no Kernel novo, com o patch do netfilter. Agora vamos compilar o iptables e finalizar o processo. O KERNEL_DIR é o diretório onde você compilou o Kernel do Linux. Normalmente eu coloco esse diretório em /usr/src/linux, mas depende de cada um.
# cd iptables-1.4.0
# patch -p1 < ../netfilter-layer7-v2.17/iptables-1.4-for-kernel-2.6.20forward-layer7-2.17.patch
# chmod +x extensions/.layer7-test
# make KERNEL_DIR=/root/linux-2.6.24.4
# make install
Para verificar como ficou a instalação utilize:
# iptables -V
iptables v1.4.0
Só nos falta copiar o diretório de definições de protocolos para o /etc.
# cp -r l7-protocols-2008-02-20 /etc/l7-protocols
A titulo de teste podemos executar o seguinte comando:
# iptables -A FORWARD -m layer7 –l7proto msnmessenger -s 192.168.254.0/24 -j DROP
Terminamos por hoje. No próximo capítulo vamos liberar o acesso dos usuários para Internet, e criar nosso firewall básico.
Índice de Configurando um Firewall de A a Z
- Configurando um Firewall de A a Z. Parte 1
- Configurando um Firewall de A a Z. Parte 2
- Configurando um Firewall de A a Z. Parte 3
- Configurando um Firewall de A a Z. Parte 5


8 Responses to “Configurando um Firewall de A a Z. Parte 1”
By Junior on Apr 16, 2008 | Reply
É bom ter um passo a passo para não esquecer de nenhuma etapa na hora de fazer as config.
By Elton Dhiego on Apr 16, 2008 | Reply
Parabéns!!
By Rafael Goulart on Apr 17, 2008 | Reply
Evidentemente que se o kernel for atualizado é preciso repetir o processo…
By Dailson Fernandes on Apr 17, 2008 | Reply
Tá show!
By adilson on Apr 22, 2008 | Reply
Não entendi a seguinte parte : Em Networking -> Networking Options -> Network Packet Filtering Framework -> Core Netfilter Configuration, habilite o Netfilter Connection Tracking Support, e o Layer7 Match Support. Também é interessante ativar o suporte aos protocolos nesta mesma janela, o FTP por exemplo. Lembre-se, também de ativar o suporte IPv4 Connection Tracking Support em IP: Netfilter Configuration. Você já pode sair da configuração do Kernel e executar o make.
Poderia me explicar melhor?
By Humberto Caetano on Apr 23, 2008 | Reply
Posso preparar um post específico para compilação de kernel, mas no momento estou bastante ocupado!
Epero ter ajudado.
By mauricio taveira on Jul 17, 2008 | Reply
Só que neste tive um problema em relação ao iptables ele da erro em alguns módulos e na table nat é como se ela não estivesse instalada. Teria como descrever a parte de compilação mais detalhada pra ver se eu não estou esquecendo de nada.
Grato e parabens esse tutorial ta muito bom…
By Humberto Caetano on Jul 17, 2008 | Reply
Normamente a tabela nat já vem por padrão no sistema. Você pode executar também um make oldconfig para recuperar os dados da sua configuração atual.
Boa sorte.