Este documento apresenta um roteiro de slides sobre o iptables, o firewall do Linux. Ele aborda conceitos como tabelas, cadeias e opções de filtragem, e fornece exemplos de comandos iptables para configurar regras de firewall. Também discute tópicos como hardware necessário, log, salvamento e recuperação de regras.
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 5
6. Firewall - iptables
● Iptables:
● Código de firewall
● Presente no kernel desde a versão 2.4 (Junho/Julho
de 1999)(ipchains)
IPTABLES 6
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 8
9. Log
● Trafego registrado pelo iptables fica
armazenado por padrão no arquivo
/var/log/kern.log
IPTABLES 9
10. Eu gostei! Onde eu acho?
● #apt-get install iptables
● Iptables + ip6tables
IPTABLES 10
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 11
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 12
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 13
14. Conceitos
● Tabelas: (continuação)
● Além das tabelas MANGLE e RAW
IPTABLES 14
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 17
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 18
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 19
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 20
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 21
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 22
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 23
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 24
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 25
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 26
27. Tabela NAT
Roteamento Roteamento
PREROUTING POSTROUTING
interface interface
de entrada de saída
OUTPUT
PROCESSO LOCAL
IPTABLES 27
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 28
29. Formato Geral das regras do
iptables
● iptables [-t table] comando [filtro] [-j ação]
Ação a ser tomada.
Por exemplo,
DROP, ACCEPT,
pular para outra
cadeia, etc.
Especifique a tabela
que deseja usar. A
tabela filter é a Detalhamento que
tabela default. irá permitir a
O que será feito: filtragem do pacote.
adicionar uma IPs de origem,
regra, remover, etc. taxas, portas, etc.
Deve vir no início.
IPTABLES 29
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 30
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 31
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 33
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 34
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 35