Você está na página 1de 28

Sistemas informatizados

Introduo ao iptables
Marcelo Barros de Almeida
marcelobarrosalmeida@gmail.com

Sumrio

Caractersticas do iptables

Conceitos bsicos

Diagramas de tabelas e cadeias

Principais comandos

Principais filtros

Principais aes

Referncias

Iptables

A implementao de filtro de pacotes nos kernels 2.4 e 2.6


realizado pelo iptables (projeto netfilter)
O iptables o programa capaz de gerenciar a
configurao do netfilter
Principais caractersticas

Filtragem sem considerar o estado do pacote

Filtragem considerando o estado do pacote

Suporte a NAT, tanto para endereos de rede ou portas

Flexvel, com suporte a plugins

Conceitos bsicos

Analise a cadeia

regras: so instrues dados para o


firewall, indicando o que ele deve fazer.
cadeias: locais onde as regras podem ser
agrupadas. As regras so processadas
em ordem pelo firewall.
Toda cadeia tem uma poltica padro,
definida pelo usurio.
A cadeia percorrida at uma regra ser
atingida. As seguintes so ignoradas.
Regras com erro so ignoradas.
Se nenhuma regra atingida, usa-se a
regra da poltica padro.

Regra 1
Regra 2

Regra
atingida

Regra 3

...
Regra n
Cadeia

Nenhuma regra atingida.


Usa a poltica da cadeia

Conceitos bsicos

tabelas: o iptables organiza o seu fluxo de pacotes em


tabelas, cada uma com um conjunto de cadeias prdefinidas:

Tabela filter: a tabela padro, com trs cadeias


INPUT
OUTPUT
FORWARD
Tabela nat: tabela usada para NAT (gera outras conexes)

PREROUTING
OUTPUT
POSTROUTING

Conceitos bsicos

Tabelas do iptables (continuao):

Tabela mangle: permite alteraes nos pacotes (TOS, TTL, etc)


PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
Tabela raw: marca pacotes para rastreio posterior

Organizao das tabelas do iptables

Tabela filter e suas cadeias

Roteamento

Roteamento

FORWARD
interface
de entrada

interface
de sada

INPUT

OUTPUT

PROCESSO LOCAL

Organizao das tabelas do iptables

Tabela nat e suas cadeias

Roteamento

Roteamento

PREROUTING

POSTROUTING

interface
de entrada

interface
de sada

OUTPUT

PROCESSO LOCAL

Organizao das tabelas do iptables

Tabela mangle e suas cadeias

Roteamento

PREROUTING

Roteamento

FORWARD

POSTROUTING

interface
de entrada

interface
de sada

INPUT

OUTPUT

PROCESSO LOCAL

Organizao das tabelas do iptables

Tabelas raw e suas cadeias

Roteamento

Roteamento

PREROUTING

POSTROUTING

interface
de entrada

interface
de sada

OUTPUT

PROCESSO LOCAL

Organizao das tabelas do iptables

Tabelas filter, nat, mangle e raw e suas cadeias


raw
mangle
nat (DNAT)

filter
mangle

mangle
nat (SNAT)

Roteamento

PREROUTING

Roteamento

FORWARD

POSTROUTING

interface
de entrada

interface
de sada

filter
mangle
nat (DNAT)
raw

INPUT

filter
mangle

PROCESSO LOCAL

OUTPUT

Salvando e restaurando regras no iptables

Pode ser feito com um arquivo de script ou usando os


comandos iptables-save e iptables-restore
iptables-[save|restore] executam a operao em um s
passo, de maneira mais segura (sem brechas
temporrias) e rpida.
Salvando:

Restaurando:

sudo iptables-save > arquivo_de_regras


sudo iptables-restore < arquivo_de_regras

possvel salvar os contadores com -c

Formato geral das regras do iptables

iptables [-t table] comando [filtro] [-j ao]


Ao a ser tomada.
Por exemplo, DROP,
ACCEPT, pular para
outra cadeia, etc.
Especifique a tabela
que deseja usar. A
tabela filter a
tabela default.
O que ser feito:
adicionar uma regra,
remover, etc. Deve
vir no incio.

Detalhamento que
ir permitir a
filtragem do pacote.
IPs de origem, taxas,
portas, etc.

Principais comandos de manipulao de


cadeias no iptables

Sempre maisculo seguido do nome da cadeia:

-P: configura a poltica padro da cadeia (DROP ou ACCEPT)

iptables -P OUTPUT ACCEPT

-N: cria uma nova cadeia

iptables -N internet
-F: apaga as regras da cadeia

iptables -F INPUT
-X: apaga uma cadeia vazia

iptables -F internet; iptables -X internet


-Z: zera todos os contadores da cadeia

iptables -Z INPUT

Principais comandos de manipulao de


cadeias no iptables

-A: adicionar uma regra no final da cadeia

iptables -A INPUT --dport 80 -j DROP


-L: listar regras da cadeia (adicione -n para no resolver nomes e
--line-numbers para ver o nmero das regras)

iptables -L -n --line-number
-D: apagar uma regra da cadeia. Pode usar tambm a linha

iptables -D INPUT --dport 80 -j DROP


iptables -D INPUT 5
-R: trocar uma regra por outra

iptables -R INPUT 2 -s 10.0.1.2 -j DROP


-I: insere uma regra em um ponto especfico da cadeia

iptables -I INPUT 1 --dport 80 -j DROP

Principais filtros no iptables

-p <protocolo>: especifica o protocolo. Por exemplo, udp, tcp ou icmp.


Pode ser negado tambm. Para tudo menos tcp, faa: com -p ! tcp

iptables -A INPUT -p icmp -j DROP

iptables -A INPUT -p ! tcp -j DROP

-s <endereo>: especifica o endereo de origem. Aceita IPs, redes,


IP/mscara, IP/nn (notao CIDR) e tambm a negao com !.

iptables -A INPUT -s 10.1.1.1 -j ACCEPT

iptables -A INPUT -s ! 10.1.1.0/24 -j DROP

-d <endereo>: especifica o endereo de destino (mesmas regras do -s)

iptables -A OUTPUT -d uol.com.br -j ACCEPT

Principais filtros no iptables

-i <interface>: especifica a interface de entrada do pacote. Use ! para


negar e + como curinga. -i eth+ significa todas as interfaces eth. Vlida
em INPUT, PREROUTING e FORWARD.

iptables -A INPUT -i eth0 -j ACCEPT

iptables -A INPUT -i ppp+ -j DROP

-o <interfaces>: especifica a interface de sada. Vlida em OUTPUT,


POSTROUTING e FORWARD. Usa as mesmas regras de -i.

iptables -A OUTPUT -o ppp+ -j ACCEPT

Principais filtros no iptables

--sport <porta>: especifica a porta de origem. Pode ser dado em forma de


faixa tambm, como em --sport 80:123 ou mesmo --sport 1023: (todas
acima de 1023). Precisa ter tcp ou udp especificado como protocolo.

iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p tcp --sport 1:1023 -j REJECT

iptables -A INPUT -p tcp --sport 1024: -j ACCEPT

--dport <porta>: especifica a porta de destino. Mesmas regras do --sport.

iptables -A OUTPUT -p tcp --dport 23 -j DROP

Principais filtros no iptables


(TCP, -p tcp necessrio)

--tcp-flags <mscara> <set>: Permite casar por flags do TCP. Primeiro se


diz quais sero examinados, depois os que devem estar setados. Flags:
SYN, ACK, URG, FIN, RST e PSH. ALL e NONE tambm pode ser usados
para simplificar a seleo dos flags

iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK SYN -j DROP

iptables -A INPUT -p tcp --tcp-flags ! SYN,FIN,ACK SYN -j DROP

--syn: Uma abreviao para selecionar pacotes que estejam relacionados


com um processo de abertura de conexo. Poderia ser escrito tambm
como: --tcp-flags SYN,RST,ACK SYN

iptables -A INPUT -p tcp --syn -j DROP

Principais filtros no iptables


(icmp)

Neste caso, precisa-se ter -p icmp antes


--icmp-type <tipo>: filtra por tipo de pacotes ICMP. Por exemplo, 8 o
ping, mas echo-request poderia ser usado. Veja a lista completa com
iptables -p icmp help

iptables -A INPUT -p icmp icmp-type echo-request -j ACCEPT

Principais filtros no iptables


(filtros explcitos)

Existem opes de filtragem que exigem a opo -m, em geral opes


mais avanadas ou relacionadas a plugins. A lista enorme.
-m iprange: permite especificar faixas de IPs para origem (--src-range) e
destino (--dst-range)

-m iprange --src-range 10.0.0.1-10.0.0.20

-m length --length <min:max>: permite selecionar pacotes usando o seu


tamanho como referncia.
-m limit: limita quantas vezes uma regra pode ser casada dentro de um
intervalo de tempo. Por exemplo, -m limit --limit 3/s ou -m --limit
1000/hour. possvel especificar limites de rajadas junto com--limit-burst.
Por exemplo -m limit --limit 5/s --limit-burst 10.

-m mac --mac-source xx:xx:xx:xx:xx:xx: filtra por MACs

Isto s um amostra, existem muitas opes -m

Principais aes no iptables

ACCEPT: aceita o pacote

DROP: descarta o pacote

iptables -A INPUT -p tcp --dport 23 -j DROP

REJECT: rejeita o pacote, informando ao host de origem. Vlida em


INPUT, OUTPUT e FORWARD.

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 23 -j REJECT

LOG: coloca no log informaes sobre o pacote. Uma opo interessante


o --log-prefix mensagem, que permite a adio de um prefixo. O log
no interrompe o processamento, fique atento.

iptables -A INPUT -p tcp --dport 23 -j LOG --log-prefix Tentativa de


telnet
iptables -A INPUT -p tcp --dport 23 -j DROP

Principais aes no iptables


(MASQUERADE)

MASQUERADE: realiza o NAT, alterando o endereo de origem. Similar


ao SNAT, mas sem opes de endereo de sada. Vlido em
POSTROUTING somente, tabela nat. Muito usado para implementar as
regras de NAT do firewall.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE

No esquea de habilitar o forwarding, colocando 1 em em


/proc/sys/net/ipv4/ip_forward, usando uma das formas abaixo:

$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

# echo 1 > /proc/sys/net/ipv4/ip_forward


firewall
internet

intranet
eth0

eth1

Principais aes no iptables


(SNAT)

SNAT: realiza o NAT, alterando o endereo de origem do pacote. Vlido


em POSTROUTING, da tabela nat. Pode usar a opo --to-source <IPaIPb> para especificar uma faixa de IPs.

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source


200.210.10.1-200.210.10.10
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source
200.210.10.1-200.210.10.10:1024:32000

Principais aes no iptables


(REDIRECT)

REDIRECT: permite o redirecionamento de portas. Possui a opo --toports para especificar a nova portas (ou uma faixa delas). Vlida em
PREROUTING e OUTPUT, da tabela nat. til para proxy transparentes,
por exemplo.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT


--to--ports 3128

Na configurao do squid, use a seguinte linha:

http_port 3128 transparent

proxy+fw
:3128

cliente
intranet
eth1

Acesso a
internet na
porta 80

Principais aes no iptables


(DNAT)

DNAT: realiza o NAT, alterando o endereo de destino do pacote. Pode


usar a opo --to-destination <IPa-IPb> para especificar uma faixa de IPs
(load balancing). Vlido somente em PREROUTE e OUTPUT, tabela nat.
Caso de uso tpico para criao de virtual servers, onde preciso regras
para quem vem de fora, para mquina na intranet e para o prprio firewall.

iptables -t nat -A PREROUTING -p tcp -d 65.10.20.31 --dport 80 -j


DNAT --to-destination 172.16.0.10
iptables -t nat -A POSTROUTING -p tcp -d 172.16.0.10 --dport 80 -j
SNAT --to-source 172.16.0.1
iptables -t nat -A OUTPUT -p tcp -d 65.10.20.31 --dport 80 -j DNAT --todestination 172.16.0.10
firewall
internet

cliente

intranet
65.10.20.31

200.210.1.2

172.16.0.1
172.16.0.10

WWW

Principais aes no iptables


(redirecionando cadeias)

Caso voc tenha criado uma cadeia, pode usar o -j para redirecionar a
filtragem para ela:

-j <nome_da_cadeia>

Ao terminar, caso nenhuma regra tenha sido acionada, o fluxo volta para
quem redirecionou e o processamento continua. Caso contrrio,
interrompido.

iptables -N internet

iptables -A INPUT -p tcp --dport 80 -j internet


INPUT

internet
Regra 1

Regra 1

-j internet

Regra 2

Regra 3

Regra 3

...
Regra n

Regra no
atingida: aplica
poltica padro da
cadeia e retorna
se possvel

...
Regra m

Referncias

O iptables tutorial, do Oscar Andreasson, imperdvel:

O guia foca Linux, como sempre:

http://www.frozentux.net/documents/iptables-tutorial/

http://focalinux.cipsga.org.br/guia/avancado/ch-fw-iptables.html

A pgina do projeto netfilter (com alguns docs em PT_BR):

http://www.netfilter.org/documentation/

Você também pode gostar