Вы находитесь на странице: 1из 8

A TEORIA POR TRS DO FIREWALL

Autor: Oscar Costa <oscarcosta at gmail.com>


Data: 29/10/2005

INTRODUO

Com a evoluo da Internet surgiram novas formas promscuas de obter informaes ou simplesmente
afetar outras pessoas ou corporaes.
Da mesma forma que surgiram mtodos e ferramentas de invaso, pichao, dentre outras, surgem de
forma mais lenta verdade, ferramentas para evitar esses vandalismos virtuais. Uma destas formas o
firewall, que visa impedir que um invasor consiga acesso no autorizado a uma mquina ou rede na
Internet.
Um dos inmeros firewalls o Netfilter/Iptables, que o firewall padro do Linux desde a verso 2.4.0 do
kernel.

LINUX E FIREWALLS

Nas verses anteriores ao kernel 2.2.0, o firewall padro do Linux era o Ipfwadm. Este firewall funcionava
como o firewall atual (iptables), construindo regras de filtragem dos pacotes que trafegam pelo host, mas
a construo dessas regras no Ipfwadm era muito complexa.
J no kernel 2.2.0, o Ipfwadm foi substitudo, ou melhor, atualizado para o ipchains. A idia da criao
do ipchains foi facilitar a construo de regras do Ipfwadm, mantendo o mesmo estilo do seu
antecessor, mas facilitando a criao de regras.
A partir do kernel 2.4.0, o ipchains foi melhorado, surgindo assim o Netfilter/Iptables. Nesta nova
gerao de firewall para o Linux foram implementadas facilidades para NAT (Network Address
Translation) e foi flexibilizada a filtragem de pacotes do ipchains, criando novas tabelas para NAT.

NETFILTER/IPTABLES

O Netfilter e o iptables so um s, mas Netfilter relacionada parte do kernel que trata as conexes IP
com as interfaces de rede e Iptables refere-se estrutura de tabelas e a definio de regras de filtragem
de pacotes, tratadas pelo Netfilter no kernel do Linux.
Estabelecendo esta diviso entre parte do kernel e parte do usurio, as regras do firewall
Netfilter/Iptables conseguem ser de mais fcil implementao. Como o tratamento de conexes passa
pelo kernel do Linux, com esta separao, a cada nova solicitao de regra de firewall no necessrio
habilitar novo mdulo ou at mesmo recompilar o kernel, bastando somente atualizar o arquivo com as
regras desejadas.
Quando os pacotes vindo da rede (Internet) chegam ao host, eles passam pela cadeia PREROUTING,
onde so encaminhados para o roteamento do kernel. No roteamento interno do kernel, os pacotes
podem ir para INPUT, seguindo para o processamento local, ou podem ir para FORWARD, onde so
encaminhados para POSTROUTING, saindo em seguida para a rede (Internet).
Os pacotes que so gerados localmente vo para a cadeia OUTPUT, onde so encaminhados para
POSTROUTING, saindo em seguida para a rede (Internet).
Essas duas seqncias de passos dos pacotes no Netfilter so mostradas na figura abaixo.

(/imagens/artigos/comunidade/iptables.jpg)

TABELAS, CADEIAS E REGRAS

A estrutura lgica do Netfilter/Iptables composta de tabelas, que so parte do Netfilter, ou seja,


existem no kernel do Linux (http://www.vivaolinux.com.br/linux/). Cadeias ou chains so a subdiviso
lgica das tabelas, para melhor tratamento das regras de firewall.

4.1 TABELAS

As tabelas so parte da diviso do Netfilter onde as regras do Iptables so colocadas. Elas so utilizadas
de acordo com a utilizao do computador: workstation, gateway ou router, por exemplo.
No Netfilter atualmente existem trs tabelas:
filter

Tabela padro. Contm trs cadeias bsicas: INPUT, FORWARD e OUTPUT;


Tabela para pacotes que queiram criar uma nova conexo, utilizada em um computador

nat

funcionando como gateway ou roteador. Tem as cadeias PREROUTING, OUTPUT e


POSTROUTING;

mangle

Tabela utilizada para alteraes nos pacotes. Desde o kernel 2.4.18 tem as cadeias
PREROUTING, OUTPUT, INPUT, FORWARD e POSTROUTING.

4.2. CADEIAS

No Netfilter/Iptables existe o conceito de cadeias ou "chains". Essas cadeias nada mais so que a
diviso das regras do iptables em conjuntos mais lgicos, para melhorar o entendimento de como o
Netfilter processa os pacotes. Este conceito foi implementado j no Ipchains, mas foi melhorado no
iptables.
No iptables existem as seguintes cadeias:
INPUT

Utilizada em pacotes que esto chegando ao host

FORWARD

Utilizada para pacotes roteados pelo host

OUTPUT

Utilizada para pacotes originados no host

PREROUTING Utilizada para alterar pacotes que esto chegando ao host


POSTROUTINGUtilizada para alterar pacotes que esto saindo do host

4.3. REGRAS

As regras so constitudas de um conjunto de classificadores e uma ao, poltica de firewall. Um pacote


ao se deparar com uma regra testado com os classificadores, se ele passar definida uma ao ou
poltica para aquele pacote, se ele no passar comparado prxima regra chegando at a regra
padro da cadeia em que ele se encontra.

POLTICAS OU AES

Uma regra de filtragem deve especificar critrios para os pacotes tratados por ela. Isso definido como
poltica ou ao do firewall. Quando chega um pacote, ele examinado nas regras do firewall e
decidida a poltica que ser atribuda a ele.
Estas so as polticas mais genricas do iptables:
ACCEPTDeixa o pacote passar
DROP

Descarta o pacote

QUEUE Envia o pacote para a camada de usurio


RETURNRetorna o processamento do pacote para a cadeia anterior

Outras polticas implementadas pelo iptables funcionam somente nas tabelas de filter, nat ou mangle:
DNAT

Trata os endereos da rede de destino

LOG

Cria o "log" dos pacotes que passaram pela regra

MASQUERADE

Semelhante ao SNAT, mas utilizado para conexes com IP dinmico, como em conexes
"dial-up"

REDIRECT

Altera o endereo IP de destino do pacote

REJECT

Como o DROP, descarta o pacote, mais retorna uma mensagem de erro ICMP

SNAT

Trata os endereos da rede de origem

CLASSIFICADORES

Cada classificador composto por um comando, um ou mais parmetros e uma ou mais extenses.
Junto com uma poltica eles formam uma regra do firewall.

6.1. COMANDOS

Comandos especificam o que fazer com uma definida regra.


-A cadeia
-D

cadeia

[n_regra]
-I

Anexa uma ou mais regras no fim de uma cadeia especificada


Apaga uma ou mais regras da cadeia especificada, pode ser especificada o nmero da
regra que ser excluda

cadeia Insere uma ou mais regras na posio especfica de uma cadeia especfica, se a posio

[n_regra]

no for definida, o padro 1

-L [cadeia]
-F [cadeia]

Lista todas regras em uma cadeia definida, se esta no for definida o comando listar
todas as regras do firewall
Remove todas as regras da cadeia definida, se esta no for definida o comando remover
todas as regras do firewall

-N cadeia

Cria uma nova regra para a cadeia especfica

-X [cadeia]

Apaga a cadeia definida, se esta no for definida apaga todas cadeias

-P

cadeia

poltica

Define uma poltica padro para uma cadeia especfica

6.2. PARMETROS

Os parmetros setam definies para as regras aplicarem nos pacotes trafegados pelo firewall. O [!]
indica negao, ou seja, inverte a regra.
-p [!] protocolo

Define o protocolo que a regra ir tratar

-s [!] end_IP[/mask] Define o endereo de origem do pacote que a regra ir tratar


-d [!] end_IP[/mask]Define o endereo de destino do pacote que a regra ir tratar
-j [!] alvo

Define um alvo para o pacote

-i [!] nome

Define o nome da interface por onde o pacote chegou

-o [!] nome

Define o nome da interface por onde o pacote sair

6.3 EXTENSES

O iptables pode usar mdulos para tratar os pacotes com extenses. Estas extenses podem ser
chamas de duas formas: implicitamente, utilizando o parmetro -p, especificando assim o protocolo a
ser tratado ou com a opo -m, para chamar o modulo especfico para tratar a extenso.
icmp : Extenso para tratar pacotes ICMP:
--icmp-type [!] nome ou nmero: Especifica qual mensagem ICMP que a regra vai tratar. Este
tipo pode ser especificado pelo nmero, no caso o nmero da porta IP que ela se refere, ou pelo
nome.
limit : Define a utilizao de limites para certos pacotes. Eficaz contra ataques do tipo Flooding e
DoS.
--limit taxa - Define o nmero mximo de ocorrncias por um perodo de tempo, este tempo
pode ser: por segundo (/second), por minuto (/minute), por hora (/hour) ou por dia (/day).
--limit-burst nmero - Nmero mximo de pacotes antes que o limite comece a ser imposto.
tcp : Extenso para tratar pacotes TCP:

--source-port [!] porta[:porta] : Define a porta de origem do pacote, ou um intervalo de portas.


--destination-port [!] porta[:porta] : Define a porta de destino do pacote, ou um intervalo de
portas.
--tcp-flags [!] mask comp : Trata pacotes com o flags definidos do TCP setados. O parmetro
mask define quais flags sero testados e o parmetro comp define quais flags devem estar
setados.
[!] -syn : Trata pacotes de inicio de conexo, com o flag SYN setado.
udp : Extenso para tratar pacotes UDP:
--source-port [!] porta[:porta] : Define a porta de origem do pacote, ou um intervalo de portas.
--destination-port [!] porta[:porta] : Define a porta de destino do pacote, ou um intervalo de
portas.

UTILIZAO

Para criar as regras do firewall com iptables pode ser utilizado o terminal de comandos para digitar regra
por regra. Este caso til somente para testar a funcionalidade das regras, pois seria invivel digitar no
terminal todas as regras do firewall de um grande servidor ou ate mesmo de um computador domstico
toda vez que este for reiniciado.
Uma maneira mais inteligente e bem mais prtica a criao de um script feito em Shell para que seja
chamado na inicializao do sistema.

7.1. COMANDOS

A estrutura do comando para criar regras do iptables :


/sbin/iptables <COMANDO> <CADEIA> <parmetros e/ou extenso> <POLTICA>
Onde:
/sbin/iptables arquivo binrio referente ao iptables;
<COMANDO> um dos comandos (seo 6.1.) que especificam o que fazer com a regra;
<CADEIA> a cadeia (seo 4.2.) onde a regra vai ser estabelecida;
<parmetros e/ou extenso> so as informaes que definem a regra;
<POLTICA> a ao que o Netfilter vai fazer com pacotes que sejam tratados pela regra;

7.2. EXEMPLOS DE REGRAS

# /sbin/iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


Esta regra protege um host contra o "ping da morte", dando um limite de 1 ping por segundo para
requisies de ping.
# /sbin/iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
Esta regra protege um host contra ataques do tipo "Syn-flood, DoS".
# /sbin/iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
Esta regra libera o acesso a interface de loopback.
# /sbin/iptables -A INPUT -i eth0 -s 10.0.0.0 -p tcp --dport 22 -j ACCEPT
Esta regra libera o acesso a mquina atravs de SSH por maquinas de uma rede interna.
# /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 3128
# /sbin/iptables -t nat -A PREROUTING -p udp -i eth0 --dport 80 -j REDIRECT --to-port 3128
Estas duas regras redirecionam a porta 80 para a porta 3128, utilizado em servidores proxy.

7.3. MDULOS DO KERNEL

Como padro o kernel vem com as partes referentes a segurana por firewall carregadas como
mdulos. Desta forma estes mdulos devero ser chamados por comando ou por script. Alguns
mdulos bsicos para o funcionamento do firewall so: ip_tables, mdulo bsico do iptables,
iptable_nat.

CONCLUSES E BIBLIOGRAFIA

Firewalls so hoje em dia ferramentas de segurana essenciais para proteger uma rede ou at mesmo
computadores domsticos, pois a cada dia surgem novas tcnicas de obstruir a segurana de sistemas.
E na questo dificuldade de utilizao e eficincia em segurana para Linux, o Netfilter/Iptables uma
boa escolha, pois com pequenos scripts podemos proteger um PC para navegar um pouco mais seguro

na Internet.

BIBLIOGRAFIA

Man Pages do iptables (man iptables);


Netfilter/Iptables project homepage - The netfilter/iptables project;
http://www.netfilter.org/ (http://www.netfilter.org/)
Acessado em 07 maio de 2005;
Firewall Linux - IPTABLES: Clube das Redes;
http://www.clubedasredes.eti.br/rede0023.htm (http://www.clubedasredes.eti.br/rede0023.htm)
Acessado em 07 maio de 2005;

! Voltar (verArtigo.php?codigo=3943)

Вам также может понравиться