Você está na página 1de 37

FIREWALL – IPTABLES

TÉCNICO EM INFORMÁTICA

Prof. Edmilson Vieira


Aula 1
Introdução
• O IPTables é uma versão robusta, completa e tão
estável quanto seus antecessores IPFWADM e
IPCHAINS, implementados nos Kernels Linux 2.0 e
2.2 respectivamente.
• IPTables é um firewall muito conhecido na
comunidade Linux que foi incorporado ao mesmo
em 1999.
Introdução
• Principais características:
– Filtro de Pacotes
– NAT
– QoS sobre tráfego
– Redirecionamento de endereços e portas
– Detecção de fragmentos
– Bloqueio de ataques
– Entre outros.
Introdução

• Surgiu com o objetivo de proteger as máquinas


de acessos ou tráfego indesejado.
• Proteger serviços que estejam rodando na
máquina.
• Bloquear a passagem de algo que não deseja
receber (por exemplo: conexões vindas da
Internet).
Introdução

• Foi introduzido no kernel2.4 do Linux.


• É um firewall em nível de pacotes, com
funcionamento baseado em endereço e porta de
origem/destino, prioridade, entre outros.
• Seu funcionamento é baseado na comparação de
regras para saber se um pacote pode ou não
passar.
Introdução
• Pode ser usado para:
– Monitorar e/ou modificar tráfego de rede, efetuar NAT
(masquerading, sourceNAT, destinationNAT);
– Redirecionamento de pacotes;
– Marcação de pacotes;
– Modificação de prioridade dos pacotes de entrada/saída;
– Contagem de bytes;
– Divisão de tráfego;
– Proteção anti-spoofing (pacotes com IP falsificado);
– Proteção contra synflood (forma de negação de serviço);
– Proteção contra DoS (forma de negação de serviço);
– Etc.
PARA LEMBRAR

• Não funciona de forma automática, ou seja, somente


instalar e esperar que ele faça o resto.
• É necessário pelo menos conhecimentos básicos em
redes TCP/IP e roteamento e portas.
• Esses conhecimentos são necessários para criar
regras de segurança.
PARA LEMBRAR

• Lembre-se:
– A segurança do sistema depende do conjunto de
regras que serão criados por você;
– 95% das invasões de sucesso são devido a falhas
humanas na configuração;
• Trabalharemos principalmente com a função
Filtro de Pacotes que é a mais utilizada no
IPTables, bloqueando e permitindo serviços em
uma rede.
O que é iptables?
 Tem o objetivo de proteger a máquina contra
acessos indesejados

 Muito rápido, estável e seguro

 Suporte a protocolos TCP/UDP/ICMP


(incluindo tipos de mensagens icmp)

 Foi implantado na versão 2.4 do kernel


Esquema de rede com iptables
Chains
 O que são?
• Basicamente para filtragem de pacotes
existem basicamente três tipos de chains, são
elas:

 Tipos de chains
 Embutidos
 Criados
Tabelas
 FILTER
 INPUT
 OUTPUT
 FORWARD

 NAT
 PREROUTING
 OUTPUT
 POSTROUTING

 MANGLE
 INPUT
 FORWARD
 PREROUTING
 POSTROUTING
 OUTPUT
Tabela FILTER
• Descrição: É a tabela padrão, ela não precisa ser especificada
na sintaxe do iptables.
• Chains:
– INPUT → Consultado para dados que chegam a máquina
– OUTPUT → Consultado para dados que saem da máquina
– FORWARD → Consultado para dados que são redirecionados
para outra interface de rede ou outra máquina.
Exemplo: iptables -A FORWARD -i eth0 -o eth2 -m pkttype --pkt-
type multicast -j DROP
Tabela FILTER
Exemplo: iptables -A FORWARD -i eth0
-o eth2 -m pkttype --pkt-type
multicast -j DROP
Tabela NAT
• Descrição: Usada para dados que geram outra conexão
(masquerading, source nat, destination nat, port forwarding, proxy
transparente são alguns exemplos).
• Chain:
– PREROUTING → Consultado quando os pacotes precisam ser
modificados logo que chegam.
– OUTPUT → Consultado quando os pacotes gerados
localmente precisam ser modificados antes de serem roteados.
– POSTROUTING → Consultado quando os pacotes precisam
ser modificados após o tratamento de roteamento.
Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 -j
SNAT --to 200.200.217.40
Tabela NAT
Exemplo:
iptables -t nat -A POSTROUTING -s
192.168.1.2 -o eth0 -j SNAT --to
200.200.217.40
Tabela Mangle
• INPUT - Consultado quando os pacotes precisam ser modificados antes
de serem enviados para o chain INPUT da tabela filter.

• FORWARD - Consultado quando os pacotes precisam ser modificados


antes de serem enviados para o chain FORWARD da tabela filter.

• PREROUTING - Consultado quando os pacotes precisam ser


modificados antes de ser enviados para o chain PREROUTING da tabela
nat.

• POSTROUTING - Consultado quando os pacotes precisam ser


modificados antes de serem enviados para o chain POSTROUTING da
tabela nat.

• OUTPUT - Consultado quando os pacotes precisam ser modificados


antes de serem enviados para o chain OUTPUT da tabela nat.
Sintaxe do iptables
 Sintaxe: iptables [-t tabela] [opção] [chain] [dados] -j
[ação]
 Exemplo: iptables -t filter -A INPUT -d 127.0.0.1 -j DROP

Explicando: Bloqueia qualquer acesso indo ao endereço


127.0.0.1, que é nosso localhost.
Criando um chain
 Opção -N
 iptables [-t tabela] [-N nomedochain]

Exemplo: iptables -t filter -N internet


– Inserindo regra no novo chain “internet”:
iptables -t filter -A internet -s 192.168.0.102 -j DROP
iptables -t filter -A INPUT -j internet
Criando um chain
 Tabela de regras:
INPUT INTERNET
-s 192.168.0.97 -j DROP -s 192.168.0.102 -j DROP
-s 192.168.0.101 -j ACCEPT
-s 192.168.0.103 -j ACCEPT
-j internet

Explicação: Fizemos um redirecionamento ou o conhecido


“pulo”.
Renomeando um chain
 Opção -E
 iptables [-t tabela] -E chain-antigo chain-novo

 Exemplo: iptables -t filter -E internet teste


Apagando um chain criado
 Opção -X
 iptables [-t tabela] -X [chain]

Exemplo: iptables -t filter -X teste

OBS.: Chains embutidos não podem ser apagados pelo


usuário
Especificando o alvo
• Opção -j
– Iptables [- tabela] [-A chain] [dados] -j [ALVO]

• Tipos:
– ACCEPT → Aceita o pacote
– DROP → “Dropa”, ou simplesmente não aceita o pacote
– REJECT → Rejeita o pacote, enviando uma mensagem
– LOG → Envia uma mensagem ao syslog caso a regra confira
– RETURN → Para o processamento do chain atual, e retorna
– QUEUE → Passa para o processamento de programas externos
Regras
 O que são regras?

Exemplo: iptables -A INPUT -s 200.222.256.63 -j DROP

OBS.: As regras são armazenadas dentro dos chains e


processadas na ordem que são inseridas.
Adicionando regras
 Opção -A:
 iptables [-t tabela] -A [chain] [dados] -j [ação]
 Opção -I:
 iptables [-t tabela] -I [chain] [dados] -j [ação]

Exemplo: iptables -t filter -I INPUT -s 192.168.0.10 -d


192.168.0.11 -j DROP
Listando regras
 Opção -L
 iptables [-t tabela] -L [chain] [opções]
[opções]:
-v → Exibe mais detalhes sobre as regras criadas nos chains
-n → Exibe endereços de máquinas/portas como números
-x → Exibe números exatos. Mostra a faixa de portas de uma regra
--line-numbers → Exibe o número da posição da regra

Exemplo: iptables -t filter -L INPUT --line-numbers


Apagando uma regra
 Opção -D
 iptables [-t tabela] -D [chain] [posição]
 iptables [-t tabela] -D [chain] [dados] -j [ação]

Exemplo: iptables -t filter -D INPUT 1


iptables -t filter -D INPUT -d 127.0.0.1 -j DROP
Substituindo uma regra
 Opção -R
 iptables [-t tabela] -R [chain] [posição] [regra] -j
[ação]

Exemplo: iptables -R INPUT 1 -d 127.0.0.1 -p icmp -j DROP


Limpando regras
 Opção -F
 iptables [-t tabela] -F [chain]

Exemplo: iptables -F
iptables -t filter -F INPUT
Parâmetros
• Parâmetro -s
– Usado para especificar endereços de origem. Também é usado
como --src ou --source
• Parâmetro -d
– Usado para especificar endereços de destino. Também usado
como --dst e –destination

Exemplo: iptables -t filter -A INPUT -s 192.168.0.104 -d


192.168.0.102 -p icmp -j DROP
Parâmetros
• Parâmetro -i
– Usado para especificar a interface de entrada.
• Parâmetro -o
– Usado para especificar a interface de saída
Exemplo: iptables -t filter -A INPUT -s 192.168.0.104 -i ppp+
-j DROP
Exemplo2: iptables -A FORWARD -i ppp0 -o eth1 -j DROP
OBS.: O sinal de "+" funciona como um coringa, assim a regra terá
efeito em qualquer interface de ppp0 a ppp9.
Parâmetros
• Parâmetro -p
– Usado para especificar um protocolo. Podem ser especificados
os procolos, TCP, UDP e ICMP.

Exemplo: iptables -A INPUT -s 192.168.0.104 -p icmp -j DROP


• Parâmetro –dport
– Especifica uma porta ou faixa de portas de destino.
Exemplo: iptables -A OUTPUT -d 200.200.200.200 -p tcp --dport
:1023 -j DROP
Fazendo IP Masquerade
• Descrição: O IP Masquerading é um tipo especial de SNAT
usado para conectar a sua rede interna a internet quando você
recebe um IP dinâmico de seu provedor (como em conexões
ppp).

Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o


ppp0 -j MASQUERADE

OBS.: Todas as operações de IP Masquerading são realizadas no


chain POSTROUTING
Fazendo DNAT
• Descrição: DNAT (Destination nat - nat no endereço de
destino) consiste em modificar o endereço de destino das
máquinas clientes. O destination nat é muito usado para fazer
redirecionamento de pacotes, proxys transparentes e
balanceamento de carga.

Exemplo: iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0


-j DNAT --to 192.168.1.2

OBS.: Toda operação de DNAT é feita no chain PREROUTING


Fazendo SNAT
• Descrição: SNAT (source nat - nat no endereço de origem)
consiste em modificar o endereço de origem das máquinas
clientes antes dos pacotes serem enviados. A máquina roteadora
é inteligente o bastante para lembrar dos pacotes modificados e
reescrever os endereços assim que obter a resposta da máquina
de destino, direcionando os pacotes ao destino correto.
Exemplo: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o
eth0 -j SNAT --to 200.200.217.40-200.200.217.50
OBS.: SNAT faz a operação inversa do DNAT.
TESTES
• 1. Bloqueie qualquer acesso do protocolo ICMP para a sua
máquina
• 2. Bloqueie pacotes que irão entrar na sua rede com o ip
de origem 192.168.0.15 na porta 22 (por ssh)‫‏‬
• 3. Faça IP Masquerade da sua rede 192.168.2.0/24
• 4. Bloqueie a passagem dos pacotes da interface eth1 para
eth2

Você também pode gostar