Tutorial sobre iptables

download Tutorial sobre iptables

If you can't read please download the document

description

Tutorial sobre iptables, descrevendo seu funcionamento e principais comandos.

Transcript of 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/