Workshop iptables uern_stacruz_14_dez2010_v1

36
Versão do Slide: (1.0)

Transcript of Workshop iptables uern_stacruz_14_dez2010_v1

Page 1: Workshop iptables uern_stacruz_14_dez2010_v1

Versão do Slide: (1.0)

Page 2: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 2

Roteiro de apresentação

● Prefácio

● Firewall

● Firewall - iptables

● Componentes

● Hardware Necessário

● Log

● iptables

● Conceitos

● Tabela FILTER

● Opções de Filtragem

● Chains

● Dados

● Ações

● Impasses e ordem de processamento

● O retorno

● IP FORWARD

● Tabela NAT

● Cadeias NAT

● Formato Geral das regras do iptables

● Script para iptables

● Salvando e recuperando tudo

● Exemplos de nat

● Dicas para evitar BRONCA

Page 3: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 3

Prefácio

Uma empresa/instituição possuí a sua intranet e seus vários terminais com arquivos importantes...

Como proteger essa Intranet?

Page 4: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 4

USE UM FIREWALL!

Page 5: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 5

Firewall

● Firewall: Mecanismo constituído pela combinação de software e hardware, utilizado para dividir e controlar o acesso entre redes de computadores.● Separa a rede interna (intranet) da rede externa (internet)

através do controle de trafego● Bloqueia tentativas de conexão não autorizadas (em

ambos os sentidos)

● Finalidade: Prevenção de ataques externos à intranet e seus equipamentos.● Opcionalmente pode ser utilizado para controlar o uso da

rede pelos equipamentos internos● Proteção do próprio equipamento: Firewall pessoal.

Page 6: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 6

Firewall - iptables

● Iptables:● Código de firewall● Presente no kernel desde a versão 2.4 (Junho/Julho

de 1999)(ipchains)

Page 7: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 7

Componentes

● Pacote: iptables● Iptables● Ip6tables● Iptables-save● Iptables-restore

Page 8: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 8

Hardware Necessário

● Kernel compilado com suporte ao iptables (2.4+)● Requerimento mínimo de memória: igual ao do

kernel 2.4 (4MB de RAM)(dependendo do tráfego manipulado pelas interfaces pode

rodar com folga)

● Configurações residem no kernel, logo não é necessário espaço extra em disco para a execução do utilitário

Page 9: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 9

Log

● Trafego registrado pelo iptables fica armazenado por padrão no arquivo /var/log/kern.log

Page 10: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 10

Eu gostei! Onde eu acho?

● #apt-get install iptables● Iptables + ip6tables

Page 11: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 11

iptables

● Principais características:● Filtragem sem considerar o estado do pacote● Filtragem considerando o estado do pacote● Suporte a NAT, tanto para endereços de rede ou

portas● Flexível, com suporte a plugins

Page 12: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 12

Conceitos

● Regras: são instruções dadas ao firewall● Cadeias (Chains): locais onde as regras podem

ser agrupadas. As regras são processadas em ordem pelo firewall.● Toda cadeia tem uma política padrão, definida pelo

usuário.● A Cadeia é percorrida até um regra ser atingida.

Todas as restantes são ignoradas.● Regras com erro são ignoradas.● Se nenhuma regra é atingida, usa-se a regra de

política padrão.

Page 13: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 13

Conceitos

● Tabelas: o iptables organiza o seu fluxo de pacotes em tabelas, cada uma com um conjunto de cadeias pré-definidas:● Tabela FILTER: tabela padrão com três cadeias

– INPUT– OUTPUT– FORWARD

● Tabela NAT: tabela usada para NAT– PREROUTING– OUTPUT– POSTROUTING

Page 14: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 14

Conceitos

● Tabelas: (continuação)● Além das tabelas MANGLE e RAW

Page 15: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 15

Esquema da tabela FILTER (default)

Page 16: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 16

Tabela FILTER

● Regras de Filtragem:● #iptables [-t tabela] [opção] [chain] [dados] -j [ação]● EX:● #iptables -P INPUT -j DROP● #iptables -A FORWARD -d 192.168.0.1 -j ACCEPT

Page 17: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 17

Opções de Filtragem

● -P →Policy(política). Altera a política da chain;● -A →Append(Anexar, Concatenar). Acresente

uma nova regra a chain;● -D →Delete(apagar). Apaga uma regra.● -L →List(listar). Lista as regras existentes.● -F →Flush(esvaziar). Remove todas as regras

existentes.

Page 18: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 18

Chains

● INPUT:● Refere-se a todos os pacotes destinados à máquina

filtro;

● OUTPUT;● Refere-se a todos os pacotes gerados pela máquina

filtro.

● FORWARD:● Refere-se a todos os pacotes que passam pelo filtro

mas são destinados a ela.

Page 19: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 19

Dados

● Os elementos mais comuns para se gerar dados são os seguintes:● [!] -s → Source(Origem): Estabelece a origem do

pacote;● [!] -d → Destination(Destino): Estabelece o destino do

pacote;● [!] -p → Protocol(Protocolo): Especifica o protocolo a

ser filtrado;● [!] -i → In-Interface(Interface de entrada): Especifica a

interface de entrada a ser filtrada.

Page 20: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 20

Dados

● [!] -o → Out-Interface(Interface de saída): Especifica a interface de saída;

● ! → Negação: Utilizado para excluir o argumento;

● --sport → Source Port(Porta de Origem): Especifica qual a porta de origem;

● --dport → Destination Port(Porta de Destino): Especifica qual a porta de destino.

Page 21: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 21

Ações

● ACCEPT → Aceitar;● DROP → Abandonar;● REJECT → Igual ao DROP, mas avisa a origem

sobre o ocorrido;● LOG → Cria um log referente à regra, em

/var/log/messages.

Page 22: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 22

Impasses e ordem de processamento

● Impasse de regras:● #iptables -A FORWARD -p icmp -j DROP

● #iptables -A FORWARD -p icmp -j ACCEPT

● Valerá:

● #iptables -A FORWARD -p icmp -j DROP

● 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

● Obs.: Isso não se aplicará às regras terminadas com -j LOG.

Page 23: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 23

● iptables -P INPUT DROP

● iptables -A INPUT -s 10.0.0.1 -j DROP

● iptables -A INPUT -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT

● iptables -A INPUT -s 172.20.0.0/16 -j ACCEPT

Page 24: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 24

● iptables -P INPUT ACCEPT

● iptables -A INPUT -s 10.0.0.1 -j DROP

● iptables -A INPUT -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT

● iptables -A INPUT -s 172.20.0.0/16 -j ACCEPT

Page 25: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 25

O retorno

● #iptables -P FORWARD DROP● #iptables -A FORWARD -s 10.0.0.0/8 -d

172.20.0.0/16 -j ACCEPT● O correto seria:

● #iptables -P FORWARD DROP● #iptables -A FORWARD -s 10.0.0.0/8 -d

172.20.0.0/16 -j ACCEPT● #iptables -A FORWARD -d 10.0.0.0/8 -s

172.20.0.0/16 -j ACCEPT

Page 26: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 26

IP FORWARD

● O IP FORWARD, via kernel, pode ser ativado pelo comando:● #echo 1 > /proc/sys/net/ipv4/ip_forward

ou● /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Page 27: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 27

Tabela NAT

PROCESSO LOCAL

PREROUTING POSTROUTING

OUTPUT

Roteamento Roteamento

interfacede entrada

interfacede saída

Page 28: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 28

Cadeias NAT

● 3 cadeias usadas para NAT:● PREROUTING: regras a serem aplicadas sobre os

pacotes logo que eles chegam à rede (usados para DNAT e redirecionamento de portas)

● OUTPUT: regras a aplicar sobre os pacotes originados da própria máquina e antes de serem roteados (somente interfaces locais)

● POSTROUTING: regras a serem aplicadas sobre os pacotes recebidos da rede (pós roteados) (usados para SNAT e mascaramento de IP)

Page 29: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 29

Formato Geral das regras do iptables

● iptables [-t table] comando [filtro] [-j ação]

Especifique a tabela que deseja usar. A tabela filter é a tabela default.

O que será feito: adicionar uma regra, remover, etc. Deve vir no início.

Detalhamento que irá permitir a filtragem do pacote. IPs de origem, taxas, portas, etc.

Ação a ser tomada. Por exemplo, DROP, ACCEPT, pular para outra cadeia, etc.

Page 30: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 30

Script para iptables

#!/bin/bash

# Apagando regras anteriores

iptables -F

iptables -t nat -F

# Política padrão

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT ACCEPT

# Libera loopback - REGRA OBRIGATÓRIA

iptables -A INPUT -i lo -j ACCEPT

# Libera pacotes de retorno.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Habilita encaminhamento de pacotes

echo "1" > /proc/sys/net/ipv4/ip_forward

Page 31: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 31

Salvando e recuperando tudo

● As regras iptables poderão ser salvas com o comando:

● #iptables-save > arquivo● A recuperação poderá ser feita pelo comando:

● #iptables-restore < arquivo● Um típico exemplo de carregamento de regras de iptables, após

a inicialização do sistema, seria:

● #echo 1 > /proc/sys/net/ipv4/ip_forward● #iptables-restore < /etc/iptables.rules

● Nada impede que as regras sejam colocadas diretamente dentro de um shell script.

Page 32: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 32

Exemplos de natiptables -t nat -A PREROUTING -i eth0 -d 200.200.200.201-p tcp –-dport 25 -j DNAT --to 172.16.3.24

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 200.233.222.123

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Page 33: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 33

Dicas para evitar BRONCA

● Atualize sempre o Iptables e o kernel;

● NUNCA rode qualquer serviço, principalmente os remotos, como telnet e ftp, nas máquinas firewall. Mas...

● ...Se tiver que administrar remotamente uma máquina firewall, utilize ssh. Nesse caso, o ssh não deverá permitir o login como root;

● Nunca cadastre qualquer usuário na máquina Iptables, caso se trate de filtro isolado, a não ser os que irão administrar por ssh;

● Utilize TCP Wrappers totalmente fechado (ALL:ALL em /etc/hosts.deny) em filtros isolados. Abra o ssh (em /etc/hosts.allow) apenas para os clientes que forem fazer administração remota;

● Anule as respostas a ICMP 8 (echo reply) no filtro isolado, para evitar ataques de Ping of Death.

● Não insira referências ao sistema de firewall no DNS;

● Não deixe as máquinas firewall isolado com cara de firewall. Utilize nomes descaracterizados;

● Faça log de ações suspeitas que estiverem ocorrendo na rede;

● Teste, teste, teste novamente.

Page 34: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 34

Referências

● MORIMOTO, Carlos E., Linux Redes e Servidores 2º ed.

● ALMEIDA, Marcelo Barros. Introdução ao iptables.

● MENEZES, Oliver. Iptables, Firewall no linux.

● DEFINIÇÃO de Firewall. Disponível em: <cartilha.cert.br/glossario/> Acesso em: 13 Dez. 2010

● IPTABLES Br. Disponível em: <http://www.eriberto.pro.br/iptables/4.html> Acesso em: 13 Dez. 2010

● NETFILTER/IPTABLES HOMEPAGE. Disponível em: <http://www.netfilter.org/projects/iptables/index.html> Acesso em: 13 Dez. 2010

Page 35: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 35

Recomendação

http://www.eriberto.pro.br/iptables/3.html● Conteúdo relacionado à Iptables de boa

qualidade, um ótimo ponto de partida para se aprofundar no assunto!

Page 36: Workshop iptables uern_stacruz_14_dez2010_v1

IPTABLES 36

Dúvidas

● Slides disponíveis em: <http://www.slideshare.net/matheusrn89>

● Contato:● [email protected][email protected]