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

Netfilter / Iptables

Embed Size (px)

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

Citation preview

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 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.

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.

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.

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.

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.

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.

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.

Saída do comando iptables -L

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.

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.

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

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).

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.

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.

Verificando as chains da Tabela Mangle

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

Como o pacote viaja pelas regras de cada chain

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.

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.

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.

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.

DROP

• Descartam pacotes transmitidos a determinado alvo.

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

Saída do comando do slide 21

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

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.

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.

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

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).

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.

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

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

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

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.

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

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

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.

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).

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?