Você está na página 1de 21

Iptables

Firewalls, um pouco sobre

Firewalls

Realizam a filtragem de pacotes

Baseando-se em:

endereço/porta de origem;

endereço/porta de destino;

protocolo;

Efetuam ações:

Aceitar

Rejeitar

Descartar

Registrar

Firewalls

Realizam o mascaramento (Proxy)

Geralmente incorporado ao Firewall

Mascarar vários IPs privados em um público

Realizam o mascaramento (Proxy) ● Geralmente incorporado ao Firewall ● Mascarar vários IPs privados em um

Firewalls

Na maioria dos casos possui três tipos de fluxos básicos de pacotes de rede, sendo:

Direcionados à máquina onde o firewall está instalado – INPUT

Direcionados da máquina onde o firewall está instalado à um destino qualquer – OUTPUT

Encaminhados, repassados, pela máquina onde o firewall está instalado à outras máquinas na rede interna – FORWARD

Cada fluxo possui suas regras próprias

Vantagens do Firewall Iptables

Desvantagens de outros Firewalls

Trabalham na camada de aplicação do TCP/IP, gerando

Retardo

Travamento Além de poderem ser alvos de antivírus e IDS

Firewall Iptables

Implementado diretamente no kernel

linux-source/include/linux/netfilter_ipv4/ip_tables.h

Trabalha na camada de Rede do TCP/IP

Mais rápido

Mais eficiente no tratamento de pacotes

IPTables

Tabelas IPTables

Possui três tabelas

FILTER

É a tabela padrão (utilizada mesmo se a opção -t não for fornecida). Contém três cadeias de regras:

INPUT → para pacotes destinado a serviços locais da máquina

FORWARD → para pacotes sendo roteados

OUTPUT → para os pacotes gerados localmente

NAT

Esta tabela é consultada quando encontra-se um pacote cria uma nova conexão, que deve ser enviado para outro destino. Contém três cadeias de regras:

PREROUTING → para alterar pacotes assim que eles chegarem

OUTPUT → para alterar pacotes gerados localmente antes de serem roteados

POSTROUTING → para alterar pacotes momentos antes deles partirem para outros hosts

MANGLE

Esta tabela é utilizada para alteração especializada dos pacotes. Possui cinco cadeias de regras:

PREROUTING → para alterar pacotes que acabaram de chegar, antes de serem roteados

OUTPUT → para alterar pacotes gerados localmente antes de serem roteados

INPUT → para pacotes que passam no roteamento

FORWARD → para alterar os pacotes sendo roteados

POSTROUTING → para alterar pacotes momentos antes deles partirem para outros hosts

Visão geral da tabela Filter

Entrada
Entrada
Decisão de Roteamento
Decisão de
Roteamento
Visão geral da tabela Filter Entrada Decisão de Roteamento FORWARD Saída INPUT Serviços Locais OUTPUT

FORWARD

Saída
Saída
INPUT Serviços Locais OUTPUT
INPUT
Serviços Locais
OUTPUT

Destinos dos Pacotes

Na tabela Filter, pode-se definir regras que determinam se os pacotes serão:

ACCEPT

Aceitos → Permite que os pacotes passem.

DROP

Descartados → Não permite a passagem dos pacotes e não avisa à origem sobre o descarte.

REJECT

Rejeitados → Rejeita os pacotes e avisam à origem sobre a rejeição

LOG

Logados (Registrados) → Armazena informações do pacote em /var/log/syslog (Obs.: em sistemas tipo Debian)

Exemplo em Filter → INPUT

iptables -I INPUT -s <ip confiável> -j ACCEPT iptables -I INPUT -s <ip suspeito> -j DROP iptables -I INPUT -s <ip suspeito> -j REJECT

-j ACCEPT iptables -I INPUT -s <ip suspeito> -j DROP iptables -I INPUT -s <ip suspeito>

Exemplo em Filter → OUTPUT

iptables -I OUTPUT -p tcp --dport 80 -j DROP iptables -I OUTPUT -p tcp --dport 25 -j REJECT iptables -I OUTPUT -p tcp --dport 22 -j ACCEPT

-p tcp --dport 80 -j DROP iptables -I OUTPUT -p tcp --dport 25 -j REJECT iptables

Manipulando IPTables

Manipulação de regras

Manipulando regras dentro de uma cadeia de regras (chain)

-A → acrescenta nova regra ao fim da lista

-I → acrescenta nova regra ao início da lista

-D pos → remove uma regra da posição pos

-D regra → remove a primeira regra que coincidir

-L → lista as regras na tela

Manipulação de cadeia de regras

Operações para aplicar em uma cadeia de regras (chain)

-N → Cria uma nova cadeia de regras (chain)

-X → Deleta uma cadeia de regras (chain) vazia

-P → Muda a política padrão de uma cadeia de regras (chain)

-F → Apaga todas as regras de uma cadeia de regras (chain)

-Z → Zera os pacotes e os bytes de todas as regras da cadeia de regras (chain)

Mais opções

-s → IP ou Rede de Origem do pacote

Ex: iptables -I INPUT -s 10.10.0.0/16 -j ACCEPT

-d → IP ou Rede de Destino do pacote

Ex: iptables -I OUTPUT -d 10.10.0.0/16 -j ACCEPT

-p → Protocolo do pacote

--dport → porta destino

Ex: iptables -I INPUT -p tcp --dport 80 -j ACCEPT

--sport → porta de origem

Ex: iptables -D OUTPUT -p tcp --dport

-i → interface de origem do pacote

Ex: iptables -I INPUT -i eth0 -j ACCEPT

-o → interface de destino do pacote

Ex: iptables -O OUTPUT -o eth1 -j ACCEPT

! → exclusão

Ex: iptables -O OUTPUT ! -s 10.10.0.1 -j ACCEPT

Visão geral da tabela NAT

Entrada
Entrada
PREROUTING POSTROUTING nat nat Decisão de Roteamento FORWARD filter
PREROUTING
POSTROUTING
nat
nat
Decisão de
Roteamento
FORWARD
filter
POSTROUTING nat nat Decisão de Roteamento FORWARD filter Saída INPUT OUTPUT Serviços Locais filter filter
Saída
Saída
INPUT OUTPUT Serviços Locais filter filter
INPUT
OUTPUT
Serviços Locais
filter
filter

Exemplo de Mascaramento

Liberando acesso ao protocolo http na Internet

Internet → interface eth0

Rede Interna → 10.10.0.0/24

# Habilitando o encaminhamento de pacotes echo 1 > /proc/sys/net/ipv4/ip_forward

# Fornecendo a regra para encaminhamento iptables -t nat -I POSTROUTING \

-s 10.10.0.0/24 -o eth0

-p tcp --dport 80 -j MASQUERADE

\

Mais informações

http://www.netfilter.org

http://focalinux.cipsga.org.br/guia/avancado/ch-fw-

iptables.htm

http://www.zago.eti.br/firewall/dicas-iptables.html

http://www.eriberto.pro.br/iptables

https://help.ubuntu.com/community/IptablesHowTo