Your SlideShare is downloading. ×
0
Firewall Iptables - Filter
Prof. Andrei Carniel
Universidade Tecnológica Federal do Paraná – UTFPR
E-mail: andreicarniel@u...
Firewall Iptables (1/4)
• O IPTables é uma versão robusta, completa e tão estável quanto seus
antecessores IPFWADM e IPCHA...
Firewall Iptables (2/4)
• Surgiu com o objetivo de proteger as máquinas de acessos ou tráfego
indesejado.
• Proteger servi...
Firewall Iptables (3/4)
• Pode ser usado para:
▫ Monitorar e/ou modificar tráfego de rede, efetuar NAT (masquerading,
sour...
Firewall Iptables (4/4)
• Não funciona de forma automática, ou seja, somente instalar e esperar
que ele faça o resto.
• É ...
Filter
6
Chains – Lista de regras
• Basicamente para filtragem de pacotes existem basicamente três tipos
de chains, são elas:
▫ INP...
Chains – Lista de regras
• Para verificar as regras em nas CHAINS, digite:
▫ # iptables -L
• O resultado deve ser algo com...
Chains – Lista de regras
• Note que não existem regras em qualquer das CHAINS, mas o policy
padrão é ACCEPT, ou seja, acei...
Manipulando Chains
• O Iptables trabalha com uma tabela de regras que é analisada uma a
uma até que a última seja processa...
Manipulando Chains
Principais comandos para inclusão e exclusão de chains!
11
Manipulando Chains
• Sintaxe padrão:
▫ #iptables -[COMANDO] [CHAIN] [TARGET]
• Exemplo:
▫ #iptables –P INPUT DROP
• Todos ...
Manipulando Chains – Inclusão e Exclusão (1/5)
• -P --> Policy (política). Altera a política da chain. A política
inicial ...
Manipulando Chains – Inclusão e Exclusão (2/5)
• -A --> Append (anexar). Acresce uma nova regra à chain.
• Tem prioridade ...
Manipulando Chains – Inclusão e Exclusão (3/5)
• -D --> Delete (apagar). Apaga uma regra.
• A regra deve ser escrita novam...
Manipulando Chains – Inclusão e Exclusão (4/5)
• Também é possível apagar a regra pelo seu número de ordem.
• Pode-se util...
Manipulando Chains – Inclusão e Exclusão (5/5)
• -L --> List (listar). Lista as regras existentes. Exemplos:
▫ #iptables -...
Manipulando Chains – Inclusão e Exclusão (6/6)
• -I --> Insert(inserir). Insere uma nova regra no início da
lista. Exemplo...
Manipulando Chains
Principais comando para manipulação de
origem e destino!
19
Manipulando Chains – Origem e Destino (1/4)
• -s --> Source (origem). Estabelece a origem do pacote.
• Geralmente é uma co...
Manipulando Chains – Origem e Destino (2/4)
• Agora vimos o host 172.20.5.10. Ainda no caso de hosts, a máscara
pode ser o...
Manipulando Chains – Origem e Destino (3/4)
• Outra possibilidade é a designação de hosts pelo nome. Exemplo:
▫ #-s www.ch...
Manipulando Chains – Origem e Destino (4/4)
• -d --> Destination (destino). Estabelece o destino do
pacote.
• Funciona exa...
Manipulando Chains – Protocolos
• -p --> Protocol (protocolo). Especifica o protocolo a ser
filtrado.
• O protocolo IP pod...
Manipulando Chains – Interface de Rede (1/3)
• -i --> In-Interface (interface de entrada). Especifica a
interface de entra...
Manipulando Chains – Interface de Rede (2/3)
• O sinal + pode ser utilizado para simbolizar várias interfaces.
• Exemplo:
...
Manipulando Chains – Interface de Rede (3/3)
• -o --> Out-Interface (interface de saída). Especifica a
interface de saída....
Manipulando Chains – Portas (1/2)
• --sport --> Source Port. Porta de origem.
• Só funciona com as opções -p udp e -p tcp....
Manipulando Chains – Portas (2/2)
• --dport --> Destination Port. Porta de destino.
• Só funciona com as opções -p udp e -...
Manipulando Chains – Exclusão (1/2)
• ! --> Exclusão. Utilizado com -s, -d, -p, -i, -o e outros,
para excluir o argumento....
Manipulando Chains – Exclusão (2/2)
• Exemplos:
▫ #iptables -A INPUT ! -s 200.200.200.10 -p tcp -j DROP
• Diz para rejeita...
Manipulando Chains
• O alvo (-j) é o destino que um pacote terá quando conferir com as
condições de uma regra.
32
Manipulando Chains – Jump Target
• Isto especifica o alvo da regra, isto é, o que fazer se o pacote
corresponde a ele.
• O...
Manipulando Chains – Jump Target
• ACCEPT --> Aceitar. Permite a passagem do pacote normalmente.
• DROP --> Abandonar. Não...
Manipulando Chains – Jump Target
• Caso seja necessário criar uma regra onde seja efetuado o LOG de um
determinado pacote ...
Manipulando Chains
• Manipulação de pacotes para iniciar conexão (pacotes syn).
36
Manipulando Chains – Pacotes SYN
• Pacotes syn são usados para iniciarem uma conexão.
• O uso da opção --syn serve para es...
Lógica de Regras
• Funcionamento das regras.
38
Lógica das Regras (1/5)
• Observe os próximos exemplos:
• Exemplo A:
▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACCEPT
▫...
Lógica das Regras (2/5)
• Exemplo B:
▫ #iptables -A INPUT -p ICMP -j DROP
▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACC...
Lógica das Regras (3/5)
• Impasses e ordem de processamento
• Se houver impasse entre regras, sempre valerá a primeira. As...
Lógica das Regras (4/5)
• Impasses e ordem de processamento
• Já entre as regras:
▫ #iptables -A FORWARD -p icmp -j ACCEPT...
Lógica das Regras (5/5)
• Essas situações ocorrem porque as regras são processadas na ordem
em que aparecem.
• Depois do p...
Regras Comentadas
• Exemplo de funcionamento das regras.
44
Regras comentadas (1/6)
• Regras:
▫ #iptables -L
• Lista todas as regras existentes.
▫ #iptables -F
• Apaga todas as regra...
Regras comentadas (2/6)
▫ #iptables -A FORWARD -j DROP
• Todos os pacotes oriundos de qualquer sub-rede e destinados a
qua...
Regras comentadas (3/6)
▫ #iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j
REJECT
• Os pacotes oriundos da sub-red...
Regras comentadas (4/6)
▫ #iptables -A FORWARD -d 10.0.0.0/8 -s www.chat.com.br -j
DROP
• Os pacotes destinados à sub-rede...
Regras comentadas (5/6)
▫ #iptables -A FORWARD -s 10.0.0.5 -p icmp -j DROP
• Os pacotes icmp oriundos do host 10.0.0.5 e d...
Regras comentadas (6/6)
▫ #iptables -A FORWARD -s 10.0.0.5 -p tcp --sport 80 -j
LOG
• O tráfego de pacotes TCP oriundos da...
Dúvidas?
51
Exercícios
• Responda os exercícios assumindo que sua máquina irá assumir a
posição do host informado no exercício.
52
Exercícios
• Responda os exercícios de acordo com a seguinte topologia:
53
Exercícios
• 1 - Algumas regras para o roteador “R”:
a) Não permita que a rede 192.168/16 envie pings para o servidor “S”....
Exercícios
• 2 - Algumas regras para o servidor “S”:
a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e ope...
Exercícios
• 3 - Algumas regras para a máquina “A”:
a) Só será permitido resolver DNS pelo servidor “S”.
b) A única página...
Respostas
57
Exercício 1
• 1 - Algumas regras para o roteador “R”:
a) Não permita que a rede 192.168/16 envie pings para o servidor “S”...
Exercício 2
• 2 - Algumas regras para o servidor “S”:
a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e op...
Exercício 3
• 3 - Algumas regras para a máquina “A”:
a) Só será permitido resolver DNS pelo servidor “S”.
 (policy = ACCE...
Outras Dúvidas?
61
Firewall Iptables - Filter
Prof. Andrei Carniel
Universidade Tecnológica Federal do Paraná – UTFPR
E-mail: andreicarniel@u...
Upcoming SlideShare
Loading in...5
×

Aula 8.1 - Iptables tabela Filter

845

Published on

Descrição básica sobre IPTables e a tabela Filter, para gerenciamento de pacotes.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
845
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
84
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Aula 8.1 - Iptables tabela Filter"

  1. 1. Firewall Iptables - Filter Prof. Andrei Carniel Universidade Tecnológica Federal do Paraná – UTFPR E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com
  2. 2. Firewall Iptables (1/4) • O IPTables é uma versão robusta, completa e tão estável quanto seus antecessores IPFWADM e IPCHAINS, implementados nos Kernels Linux 2.0 e 2.2 respectivamente. • IPTables é um firewall muito conhecido na comunidade Linux que foi incorporado ao mesmo em 1999. • Principais características:  Filtro de Pacotes (Foco dessa aula)  NAT  QoS sobre tráfego  Redirecionamento de endereços e portas  Detecção de fragmentos  Bloqueio de ataques  Entre outros. 2
  3. 3. Firewall Iptables (2/4) • Surgiu com o objetivo de proteger as máquinas de acessos ou tráfego indesejado. • Proteger serviços que estejam rodando na máquina. • Bloquear a passagem de algo que não deseja receber (por exemplo: conexões vindas da Internet). • Foi introduzido no kernel 2.4 do Linux. • É um firewall em nível de pacotes, com funcionamento baseado em endereço e porta de origem/destino, prioridade, entre outros. • Seu funcionamento é baseado na comparação de regras para saber se um pacote pode ou não passar. 3
  4. 4. Firewall Iptables (3/4) • Pode ser usado para: ▫ Monitorar e/ou modificar tráfego de rede, efetuar NAT (masquerading, source NAT, destination NAT); ▫ Redirecionamento de pacotes; ▫ Marcação de pacotes; ▫ Modificação de prioridade dos pacotes de entrada/saída; ▫ Contagem de bytes; ▫ Divisão de tráfego; ▫ Proteção anti-spoofing (pacotes com IP falsificado); ▫ Proteção contra syn flood (forma de negação de serviço); ▫ Proteção contra DoS (forma de negação de serviço); ▫ Etc. 4
  5. 5. Firewall Iptables (4/4) • Não funciona de forma automática, ou seja, somente instalar e esperar que ele faça o resto. • É necessário pelo menos conhecimentos básicos em redes TCP/IP e roteamento e portas. • Esses conhecimentos são necessários para criar regras de segurança. • Lembre-se: ▫ A segurança do sistema depende do conjunto de regras que serão criados por você; ▫ 95% das invasões de sucesso são devido a falhas humanas na configuração; • Trabalharemos principalmente com a função Filtro de Pacotes que é a mais utilizada no IPTables, bloqueando e permitindo serviços em uma rede. 5
  6. 6. Filter 6
  7. 7. Chains – Lista de regras • Basicamente para filtragem de pacotes existem basicamente três tipos de chains, são elas: ▫ INPUT --> Refere-se a todos os pacotes destinados à máquina filtro. ▫ OUTPUT --> Refere-se a todos os pacotes gerados na máquina filtro. ▫ FORWARD --> Refere-se a todos os pacotes oriundos de uma máquina e destinados a outra. São pacotes que atravessam a máquina filtro, mas não são destinados a ela. 7
  8. 8. Chains – Lista de regras • Para verificar as regras em nas CHAINS, digite: ▫ # iptables -L • O resultado deve ser algo como: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 8
  9. 9. Chains – Lista de regras • Note que não existem regras em qualquer das CHAINS, mas o policy padrão é ACCEPT, ou seja, aceite qualquer pacote de qualquer origem/destino. • Outra observação importante aqui é que o comando acima nos mostrou a as 3 tabelas disponíveis. • Sempre que formos inserir uma nova regra podemos utilizar a opção -t filter para especificar a tabela, mas essa opção não é obrigatória. 9
  10. 10. Manipulando Chains • O Iptables trabalha com uma tabela de regras que é analisada uma a uma até que a última seja processada. • Por padrão, se uma regra tiver qualquer erro, uma mensagem será mostrada e ela descartada. • O pacote não conferirá e a ação final (se ele vai ser aceito ou rejeitado) dependerá das regras seguintes. • Agora que sabemos a existência das três CHAINS, devemos usar comandos para adicionar regras: 10
  11. 11. Manipulando Chains Principais comandos para inclusão e exclusão de chains! 11
  12. 12. Manipulando Chains • Sintaxe padrão: ▫ #iptables -[COMANDO] [CHAIN] [TARGET] • Exemplo: ▫ #iptables –P INPUT DROP • Todos os pacotes por default serão rejeitados. 12
  13. 13. Manipulando Chains – Inclusão e Exclusão (1/5) • -P --> Policy (política). Altera a política da chain. A política inicial de cada chain é ACCEPT. • Isso faz com que o filtro, inicialmente, aceite qualquer INPUT, OUTPUT ou FORWARD. • A política pode ser alterada para DROP, que irá negar o serviço da chain, até que uma opção -A entre em vigor. • O -P não aceita REJECT ou LOG. Exemplos: ▫ #iptables -P FORWARD DROP ▫ #iptables -P INPUT ACCEPT 13
  14. 14. Manipulando Chains – Inclusão e Exclusão (2/5) • -A --> Append (anexar). Acresce uma nova regra à chain. • Tem prioridade sobre o -P. • Geralmente, como buscamos segurança máxima, colocamos todas as chains em política DROP, com o -P e, depois, abrimos o que é necessário com o -A. • Exemplos: ▫ #iptables -A OUTPUT -d 172.20.5.10 -j ACCEPT ▫ #iptables -A FORWARD -s 10.0.0.1 -j DROP ▫ #iptables -A FORWARD -d www.chat.com.br -j DROP 14
  15. 15. Manipulando Chains – Inclusão e Exclusão (3/5) • -D --> Delete (apagar). Apaga uma regra. • A regra deve ser escrita novamente, trocando-se a opção para -D. Exemplos: • Para apagar as regras anteriores, usa-se: ▫ #iptables -D OUTPUT -d 172.20.5.10 -j ACCEPT ▫ #iptables -D FORWARD -s 10.0.0.1 -j DROP ▫ #iptables -D FORWARD -d www.chat.com.br -j DROP 15
  16. 16. Manipulando Chains – Inclusão e Exclusão (4/5) • Também é possível apagar a regra pelo seu número de ordem. • Pode-se utilizar o -L para verificar o número de ordem. • Verificado esse número, basta citar a chain e o número de ordem. Exemplo: ▫ #iptables -D FORWARD 4 • Isso deleta a regra número 4 da chain FORWARD. 16
  17. 17. Manipulando Chains – Inclusão e Exclusão (5/5) • -L --> List (listar). Lista as regras existentes. Exemplos: ▫ #iptables -L ▫ #iptables -L FORWARD (Lista apenas da Chain FORWARD) • -F --> Flush (esvaziar). Remove todas as regras existentes. No entanto, não altera a política (-P). Exemplos: ▫ #iptables -F ▫ #iptables -F FORWARD (Remove apenas regras da Chain FORWARD) 17
  18. 18. Manipulando Chains – Inclusão e Exclusão (6/6) • -I --> Insert(inserir). Insere uma nova regra no início da lista. Exemplos: ▫ #iptables –I OUTPUT –d 200.200.2 –j ACCEPT • -N --> New(nova). Adiciona uma nova chain. ▫ #iptables -N internet • Para adicionar uma regra na chain: ▫ #iptables -A internet -d 127.0.0.1 -j DROP • Para deletar uma chain: ▫ #iptables -X internet 18
  19. 19. Manipulando Chains Principais comando para manipulação de origem e destino! 19
  20. 20. Manipulando Chains – Origem e Destino (1/4) • -s --> Source (origem). Estabelece a origem do pacote. • Geralmente é uma combinação do endereço IP com a máscara de sub- rede, separados por uma barra. Exemplo: ▫ #-s 172.20.0.0/255.255.0.0 • No caso, vimos a sub-rede 172.20.0.0. Para hosts, a máscara sempre será 255.255.255.255. Exemplo: ▫ #-s 172.20.5.10/255.255.255.255 20
  21. 21. Manipulando Chains – Origem e Destino (2/4) • Agora vimos o host 172.20.5.10. Ainda no caso de hosts, a máscara pode ser omitida. • Caso isso ocorra, o Iptables considera a máscara como 255.255.255.255. Exemplo: ▫ #-s 172.20.5.10 • Isso corresponde ao host 172.20.5.10. Há um recurso para simplificar a utilização da máscara de sub-rede. • Basta utilizar a quantidade de bits 1 existentes na máscara. Assim, a máscara 255.255.0.0 vira 16. A utilização fica assim: ▫ #-s 172.20.0.0/16 21
  22. 22. Manipulando Chains – Origem e Destino (3/4) • Outra possibilidade é a designação de hosts pelo nome. Exemplo: ▫ #-s www.chat.com.br • Para especificar qualquer origem, utilize a rota default, ou seja, 0.0.0.0/0.0.0.0, também admitindo 0/0. • Exemplo Geral: ▫ #iptables -A INPUT -s 200.200.200.0/24 -j DROP • Bloqueia o tráfego vindo da rede 200.200.200.*. 22
  23. 23. Manipulando Chains – Origem e Destino (4/4) • -d --> Destination (destino). Estabelece o destino do pacote. • Funciona exatamente como o -s, incluindo a sintaxe. • Exemplo Geral: ▫ #iptables -A OUTPUT -d 10.1.2.3 -j DROP • Bloqueia conexões com o destino 10.1.2.3: 23
  24. 24. Manipulando Chains – Protocolos • -p --> Protocol (protocolo). Especifica o protocolo a ser filtrado. • O protocolo IP pode ser especificado pelo seu número (vide /etc/protocols) ou pelo nome. Os protocolos mais utilizados são udp, tcp e icmp. Exemplo: ▫ #-p icmp • Exemplo: ▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp -j DROP • Bloqueia qualquer pacote com destino para 200.200.200.20 via protocolo TCP. 24
  25. 25. Manipulando Chains – Interface de Rede (1/3) • -i --> In-Interface (interface de entrada). Especifica a interface de entrada. • As interfaces existentes podem ser vistas com o comando #ifconfig. • Exemplo: ▫ #-i ppp0 • O -i não pode ser utilizado com a chain OUTPUT. 25
  26. 26. Manipulando Chains – Interface de Rede (2/3) • O sinal + pode ser utilizado para simbolizar várias interfaces. • Exemplo: ▫ #-i eth+ • eth+ refere-se à eth0, eth1, eth2 e etc. • Exemplo geral: ▫ #iptables -A FORWARD -i eth0 -j ACCEPT • Os pacotes que entrarem pela interface eth0 serão aceitos. 26
  27. 27. Manipulando Chains – Interface de Rede (3/3) • -o --> Out-Interface (interface de saída). Especifica a interface de saída. • Similar a -i, inclusive nas flexibilidades. • O -o não pode ser utilizado com a chain INPUT. • Exemplo: ▫ #iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE • Todos os pacotes que saírem pela interface ppp0 (modem) serão mascarados. Isso dá um nível de segurança elevado à rede que está atrás da ppp0. É uma boa regra para navegação na Internet. 27
  28. 28. Manipulando Chains – Portas (1/2) • --sport --> Source Port. Porta de origem. • Só funciona com as opções -p udp e -p tcp. Exemplo: ▫ #-p tcp --sport 80 • Refere-se à porta 80 sobre protocolo TCP. • Exemplo: ▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp --sport 100:1023 -j DROP • Bloqueia qualquer pacote com destino a 200.200.200.20, que utiliza protocolo TCP e se originou na faixa de portas 100 a 1023. 28
  29. 29. Manipulando Chains – Portas (2/2) • --dport --> Destination Port. Porta de destino. • Só funciona com as opções -p udp e -p tcp. • Similar a --sport. • Exemplo: ▫ #iptables -A OUTPUT -d 200.200.200.20 -p tcp --dport 100:1023 -j DROP • Bloqueia qualquer pacote com destino a 200.200.200.20, que utiliza protocolo TCP e tem como destino qualquer porta da faixa de 100 a 1023. 29
  30. 30. Manipulando Chains – Exclusão (1/2) • ! --> Exclusão. Utilizado com -s, -d, -p, -i, -o e outros, para excluir o argumento. • Funciona para muitos parâmetros, como o endereço de origem/destino, protocolo, porta, mensagens ICMP, fragmentos, etc... podem ser precedidos pelo sinal “!” que significa exceção • Exemplo: ▫ #-s ! 10.0.0.1 • Isso refere-se a qualquer endereço de entrada, exceto o 10.0.0.1. ▫ #-p ! tcp • Todos os protocolos, exceto o TCP. 30
  31. 31. Manipulando Chains – Exclusão (2/2) • Exemplos: ▫ #iptables -A INPUT ! -s 200.200.200.10 -p tcp -j DROP • Diz para rejeitar todos os pacotes EXCETO os que vem do endereço 200.200.200.10 . ▫ #iptables -A INPUT -s 200.200.200.10 ! -p tcp -j DROP • Bloqueia todos os pacotes vindos de 200.200.200.10, EXCETO os do protocolo TCP. 31
  32. 32. Manipulando Chains • O alvo (-j) é o destino que um pacote terá quando conferir com as condições de uma regra. 32
  33. 33. Manipulando Chains – Jump Target • Isto especifica o alvo da regra, isto é, o que fazer se o pacote corresponde a ele. • O alvo pode ser uma cadeia definida pelo usuário, um dos alvos embutidos especiais, que decidem o destino do pacote imediatamente, ou uma extensão. • Se esta opção for omitido em regra, a regra não é usada, então a regra de correspondência não irá ter qualquer efeito sobre o destino do pacote, mas os contadores na regra será incrementado. 33
  34. 34. Manipulando Chains – Jump Target • ACCEPT --> Aceitar. Permite a passagem do pacote normalmente. • DROP --> Abandonar. Não permite a passagem do pacote, ele será descartado. Não avisa a origem sobre o ocorrido. • REJECT --> Igual ao DROP, mas avisa a origem sobre o ocorrido (envia pacote icmp unreachable). • LOG --> Cria um log referente à regra, em /var/log/messages. Usar antes de outras ações¹. ¹ : LOG é uma extensão não terminal, ou seja, mesmo que seja validado em uma regra ele continuará a ser avaliado pelas regras subsequentes. Portanto se quiser descartar o pacote terá que criar uma mesma regra mas com a target DROP ou REJECT, ou colocar a política default como DROP. 34
  35. 35. Manipulando Chains – Jump Target • Caso seja necessário criar uma regra onde seja efetuado o LOG de um determinado pacote e logo após a exclusão dele, deve-se configurar da seguinte maneira: ▫ #iptables -A INPUT -s 200.200.200.1 -i eth0 -j LOG • Para registrar o bloqueio de pacotes vindos de 200.200.200.1 pela interface eth0. ▫ #iptables -A INPUT -s 200.200.200.1 -i eth0 -j REJECT • Para efetuar o bloqueio. Note que no exemplo anterior a regra que registra o pacote (-j LOG) deve aparecer antes da regra que REJEITA (-j REJECT), caso contrário a regra nunca funcionará. 35
  36. 36. Manipulando Chains • Manipulação de pacotes para iniciar conexão (pacotes syn). 36
  37. 37. Manipulando Chains – Pacotes SYN • Pacotes syn são usados para iniciarem uma conexão. • O uso da opção --syn serve para especificar estes tipos de pacotes. Desta maneira é possível bloquear somente os pacotes que iniciam uma conexão, sem afetar os pacotes restantes. • Para que uma conexão ocorra é necessário que a máquina obtenha a resposta a pacotes syn enviados, caso ele seja bloqueado a resposta nunca será retornada e a conexão não será estabelecida. ▫ #iptables -A INPUT -p tcp --syn --dport 23 -i eth1 -j DROP • A regra acima bloqueia (-j DROP) qualquer tentativa de conexão (--syn) vindas da interface eth1 ao telnet (--dport 23) da máquina local. A opção --syn somente pode ser especificada para o protocolo TCP. 37
  38. 38. Lógica de Regras • Funcionamento das regras. 38
  39. 39. Lógica das Regras (1/5) • Observe os próximos exemplos: • Exemplo A: ▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACCEPT ▫ #iptables -A INPUT -p ICMP -j DROP • Podemos concluir o seguinte: • Exemplo A: todos os pings da máquina 10.0.0.10 serão aceitos, os outros pings serão deletados. 39
  40. 40. Lógica das Regras (2/5) • Exemplo B: ▫ #iptables -A INPUT -p ICMP -j DROP ▫ #iptables -A INPUT -p ICMP -s 10.0.0.10 -j ACCEPT • Podemos concluir o seguinte: • Exemplo B: todos os pings serão deletados, até mesmo os da máquina 10.0.0.10. • Ou seja: a ordem da regras importam! • Obs.: no caso do LOG, a regra mesmo que executada, passará para a próxima condição. 40
  41. 41. Lógica das Regras (3/5) • Impasses e ordem de processamento • Se houver impasse entre regras, sempre valerá a primeira. Assim, entre as regras: ▫ #iptables -A FORWARD -p icmp -j DROP ▫ #iptables -A FORWARD -p icmp -j ACCEPT • Valerá: ▫ #iptables -A FORWARD -p icmp -j DROP 41
  42. 42. Lógica das Regras (4/5) • Impasses e ordem de processamento • Já entre as regras: ▫ #iptables -A FORWARD -p icmp -j ACCEPT ▫ #iptables -A FORWARD -p icmp -j DROP • Valerá: ▫ #iptables -A FORWARD -p icmp -j ACCEPT 42
  43. 43. Lógica das Regras (5/5) • Essas situações ocorrem porque as regras são processadas na ordem em que aparecem. • Depois do processamento da regra, pode haver continuidade de processamento ou não. • Isso irá depender da ação: ▫ ACCEPT --> Para de processar regras para o pacote atual; ▫ DROP --> Para de processar regras para o pacote atual; ▫ REJECT --> Para de processar regras para o pacote atual; ▫ LOG --> Continua a processar regras para o pacote atual; 43
  44. 44. Regras Comentadas • Exemplo de funcionamento das regras. 44
  45. 45. Regras comentadas (1/6) • Regras: ▫ #iptables -L • Lista todas as regras existentes. ▫ #iptables -F • Apaga todas as regras sem alterar a política. ▫ #iptables -P FORWARD DROP • Estabelece uma política de proibição padrão para a passagem de pacotes entre sub-redes. 45
  46. 46. Regras comentadas (2/6) ▫ #iptables -A FORWARD -j DROP • Todos os pacotes oriundos de qualquer sub-rede e destinados a qualquer sub-rede deverão ser descartados. ▫ #iptables -A FORWARD -j ACCEPT • Todos os pacotes oriundos de qualquer sub-rede e destinados a qualquer sub-rede deverão ser aceitos. ▫ #iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j DROP • Os pacotes oriundos da sub-rede 10.0.0.0 (máscara 255.0.0.0) e destinados aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. Note que se a máquina possuir domínios virtuais, todos esses serão bloqueados. 46
  47. 47. Regras comentadas (3/6) ▫ #iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j REJECT • Os pacotes oriundos da sub-rede 10.0.0.0 (máscara 255.0.0.0) e destinados aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. Deverá ser enviado um ICMP avisando à origem. ▫ #iptables -A FORWARD -d www.chat.com.br -j DROP • Os pacotes oriundos de qualquer lugar e destinados aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. 47
  48. 48. Regras comentadas (4/6) ▫ #iptables -A FORWARD -d 10.0.0.0/8 -s www.chat.com.br -j DROP • Os pacotes destinados à sub-rede 10.0.0.0 (máscara 255.0.0.0) e oriundos aos hosts cujos endereços IP respondem pelo nome www.chat.com.br deverão ser descartados. ▫ #iptables -A FORWARD -s www.chat.com.br -j DROP • Os pacotes oriundos aos hosts cujos endereços IP respondem pelo nome www.chat.com.br e destinados a qualquer lugar deverão ser descartados. ▫ #iptables -A FORWARD -s 200.221.20.0/24 -j DROP • Os pacotes oriundos da sub-rede 200.221.20.0 (máscara 255.255.255.0) e destinados a qualquer lugar deverão ser descartados. 48
  49. 49. Regras comentadas (5/6) ▫ #iptables -A FORWARD -s 10.0.0.5 -p icmp -j DROP • Os pacotes icmp oriundos do host 10.0.0.5 e destinados a qualquer lugar deverão ser descartados. ▫ #iptables -A FORWARD -i eth0 -j ACCEPT • Os pacotes que entrarem pela interface eth0 serão aceitos. ▫ #iptables -A FORWARD -i ! eth0 -j ACCEPT • Os pacotes que entrarem por qualquer interface, exceto a eth0, serão aceitos. 49
  50. 50. Regras comentadas (6/6) ▫ #iptables -A FORWARD -s 10.0.0.5 -p tcp --sport 80 -j LOG • O tráfego de pacotes TCP oriundos da porta 80 do host 10.0.0.5 e destinados a qualquer lugar deverá ser gravado em log. No caso, /var/log/messages. ▫ #iptables -A FORWARD -p tcp --dport 25 -j ACCEPT • Os pacotes TCP destinados à porta 25 de qualquer host deverão ser aceitos. 50
  51. 51. Dúvidas? 51
  52. 52. Exercícios • Responda os exercícios assumindo que sua máquina irá assumir a posição do host informado no exercício. 52
  53. 53. Exercícios • Responda os exercícios de acordo com a seguinte topologia: 53
  54. 54. Exercícios • 1 - Algumas regras para o roteador “R”: a) Não permita que a rede 192.168/16 envie pings para o servidor “S”. b) Não permita que a máquina “B” envie pacotes UDP para a máquina “Y”. 54
  55. 55. Exercícios • 2 - Algumas regras para o servidor “S”: a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e opera na porta 23) no servidor. b) A máquina “B” está proibida de acessar TFTP no servidor. c) A rede 172.29/16 está proibida de enviar e-mails pelo servidor. E se alguém tentar, registrar em log. 55
  56. 56. Exercícios • 3 - Algumas regras para a máquina “A”: a) Só será permitido resolver DNS pelo servidor “S”. b) A única página web que se permite acessar é a que está no servidor “S”. Bloquear e registrar em log outras tentativas. 56
  57. 57. Respostas 57
  58. 58. Exercício 1 • 1 - Algumas regras para o roteador “R”: a) Não permita que a rede 192.168/16 envie pings para o servidor “S”.  (policy = ACCEPT)  #iptables -A FORWARD -p ICMP -s 192.168.0.0/16 -d 200.143.81.25 -j REJECT b) Não permita que a máquina “B” envie pacotes UDP para a máquina “Y”.  #iptables -A FORWARD -p UDP -s 172.29.0.3 -d 192.168.0.5 -j DROP 58
  59. 59. Exercício 2 • 2 - Algumas regras para o servidor “S”: a) Só será permitido à máquina “X” fazer telnet (baseado em TCP e opera na porta 23) no servidor.  (policy = ACCEPT)  #iptables -A INPUT -s 192.168.0.4 -p TCP --dport 23 -j ACCEPT  #iptables -A INPUT -p TCP --dport 23 -j DROP b) A máquina “B” está proibida de acessar TFTP no servidor.  #iptables -A INPUT -s 172.29.0.3 -p UDP --dport 69 -j DROP c) A rede 172.29/16 está proibida de enviar e-mails pelo servidor. E se alguém tentar, registrar em log.  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 25 -j LOG  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 25 -j DROP  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 587 -j LOG  #iptables -A INPUT -s 172.29.0.0/16 -p TCP --dport 587 -j DROP 59
  60. 60. Exercício 3 • 3 - Algumas regras para a máquina “A”: a) Só será permitido resolver DNS pelo servidor “S”.  (policy = ACCEPT)  #iptables -A OUTPUT -d 200.143.81.25 -p UDP --dport 53 -j ACCEPT  #iptables -A OUTPUT -p UDP --dport 53 -j DROP b) A única página web que se permite acessar é a que está no servidor “S”. Bloquear e registrar em log outras tentativas.  #iptables -A OUTPUT -d 200.143.81.25 -p TCP --dport 80 -j ACCEPT  #iptables -A OUTPUT -p TCP --dport 80 -j LOG  #iptables -A OUTPUT -p TCP --dport 80 -j DROP 60
  61. 61. Outras Dúvidas? 61
  62. 62. Firewall Iptables - Filter Prof. Andrei Carniel Universidade Tecnológica Federal do Paraná – UTFPR E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×