Download - Tutorial sobre iptables
- 1. Sistemas informatizados Introduo ao iptables Marcelo Barros de Almeida [email_address]
2. Sumrio
- Caractersticas do iptables
3. Conceitos bsicos 4. Diagramas de tabelas e cadeias 5. Principais comandos 6. Principais filtros 7. Principais aes 8. Referncias 9. Iptables
- A implementao de filtro de pacotes nos kernels 2.4 e 2.6 realizado pelo iptables (projeto netfilter)
10. O iptables o programa capaz de gerenciar a configurao do netfilter 11. Principais caractersticas
- Filtragem sem considerar o estado do pacote
12. Filtragem considerando o estado do pacote 13. Suporte a NAT, tanto para endereos de rede ou portas 14. Flexvel, com suporte a plugins 15. Conceitos bsicos
- regras : so instrues dados para o firewall, indicando o que ele deve fazer.
16. cadeias : locais onde as regras podem ser agrupadas. As regras so processadas em ordem pelo firewall. 17. Toda cadeia tem uma poltica padro, definida pelo usurio. 18. A cadeia percorrida at uma regra ser atingida. As seguintes so ignoradas. 19. Regras com erro so ignoradas. 20. 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 21. Conceitos bsicos
- tabelas : o iptables organiza o seu fluxo de pacotes em tabelas, cada uma com um conjunto de cadeias pr-definidas:
- Tabelafilter : a tabela padro, com trs cadeias
- INPUT
22. OUTPUT 23. FORWARD Tabelanat : tabela usada para NAT (gera outras conexes)
- PREROUTING
24. OUTPUT 25. POSTROUTING 26. Conceitos bsicos
- Tabelas do iptables (continuao):
- Tabelamangle : permite alteraes nos pacotes (TOS, TTL, etc)
- PREROUTING
27. INPUT 28. FORWARD 29. OUTPUT 30. POSTROUTING Tabelaraw : marca pacotes para rastreio posterior 31. Organizao das tabelas do iptables
- Tabela filter e suas cadeias
PROCESSO LOCAL FORWARD INPUT OUTPUT
- Roteamento
- Roteamento
interface de sada interface de entrada 32. Organizao das tabelas do iptables
- Tabela nat e suas cadeias
PROCESSO LOCAL PREROUTING POSTROUTING OUTPUT
- Roteamento
- Roteamento
interface de entrada interface de sada 33. Organizao das tabelas do iptables
- Tabela mangle e suas cadeias
PROCESSO LOCAL FORWARD PREROUTING POSTROUTING INPUT OUTPUT
- Roteamento
- Roteamento
interface de entrada interface de sada 34. Organizao das tabelas do iptables
- Tabelas raw e suas cadeias
PROCESSO LOCAL PREROUTING POSTROUTING OUTPUT
- Roteamento
- Roteamento
interface de entrada interface de sada 35. Organizao das tabelas do iptables
- Tabelas filter, nat, mangle e raw e suas cadeias
PROCESSO LOCAL FORWARD PREROUTING POSTROUTING INPUT OUTPUT
- filter
36. mangle 37. nat (DNAT) 38. raw
- filter
39. mangle
- raw
40. mangle 41. nat (DNAT)
- mangle
42. nat (SNAT)
- Roteamento
- Roteamento
interface de entrada
- filter
43. mangle interface de sada 44. Salvando e restaurando regras no iptables
- Pode ser feito com um arquivo de script ou usando os comandos iptables-save e iptables-restore
45. iptables-[save|restore] executam a operao em um s passo, de maneira mais segura (sem brechas temporrias) e rpida. 46. Salvando:
- sudo iptables-save > arquivo_de_regras
Restaurando:
- sudo iptables-restore < arquivo_de_regras
possvel salvar os contadores com -c 47. 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. 48. 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
49. 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
50. 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
51. Principais filtros no iptables
- -p : 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
52. iptables -A INPUT -p ! tcp -j DROP -s : 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
53. iptables -A INPUT -s ! 10.1.1.0/24 -j DROP -d : especifica o endereo de destino (mesmas regras do -s)
- iptables -A OUTPUT -d uol.com.br -j ACCEPT
54. Principais filtros no iptables
- -i : 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
55. iptables -A INPUT -i ppp+ -j DROP-o : especifica a interface de sada. Vlida em OUTPUT, POSTROUTING e FORWARD. Usa as mesmas regras de -i.
- iptables -A OUTPUT -o ppp+ -j ACCEPT
56. Principais filtros no iptables
- --sport : 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
57. iptables -A INPUT -p tcp --sport 1:1023 -j REJECT 58. iptables -A INPUT -p tcp --sport 1024: -j ACCEPT --dport : especifica a porta de destino. Mesmas regras do --sport.
- iptables -A OUTPUT -p tcp --dport 23 -j DROP
59. Principais filtros no iptables(TCP, -ptcp necessrio)
- --tcp-flags : 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
60. 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
61. Principais filtros no iptables(icmp)
- Neste caso, precisa-se ter -p icmp antes
62. --icmp-type : 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
63. 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.
64. -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 : permite selecionar pacotes usando o seu tamanho como referncia. 65. -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. 66. -m mac --mac-source xx:xx:xx:xx:xx:xx: filtra por MACs 67. Isto s um amostra, existem muitas opes -m 68. 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
REJECT: rejeita o pacote, informando ao host de origem. Vlida em INPUT, OUTPUT e FORWARD.
- 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
69. iptables -A INPUT -p tcp --dport 23 -j DROP 70. 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
71. 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
72. # echo 1 > /proc/sys/net/ipv4/ip_forward firewall internet intranet eth1 eth0 73. 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 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
74. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 200.210.10.1-200.210.10.10:1024:32000 75. 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+fw :3128 intranet cliente Acesso a internet na porta 80 eth1 76. Principais aes no iptables(DNAT)
- DNAT: realiza o NAT, alterando o endereo de destino do pacote. Pode usar a opo --to-destination para especificar uma faixa de IPs (load balancing). Vlido somente em PREROUTE e OUTPUT, tabela nat.
77. 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
78. iptables -t nat -A POSTROUTING -p tcp -d 172.16.0.10 --dport 80 -j SNAT --to-source 172.16.0.1 79. 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 80. Principais aes no iptables (redirecionando cadeias)
- Caso voc tenha criado uma cadeia, pode usar o -j para redirecionar a filtragem para ela:
- -j
Ao terminar, caso nenhuma regra tenha sido acionada, o fluxo volta para quem redirecionou e o processamento continua. Caso contrrio, interrompido.
- iptables -N internet
81. 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 82. 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/