FIREWALL COM IPTABLES

www.eriberto.pro.br/iptables

by João Eriberto Mota Filho

 

2. GENERALIDADES

 

Sistemas de Firewall

Muitos não conhecem o verdadeiro significado do vocábulo firewall. Firewall é um sistema integrado, utilizado em redes de computadores para a sua proteção. Tal sistema é composto por filtros de pacotes, filtros de estados, IDS, IPS, proxies etc. Assim sendo, é errado dizer que uma máquina rodando Iptables é o firewall de uma rede. Isso por que o Iptables é um mero filtro de pacotes e estados. Assim sendo, só consegue analisar dados contidos no cabeçalho IP do pacote que trafega. Ele, por exemplo, não consegue verificar o conteúdo de um pacote. Com isso, um ataque ou um vírus poderão adentrar à rede.

A figura a seguir mostrará um exemplo de um sistema de firewall. A área cinza representa tal sistema.

É possível concluir que um único programa, como o Iptables, não constitui um firewall e sim parte dele. Um administrador de rede deve considerar o uso de outros elementos de segurança. RECOMENDO, DENTRE OUTROS, O USO DO IPS HLBR, DISPONÍVEL EM http://hlbr.sourceforge.net, juntamente com o Iptables. Se preferir, clique aqui para fazer download.

Filtragem de Pacotes

O Iptables é um filtro de pacotes. Essa filtragem poderá ocorrer em duas sitações:

--> diretamente em uma máquina de destino;

--> em uma máquina intermediária responsável pelo roteamento de dados entre segmentos de rede.

Vamos considerar a filtragem de pacotes no caso de controle do roteamento. Então, vamos configurar uma máquina capaz de tomar decisões em relação ao tráfego de rede. Assim, analisaremos o filtro de pacotes existente no Linux. Ele verifica apenas o cabeçalho de cada pacote. Basicamente, só entende endereço IP, máscara de sub-rede, portas e tipos de protocolos IP. Não analisa o conteúdo do pacote e nem identifica ataques.

A filtragem de pacotes é uma atividade interna do kernel.

 

Os filtros Linux

O filtro de pacotes, na maioria das vezes, atua como um roteador controlado. É uma atividade interna, uma propriedade, do kernel.

São os seguintes, os filtros existentes:

--> kernel 2.0.x: ipfwadm;

--> kernel 2.2.x: ipchains;

--> kernel 2.4.x: iptables;

--> kernel 2.6.x: iptables.

Obs: um kernel é estável quando o algarismo existente entre os dois pontos é par. Exemplo: x.2.x é estável. Já o x.3.x não é estável.

O Kernel 2.4, por questões de compatibilidade, mantém os filtros ipfwadm e ipchains. No entanto, eles não funcionam completamente com esse kernel. Além disso, se o ipchains estiver ativo, o iptables não irá funcionar. Assim, no Red Hat, torna-se necessário entrar no #setup e:

--> habilitar o iptables;

--> desabilitar o ipchains.

Se a distribuição utilizada não possuir o comando #setup, utilize o comando #rmmod ipchains. Cabe ressaltar que o iptables terá os seus módulos básicos carregados quando for utilizado pela primeira vez.

 

Como funciona um filtro de pacotes?

O FILTRO DE PACOTES do Linux funciona mediante regras estabelecidas. Todos os pacotes entram no kernel para serem analisados. As CHAINS (correntes) são as situações possíveis dentro do kernel. Quando um pacote entra no kernel, este verifica o destino do pacote e decide qual chain irá tratar do pacote. Isso se chama roteamento interno. Os tipos de chains irão depender da tabela que estaremos utilizando no momento. Existem 3 tabelas possíveis:

--> filter: é a tabela default. Quando não especificarmos a tabela, a filter será utilizada. Refere-se às atividades normais de tráfego de dados, sem a ocorrência de NAT. Admite as chains INPUT, OUTPUT e FORWARD.

--> nat: utilizada quando há NAT. Exemplo: passagem de dados de uma rede privada para a Internet. Admite as chains PREROUTING, OUTPUT e POSTROUTING.

--> mangle: basicamente, trabalha com marcação de pacotes e QoS. Neste tutorial, não trataremos dessa tabela.

O Iptables é stateful, ou seja, trabalha com os estados das conexões. O ipfwadm e o ipchais são stateless.