A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Linux

Filtragem de pacotes no Linux 2.4

Qui

26

Abr

2007


17:47

(3 votos, média 3.67 de 5) 


Nível intermediário Um filtro de pacotes é uma peça de software que examina os cabeçalhos dos pacotes para decidir o que fazer com eles.

O filtro pode decidir sumir com o pacote ('DROP' é descartar o pacote como se nunca o tivesse recebido), aceitar o pacote ('ACCEPT' é deixar o pacote passar) ou fazer alguma coisa um pouco mais complicada.

No Linux, a filtragem de pacotes fica embutida no kernel (como um módulo ou fazendo parte do próprio kernel). Existem coisas um pouco mais elaboradas que podem ser feitas com os pacotes, mas a função básica de verificar os cabeçalhos para decidir o que deve acontecer com os pacotes nunca muda.

Para que servem os filtros de pacotes?

A filtragem de pacotes possui três funções principais: controle, segurança e supervisão de tráfego.

Controle

Se o Linux estiver sendo usado para conectar uma rede interna com outra externa (a Internet, por exemplo), então existe a possibilidade de liberar ou bloquear determinados tipos de tráfego. Por exemplo: como o cabeçalho dos pacotes contém o endereço de destino, é possível impedir que um pacote vá para certos lugares na rede externa. Outro exemplo seria bloquear sistematicamente a propaganda vinda de determinado domínio (do doubleclick.net, por exemplo) para não perder tempo com este tipo de bobagem (nem você, nem o seu navegador). Se o filtro de pacotes for informado de que deve bloquear qualquer pacote recebido ou enviado para o endereço, o problema estará resolvido (existe uma forma mais eficiente de atingir o mesmo objetivo... dê uma olhada no Junkbuster).

Segurança

Se o Linux for a única barreira entre o caos da Internet e sua rede configurada no capricho, é muito bom saber que se pode restringir o que costuma atropelar a porta. É possível, por exemplo, liberar tudo o que sai da sua rede e, ao mesmo tempo, dar um tombo no conhecido 'Ping da Morte' que costuma ser enviado por 'estrangeiros' mal intencionados. Outro exemplo é impedir que seu Linux seja 'telnetado'. Talvez você também queira (como a maioria das pessoas) ser apenas um observador da Internet e não um servidor da mesma, sem seu conhecimento ou autorização. Neste caso, basta usar um filtro de pacotes para rejeitar pacotes que chegam para iniciar e ativar conexões - com isto você impede que qualquer mané se conecte.

Supervisão

Máquinas da rede local mal configuradas podem começar a esparramar pacotes por todos os lados. Neste caso, é uma mão na roda se o filtro de pacotes avisar quando alguma coisa anormal estiver ocorrendo para que possamos dar um jeito na máquina mal comportada. Além do mais, nos dá a chance de matar a curiosidade smile

Filtros de pacotes no Linux

Os kernels do Linux possuem filtros de pacotes desde a série 1.1. A primeira geração, baseada no ipfw do BSD, foi adapatada por Alan Cox no final de 1994. Esta foi melhorada por Jos Vos e colaboradores para o Linux 2.0, onde a ferramenta do espaço do usuário 'ipfwadm' controlava as regras de filtragem do kernel. Em meados de 1998, para o Linux 2.2, Rusty Russel, com a ajuda de Michael Neuling, remodelou o kernel e disponibilizou a ferramenta 'ipchains'. Finalmente, em meados de 1999, o kernel foi aperfeiçoado e apareceu uma ferramenta de quarta geração para o Linux 2.4: a 'iptables'. Este tutorial foca especificamente esta ferramenta.

Você vai precisar de um kernel que tenha a infraestrutura do netfilter. O netfilter (filtro de rede) é um framework genérico embutido no kernel que abre as portas para outras coisas - o módulo iptables, por exemplo. Isto significa que você precisa do kernel 2.3.15 (ou posterior) e que responda 'Y' (sim) para o CONFIG_NETFILTER quando configurar o kernel.

A ferramenta iptables fala com o kernel informando quais pacotes devem ser filtrados. A não ser que você seja um programador ou absurdamente curioso e fizer as coisas por conta própria, esta será a ferramenta para controlar a filtragem de pacotes.

iptables

A ferramenta iptables insere e elimina regras das tabelas de filtragem de pacotes do kernel. Seja lá o que for que você inventar de colocar nas tabelas precisa ser fixado, senão será perdido no próximo reboot.

iptables é um substituto do ipfwadm e do ipchains.

Tornando as regras permanentes

A configuração do firewall é armazenada no kernel e é perdida em cada reboot. Pode-se usar o script iptables-save para guardar a configuração num arquivo e o iptables-restore para restaurar a configuração a partir de um arquivo.

Uma outra forma é colocar os comandos necessários para montar as regras num script de inicialização. Se algum comando falhar, você vai ter que se virar - geralmente o 'exec /sbin/sulogin' quebra o galho.

Guia realmente rápido para filtragem de pacotes

Esta é a sugestão do Rusty Russel, criador do ipchains:

## Inserir os módulos de rastreamento de conexão (não é necessário se já estiverem no kernel).
# insmod ip_conntrack
# insmod ip_conntrack_ftp

## Criar uma cadeia que bloqueia conexões novas, exceto se vierem de dentro.
# iptables -N block
# iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A block -j DROP

## Saltar para esta cadeia vindo das cadeias INPUT e FORWARD.
# iptables -A INPUT -j block
# iptables -A FORWARD -j block

Informações adicionais