netfilter / iptables

37
Netfilter/Iptables Introdução e Cenário 1

Upload: capucine-jencarlos

Post on 03-Jan-2016

54 views

Category:

Documents


0 download

DESCRIPTION

Netfilter / Iptables. Introdução e Cenário 1. Netfilter e Iptables. Netfilter é a parte importante do kernel em termos de segurança e manipulação de pacotes. O frontend do Netfilter é o I ptables . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Netfilter / Iptables

Netfilter/Iptables

Introdução e Cenário 1

Page 2: Netfilter / Iptables

Netfilter e Iptables

• Netfilter é a parte importante do kernel em termos de segurança e manipulação de pacotes.

• O frontend do Netfilter é o Iptables.– “Fala” para o kernel o que o usuário quer que ele

faça com os pacotes IPs que chegam, passam ou deixam o Linux.

Page 3: Netfilter / Iptables

Características

• As características mais usadas do Netfilter são:– Filtro de pacotes,– Tradução de Endereços de Rede (NAT).

• Mas, existem outras coisas que o Netfilter é capaz de fazer, como:– Manipular campos do pacotes IP,– Filtro de pacotes de Layer 7.

Page 4: Netfilter / Iptables

Instruções básicas

• Como o Netfilter trabalha?– O usuário instrui o kernel sobre o que fazer com os

pacotes IPs que fluem pelo Linux, usando as ferramentas do Iptables.

– O Linux então analisa os cabeçalhos IP de todos os pacotes que fluem por ele.

– Se o kernel encontra algum valor no cabeçalho que combine com uma das regras, então o pacote é manipulado de acordo com o que foi definido na regra.

Page 5: Netfilter / Iptables

Tabelas

• O Netfilter possui algumas poucas tabelas aonde as regras são armazenadas.– Por padrão, existem três tabelas, mas é possível

criar outras.• Cada tabela possui um conjunto de regras

denominadas chains.• A tabela default do Netfilter é a tabela Filter.

Page 6: Netfilter / Iptables

Chains da Tabela Filter

• Lida com situações relacionadas ao filtro de pacotes.• As situações são:

– INPUT.• O que entra no firewall. Contém regras para pacotes

destinados a própria máquina Linux.

– FORWARD.• O que é comutado no firewall. Contém regras para pacotes que

são roteados pela máquina Linux, para outros endereços IP.

– OUTPUT.• O que sai do firewall. Contém regras para pacotes que foram

gerados na máquina Linux.

Page 7: Netfilter / Iptables

Verificando as regras existentes

• O comando abaixo lista todas as regras anexadas a tabela filter.

iptables -t filter -L

• Se o parâmetro –t filter for omitido, o Iptables irá, mesmo assim, listar o conteúdo da Tabela Filter por ela ser o seu padrão.

Page 8: Netfilter / Iptables

Listando as chains da Tabela Filter

• Digite o comando do slide anterior e observe, na saída do comando, que existem as chains INPUT, FORWARD e OUTPUT.

• Note também, que as chains estão sem nenhuma regra.

• Observe que a política padrão é ACCEPT.– Esta é a política padrão do iptables. – A política padrão determina o que ocorrerá com o

pacote se ele passar por todas as regras existentes nas chains.

Page 9: Netfilter / Iptables

Saída do comando iptables -L

Page 10: Netfilter / Iptables

Informando a tabela

• A seguir, repetiremos o mesmo comando inserindo o parâmetro –t nat.

iptables –t nat –L

• Este parâmetro indica qual tabela deverá ser listada.

• O Iptables possui três tabelas.– Filter.– Nat.– Mangle.

Page 11: Netfilter / Iptables

Tabela NAT

• Esta tabela implementa funções de NAT (Network Address Translator).

• As situações são:– PREROUTING.• Altera os pacotes antes que eles sejam comutados.

– POSTROUTING.• Altera pacotes após a comutação.

– OUTPUT.• Trata os pacotes emitidos pelo firewall.

Page 12: Netfilter / Iptables

Mas, o que é o NAT?

• Por se tratar de uma rede privada, os números de IP interno da rede (como 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16) nunca poderiam ser passados para a Internet pois não são roteados nela e o computador que recebesse um pedido com um desses números não saberia para onde enviar a resposta.

• Sendo assim, os pedidos teriam de ser gerados com um IP global do router. Mas quando a resposta chegasse ao router, seria preciso saber a qual dos computadores presentes na LAN pertencia aquela resposta.

• Esta é a função do NAT: Reescrever os endereços IP de origem de um pacote que passam por um router ou firewall

Page 13: Netfilter / Iptables

Tabela NAT

• Aplica tradução de endereços.• Altera os endereços dos pacotes que

atravessam o kernel do Linux.• Manipula os endereços de origem (SNAT) e o

de destino (DNAT).

Page 14: Netfilter / Iptables

Saída do comando

• Digite o comando que lista as regras de cada chain da tabela NAT.

• Mais uma vez, observe as regras existentes na saída do comando.

• Observe também, a política padrão configurada para as chains.

Page 15: Netfilter / Iptables

Tabela Mangle

• Tabela usada para configurar QoS.• Altera a prioridade de pacotes baseando-se no campo TOS.• As situações são:

– PREROUTING.• Modifica o pacote antes da comutação.

– INPUT.– FORWARD.– OUTPUT.

• Altera o pacote gerado pelo firewall

– POSTROUTING.• Modifica o pacote após a comutação.

Page 16: Netfilter / Iptables

Verificando as chains da Tabela Mangle

• Determine as chains existentes na tabela mangle.Qual é a política padrão das chains?

Page 17: Netfilter / Iptables

Como o pacote viaja pelas regras de cada chain

Page 18: Netfilter / Iptables

Agora, veremos alguns comandos...

Antes de aplicar as regras, verifique se o ping, a partir da máquina PC01, está chegando a máquina PC02. Nesta topologia o computador pessoal denominado firewall será protegido.

Page 19: Netfilter / Iptables

Regra 1

• Libera o tráfego de entrada da interface loopback.– Permite que a comunicação entre processos seja

possível.• Esta regra não é opcional e sim obrigatória.

iptables –A INPUT –i lo –j ACCEPT

• Repita o comando iptables –L e observe que uma regra foi adicionada à tabela Filter na chain INPUT.

Page 20: Netfilter / Iptables

Parâmetros (1)

• O parâmetro –A adiciona uma entrada no final da lista de regras.– No exemplo do slide anterior, uma nova regra foi inserida no

final da chain INPUT.• O parâmetro –i especifica a interface de entrada a ser

utilizada.– Refere-se apenas as interfaces de entrada, nunca as de saída.

• INPUT ou FORWARD.• Pode ser digitado eth+ referenciando todas as interfaces.

• O parâmetro –j define o alvo. As principais ações são ACCEPT, DROP, REJECT e LOG.

Page 21: Netfilter / Iptables

Alterar a política padrão das chains

• A política padrão determina o que acontecerá com um pacote quando ele chegar ao final das regras contidas em um chain.

• Configurar as políticas padrões para DROP.– Vamos mudar a política padrão da chain INPUT de ACCEPT para

DROP.iptables –P INPUT DROP

• O parâmetro –P altera a política padrão de uma chain.• Repita o comando iptables –L

• Altere também o alvo da chain FORWARD para DROP.• Verifique agora se o ping continua chegando no firewall e se

ele sai do firewall.

Page 22: Netfilter / Iptables

DROP

• Descartam pacotes transmitidos a determinado alvo.

• Não informa ao destino o que realmente houve.

Page 23: Netfilter / Iptables

Saída do comando do slide 21

• Explique a funcionalidade de cada coluna da saída do comando.

Page 24: Netfilter / Iptables

Ações mais comuns

• ACCEPT.– Permite a entrada/passagem do pacote.

• DROP.– O pacote encaminhado a este alvo é descartado.

• REJECT.– O mesmo que o DROP. A diferença que este envia

uma mensagem ao transmissor avisando o que ocorreu.

Page 25: Netfilter / Iptables

Mais alguns comandos...

• Cria uma nova chain:– iptables –N CHAIN.

• Deleta todas as regras de uma chain:– iptables –F CHAIN.

• Deleta a chain:– iptables –X CHAIN.

• Zera contadores em uma chain:– iptables –Z CHAIN.

Para qualquer um destes comandos,se a tabela não for especificada, a

operação será aplicada a Tabela Filter.Se a chain não for especificada, a

operação será aplicada à tabela inteira.

Page 26: Netfilter / Iptables

Operações em regras

• Adicionar uma regra ao final da tabela:– iptables –A

• Inserir regras em uma chain:– iptables –I

• Substituir uma regra na tabela:– iptables –R

• Deletar uma regra em uma chain:– iptables -D

Page 27: Netfilter / Iptables

Filtros aplicados a Camada 2

• Interfaces podem ser especificadas com os seletores:– i (input)– o (output)

• O sinal de mais ( + ) pode ser utilizado para especificar somente o início do nome da interface.– i eth+

• O sinal de exclamação representa a negação.– i! eth1 (interfaces de entrada excetuando-se a eth1).

Page 28: Netfilter / Iptables

Chains onde os parâmetros não são permitidos

• Pacotes analisados nas chains OUTPUT e POSTROUTING não tem interfaces de entrada. Então, não é permitido usar o parâmetro –i nestas chains.

• Assim como as chains INPUT e PREROUTING não tem interfaces de saida. Então, não é possível usar o parâmetro –o nestas chains.

Page 29: Netfilter / Iptables

Filtros aplicados a Camada 3

• Endereço IP origem pode ser atribuído usando os parâmetros -s, --src, ou --source.

• Assim como endereços IP destino podem ser atribuídos usando os parâmetros -d, --dst ou ---destination.

• Exemplos com o mesmo efeito:– s 216.207.10.55– s www.site.com.br– s 216.207.10.55/24

Page 30: Netfilter / Iptables

Filtros aplicados a Camada 4

• Protocolos podem ser usados especificando-se o parâmetro –p– Exemplos:• -p tcp• -p udp

• Para o ICMP, pode-se usar o tipo da mensagem.– O comando abaixo mostra os tipos possíveis.• iptables –p icmp --help

Page 31: Netfilter / Iptables

UDP ou TCP

• Podem ser acompanhados pelos números de porta.– Parâmetros:

• sport• dport

• Como o TCP é mais completo, é possível especificar outros parâmetros:

--tcp-flags (as flags podem ser SYN, ACK, FIN, RST, URG, PSH, ALL ou NONE)

--tcp option--syn

Page 32: Netfilter / Iptables

Especificando o destino

• Para a Tabela Filter os alvos mais usados são DROP e ACCEPT.– Se um pacote casar com uma regra com alvo

DROP, O kernel do Linux irá descartar o pacote sem consultar outras regras.• Uma alternativa é o REJECT que descarta o pacote mas

envia um ICMP para a origem que criou o pacote.– Por default o código ICMP enviado é o port unreachable, mas

pode ser mudado com a opção - - reject-with.

Page 33: Netfilter / Iptables

Criando chains

• O alvo em uma regra no iptables também pode ser usado para passar o pacote para uma chain criada pelo usuário.

• Por exemplo, se nós criarmos uma nova chain através do comando iptables –N SSH, nós precisamos dizer ao kernel, para procurar por esta chain em todos os pacotes entrantes pela porta 22.iptables –A INPUT –p tcp – -dport 22 –j SSH

Page 34: Netfilter / Iptables

Adicionando a rede de origem

• No slide anterior, nós criamos a chain SSH para passar pacotes que entram pela porta 22.

• Agora iremos aceitar essas conexões 192.168.0.0/24.iptables –A SSH –s 192.168.0.0/24 –j ACCEPT

• A seguir, vamos descartar os pacotes de todas as outras redes.

iptables –A SSH –j DROP

Page 35: Netfilter / Iptables

Salvando as configurações

• É necessário que o arquivo de configuração existente em /etc/sysconfig/iptables-config permita a gravação das regras em /etc/sysconfig/iptables. – Para isto verifique a existência no arquivo

/etc/sysconfig/iptables-config da linha IPTABLES_SAVE_ON_RESTART=“yes”

• Para gravar execute o comando iptables-save. As regras serão gravadas em /etc/sysconfig/iptables.

• Para restaurar, digite o comando iptables-restore.

Page 36: Netfilter / Iptables

Cenário 1

• Um firewall básico. O Linux como uma estação de trabalho.– Altere as políticas das chains para:

• INPUT – DROP.• FORWARD – DROP.• OUTPUT – ACCEPT.

– Permita o tráfego para a interface loopback.– Permita tráfego ICMP.– Permita tráfego DNS de entrada– Permita somente conexões TCP já estabelecidas.– Permita o ping (ICMP) somente do firewall para a Internet

(PC01).

Page 37: Netfilter / Iptables

Responda

• Por que a chain OUTPUT foi configurada para ACCEPT?

• Por que nenhuma regra para a chain FORWARD foi inserida?

• Por que nenhuma regra para a chain OUTPUT foi inserida?

• Por que conexões provenientes da porta 53 foram permitidas? De que maneira poderíamos aumentar a segurança desta regra?