Workshop iptables uern_stacruz_14_dez2010_v1
-
Upload
matheus-araujo -
Category
Technology
-
view
1.497 -
download
1
Transcript of Workshop iptables uern_stacruz_14_dez2010_v1
Versão do Slide: (1.0)
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
IPTABLES 3
Prefácio
Uma empresa/instituição possuí a sua intranet e seus vários terminais com arquivos importantes...
Como proteger essa Intranet?
IPTABLES 4
USE UM FIREWALL!
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.
IPTABLES 6
Firewall - iptables
● Iptables:● Código de firewall● Presente no kernel desde a versão 2.4 (Junho/Julho
de 1999)(ipchains)
IPTABLES 7
Componentes
● Pacote: iptables● Iptables● Ip6tables● Iptables-save● Iptables-restore
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
IPTABLES 9
Log
● Trafego registrado pelo iptables fica armazenado por padrão no arquivo /var/log/kern.log
IPTABLES 10
Eu gostei! Onde eu acho?
● #apt-get install iptables● Iptables + ip6tables
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
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.
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
IPTABLES 14
Conceitos
● Tabelas: (continuação)● Além das tabelas MANGLE e RAW
IPTABLES 15
Esquema da tabela FILTER (default)
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
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.
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.
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.
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.
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.
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.
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
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
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
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
IPTABLES 27
Tabela NAT
PROCESSO LOCAL
PREROUTING POSTROUTING
OUTPUT
Roteamento Roteamento
interfacede entrada
interfacede saída
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)
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.
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
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.
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
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.
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
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!
IPTABLES 36
Dúvidas
● Slides disponíveis em: <http://www.slideshare.net/matheusrn89>
● Contato:● [email protected]● [email protected]