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
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 3
Regra n
...
Cadeia
...
Nenhuma regra
atingida.
Usa a poltica da
cadeia
Regra
atingida
Analise a
cadeia
Conceitos bsicos
tabelas: o iptables organiza o seu fluxo de pacotes em
tabelas, cada uma com um conjunto de cadeias pr-
definidas:
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
PROCESSO LOCAL
FORWAR
D
INPUT OUTPUT
Roteament
o
Roteament
o
interface
de sada
Tabela filter e suas cadeias
interface
de entrada
Organizao das tabelas do iptables
Tabela nat e suas cadeias
PROCESSO LOCAL
PREROUTIN
G
POSTROUTIN
G
OUTPUT
Roteament
o
Roteament
o
interface
de entrada
interface
de sada
Organizao das tabelas do iptables
PROCESSO LOCAL
FORWAR
D
PREROUTIN
G
POSTROUTIN
G
INPUT OUTPUT
Roteament
o
Roteament
o
interface
de entrada
interface
de sada
Tabela mangle e suas cadeias
Organizao das tabelas do iptables
PROCESSO LOCAL
PREROUTIN
G
POSTROUTIN
G
OUTPUT
Roteament
o
Roteament
o
interface
de entrada
interface
de sada
Tabelas raw e suas cadeias
Organizao das tabelas do iptables
PROCESSO LOCAL
FORWAR
D
PREROUTIN
G
POSTROUTIN
G
INPUT OUTPUT
filter
mangle
nat (DNAT)
raw
filter
mangle
raw
mangle
nat
(DNAT)

mangle
nat
(SNAT)
Roteament
o
Roteament
o
interface
de entrada
filter
mangle
interface
de sada
Tabelas filter, nat, mangle e raw e suas cadeias
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:
sudo iptables-save > arquivo_de_regras
Restaurando:
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]
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.
Ao a ser tomada.
Por exemplo, DROP,
ACCEPT, pular para
outra cadeia, 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 REJ ECT
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
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
DROP: descarta o pacote
iptables -A INPUT -p tcp --dport 23 -j DROP
REJ ECT: rejeita o pacote, informando ao host de origem. Vlida em
INPUT, OUTPUT e FORWARD.
iptables -A INPUT -p tcp --dport 23 -j REJ ECT
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
eth1 eth0
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 <IPa-
IPb> 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 --to-
ports 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+f
w
:3128 intranet
cliente
Acesso a
internet na
porta 80
eth1
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 --
to-destination 172.16.0.10

firewall
internet intranet
WWW cliente
200.210.1.2 172.16.0.10
172.16.0.1 65.10.20.31
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
Regra 1
-j internet
Regra 3
Regra n
...
INPUT
...
Regra 1
Regra 2
Regra 3
Regra m
...
internet
...
Regra no
atingida: aplica
poltica padro da
cadeia e retorna
se possvel
Referncias
O iptables tutorial, do Oscar Andreasson, imperdvel:
http://www.frozentux.net/documents/iptables-tutorial/
O guia foca Linux, como sempre:
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