Você está na página 1de 64

Orientador:

Mirla Rocha de Oliveira Ferreira


Bacharel em Engenharia da Computao
Orientadora do Curso de Formao Profissional em
Redes de Computadores - SENAC

Tema do Minicurso:

Firewall IPTABLES

Carga horria 3h

Linux - Reviso
Sistema Operacional operante desde de 1991,
criado por Linus Torvalds, na de Helsinki na
Finlndia.
Possui cdigo aberto (open source), liberado como
software livre (free software).

Linux - Reviso
Cdigo aberto X software livre:
A diferena est nos objetivos, filosofia e modo de agir,
no nos softwares ou licenas.
O cdigo aberto regido pela organizao
Open Source Initiative (OSI).
O software livre caracterizado pelo
movimento Free Software Foundation (FSF).

Linux - Reviso
Cdigo aberto:

Distribuio livre;
Acesso ao cdigo-fonte;
Permisso para criao de trabalhos derivados;
Integridade do autor do cdigo-fonte;
No discriminao contra pessoas ou grupos;
No discriminao contra reas de atuao;
Distribuio da licena;
Licena no especfica a um produto;
Licena no restritiva a outros programas;
Licena neutra em relao tecnologia.

Linux - Reviso
Software livre:

liberdade de executar o programa, para qualquer


propsito (liberdade 0);
liberdade de estudar como o programa funciona e
adapt-lo s suas necessidades (liberdade 1), sendo o
acesso ao cdigo-fonte um pr-requisito para esta
aspecto;
liberdade de distribuir cpias de forma que voc possa
ajudar ao seu prximo (liberdade 2);
liberdade de melhorar o programa e liberar os seus
aperfeioamentos, de modo que toda a comunidade se
beneficie (liberdade 3). Novamente, aqui o acesso ao
cdigo-fonte um pr-requisito.

Linux - Reviso
Sendo
assim,
tem-se
maior
estabilidade,
velocidade e novos recursos adicionados ao
sistema.

Linux - Reviso
O LINUX NO VULNERVEL A VRUS!
H maior dificuldade de ao de vrus devido s
restries de acesso ao sistema de arquivos e
execuo, onde a separao de privilgios entre
processos rigorosa e as recomendaes do
padro de poltica de segurana so respeitadas.

Arquivos de Log
Encontram-se em /var/log
Registram tudo o que acontecem com o kernel,
com os daemons e utilitrios do sistema.
Kernel: o ncleo do sistema operacional. Controla todo o hardware
do computador. a interface entre os programas e o hardware,
permitindo a execuo dos processos e compartilhamento da
memria.
Daemons: programa que no precisa do controle do usurio para
rodar no sistema. Funciona em background, ou seja, em segundo
plano, junto com o sistema. Normalmente, so iniciados no
processo de boot e lidam com requisies diversas, como de rede,
servios e atividades do hardware.

).

Firewall
Programa que aplica uma poltica de segurana
impedindo a recepo de dados no autorizados
em uma rede/computador.
Atua como uma defesa, controlando o acesso ao
sistema por meio de regras e a filtragem de dados.
O Iptables o firewall do Linux.

Firewall - Iptables
Regras:
Comandos passados realizar uma determinada ao (como
bloquear ou deixar passar um pacote) de acordo com o
endereo/porta de origem/destino, interface de origem/destino, etc.
So armazenadas dentro dos chains e processadas na ordem que
so inseridas.
Como as regras se perdem a cada vez que o computador for
reiniciado, devem-se ser gravadas em um arquivo para serem
carregadas a cada inicializao.
Um exemplo de regra:
iptables -A INPUT -s 192.168.102.15 -j DROP

Firewall - Iptables
Chains:
Locais onde as regras so armazenadas para operao
do firewall.
Existem dois tipos de chains: os embutidos (como os
chains INPUT, OUTPUT e FORWARD) e os criados pelo
usurio. Os nomes dos chains embutidos devem ser
especificados sempre em maisculas (chain input
completamente diferente de INPUT).

Firewall - Iptables
Tabela:
Locais usados para armazenar os chains e conjunto de
regras com uma determinada caracterstica em comum.
As tabelas podem ser referenciadas com a opo -t
tabela. Para facilitar o funcionamento e a gerncia, o
iptables divide as ACLs em tabelas, cada qual com um
funo especfica.
Existem 3 tabelas disponveis no iptables: filter, nat e
mangle.
Daremos enfoque tabela filter.

Firewall - Iptables
Tabela filter
Tabela padro do Iptables, composto por 3 chains:
INPUT - Consultado para dados que chegam mquina.
OUTPUT - Consultado para dados que saem da mquina.
FORWARD - Consultado para dados que so redirecionados
para outra mquina

Firewall IPTABLES
Introduo
O Iptables um firewall em nvel de pacotes e
funciona
baseado
no
endereo/porta
de
origem/destino do pacote, prioridade, etc.
Nvel de pacotes: muito utilizado em redes pequenas ou de
porte mdio. Por meio de um conjunto de regras estabelecidas,
determina que endereos IPs e dados podem estabelecer
comunicao e/ou transmitir/receber dados. Sendo assim, pode
negar o pacote (DROP) ou deix-lo passar (ACCEPT).
Nvel de aplicao usado em computadores servidores e no
permite comunicao direta entre a rede e a Internet. Analisam o
contedo do pacote para tomar suas decises de filtragem.

Firewall IPTABLES
Introduo
Funciona atravs da comparao de regras para saber
se um pacote tem ou no permisso para passar.
Em firewalls mais restritivos, o pacote bloqueado e
registrado para que o administrador do sistema tenha
conhecimento sobre o que est acontecendo em seu
sistema.
Totalmente implementado no kernel do sistema
operacional, garantindo maior nvel de segurana na
filtragem.

Firewall IPTABLES
Introduo
Pode ser usado para modificar e monitorar o
trfego da rede, fazer NAT (masquerading, source
nat, destination nat), redirecionamento de pacotes,
marcao de pacotes, modificar a prioridade de
pacotes que chegam/saem do seu sistema,
contagem de bytes, dividir trfego entre mquinas,
criar protees anti-spoofing, contra syn flood,
DoS, etc.

Firewall IPTABLES
Introduo
IP Masquerading: permite usar o computador como um roteador
para redes de pequeno porte.
SNAT (Source Network Address Translation): reescreve a fonte e
/ ou destino de pacotes IP quando passam por um routeador ou
firewall.
DNAT (Destination Network Address Translation): muda o IP de
destino de um pacote em rota para outro IP. Usada para publicar
um servio a partir de uma rede interna de um IP acessvel ao
pblico.

Firewall IPTABLES
Introduo
O trfego vindo de mquinas desconhecidas da
rede pode ser bloqueado/registrado atravs do uso
de simples regras.
O iptables garante grande flexibilidade na
manipulao das regras de acesso ao sistema,
precisando apenas conhecer quais interfaces o
sistema possui, o que deseja bloquear, o que tem
acesso garantido, quais servios devem estar
acessveis para cada rede.

Firewall IPTABLES
Introduo
Para o bom funcionamento, necessrio
conhecimentos bsicos de rede tcp/ip, roteamento
e portas, para criar as regras que faro a
segurana do sistema. A segurana depende do
controle das regras que sero criadas.
importante lembrar que as falhas humanas so
garantia de mais de 95% de sucesso nas invases.

Firewall IPTABLES
O que proteger?
preciso ter conhecimento de quais servios
devem ter acesso garantido a usurios externos e
quais sero bloqueados a todas/determinadas
mquinas recomendvel bloquear o acesso a
todas portas menores que 1024, por executarem
servios que rodam com privilgio de usurio root,
e autorizar somente o acesso as portas que
realmente deseja.

Firewall IPTABLES
O que proteger?
Servios com autenticao em texto plano e
potencialmente inseguros como rlogin, telnet, ftp,
NFS, DNS, LDAP, SMTP RCP, X-Window so
servios que devem ser ter acesso garantido
somente para mquinas/redes que voc confia.
Estes servios podem ser usados para tentativa de
acesso ao seu sistema e tambm como mscara
de ataques a outros sistemas.

Firewall IPTABLES
O que proteger?
A configurao do firewall ajuda a impedir o envio
de pacotes mesmo quando um servio estiver mal
configurado. Se, por exemplo, uma mquina
Windows da rede for infectada por um trojan, o
firewall poder estar configurado para bloquear
qualquer tentativa de conexo vinda da internet
(cracker) para as mquinas da rede.

Firewall IPTABLES
O que proteger?
Deve-se saber quais mquinas tero acesso livre e
quais sero restritas.
Deve-se saber quais servios devero ter
prioridade no processamento.
Deve-se saber quais mquinas/redes NUNCA
devero ter acesso a certas/todas mquinas.

Firewall IPTABLES
O que proteger?
Deve-se saber o volume de trfego que o servidor
manipular. Atravs disso, pode-se balancear o
trfego entre outras mquinas, configurar
protees contra DoS, syn flood, etc.
Deve-se saber o que tem permisso de passar de
uma rede para outra (em mquinas que atuam
como roteadores/gateways de uma rede interna).
Etc.

Firewall IPTABLES
Prtica
Para a manipulao das regras armazenadas nas suas
tabelas, o iptables fornece os seguintes comandos:
-A : adiciona uma nova regra no final da lista de regras de uma dada
tabela;
-L : lista todas as regras de uma determinada tabela;
-P : define a poltica padro uma tabela, ou seja a regra padro que
ser aplicada a um fluxo quando ele passar por todas as demais;
-F : remove todas as regras de uma tabela sem alterar sua poltica
padro;
-N : cria nova nova chain na tabela especificada;
-X : apaga todas as chains de uma determinada tabela;

Firewall IPTABLES
Prtica
Aes do iptables
As aes permitem categorizar melhor as regras, fornecendo um
tratamento mais detalhado sobre quais pacotes devero ser
manipulados. As principais aes fornecidas pelo iptables so
listadas abaixo:

-p : especifica qual protocolo ser manipulado (TCP, UDP ICMP, etc..);


-i : especifica a interface pela qual o pacote deve entrar (eth0, eth1, ppp0, ppp+);
-o : especifica a interface pela qual o pacote deve sair (eth0, eth1, ppp0, ppp+);
-s : informa a origem do pacote.
sport : informa a porta a partir da qual o pacote ser enviado, porta de origem;
-d : informa o destino do pacote;
dport : informa a porta de destino do pacote;
-j : informa o de deve ser feito com o pacote, ou seja o alvo da regra

Firewall IPTABLES
Prtica
Alvos da regras
Aes referentes ao enquadramento dos fluxos por uma regra.
ACCEPT : permite a entrada ou a sada ou o forward do pacote;
DROP : descarta o pacote, sem comunicar a origem que o mesmo foi rejeitado,
ideal para ocultar a existncia do firewall;
REJECT : descarta o pacote informando a origem que ele foi rejeitado pelo
destino;
LOG : registra o pacote em um arquivo de log que pode ser especificado atravs
dos nveis de log do sistema, mas por default as mensagens so enviadas para o
arquivo /var/log/messages;
SNAT : altera o endereo de origem do pacote que atendeu as caractersticas
especificadas;
DNAT : altera o endereo de destino do pacote;
REDIRECT : redireciona o pacote para uma porta diferente.

Firewall IPTABLES
Prtica

Adicionando regras - A
Como exemplo vamos criar uma regra que bloqueia o acesso a nosso prpria mquina
(127.0.0.1 - loopback). Primeiro daremos um ping para verificar seu funcionamento:

#ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.6 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.5 ms
--- 127.0.0.1 ping statistics --2 packets transmitted, 2 packets received, 0% packet loss

A mquina responde! Agora vamos incluir uma regra no chain INPUT (-A INPUT) que
bloqueie (-j DROP) qualquer acesso indo (com destino) ao endereo 127.0.0.1 (-d
127.0.0.1):
iptables -t filter -A INPUT -d 127.0.0.1 -j DROP
Agora verificamos um novo ping.

Firewall IPTABLES
Prtica
#ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
--- 127.0.0.1 ping statistics --2 packets transmitted, 0 packets received, 100% packet loss
Desta vez, a mquina 127.0.0.1 no respondeu, pois todos os pacotes com o destino
127.0.0.1 (-d 127.0.0.1) so rejeitados (-j DROP). A opo -A usada para adicionar
novas regras no final do chain. Alm de -j DROP que serve para rejeitar os pacotes,
podemos tambm usar -j ACCEPT para aceitar pacotes. A opo -j chamada de alvo da
regra, pois define o destino do pacote que atravessa a regra.
Voc est na base de um sistema de firewall!

Firewall IPTABLES
Prtica

Listando regras - L
A seguinte sintaxe usada para listar as regras criadas:
iptables [-t tabela] -L [chain] [opes]
Onde:
tabela uma das tabelas usadas pelo iptables. Se a tabela no for especificada, a tabela
filter ser usada como padro.
chain Um dos chains disponveis na tabela acima ou criado pelo usurio. Caso o chain
no seja especificado, todos os chains da tabela sero mostrados.
opes As seguintes opes podem ser usadas para listar o contedo de chains:
-v Exibe mais detalhes sobre as regras criadas nos chains.
-n Exibe endereos de mquinas/portas como nmeros ao invs de tentar resoluo DNS.
-x Exibe nmeros exatos ao invs de nmeros redondos. Tambm mostra a faixa de
portas de uma regra de firewall.
--line-numbers Exibe o nmero da posio da regra na primeira coluna da listagem.

Firewall IPTABLES
Prtica

Listando regras - L
Para listar a regra criada anteriormente usamos o comando:
#iptables -t filter -L INPUT

Chain INPUT (policy ACCEPT)


target prot opt
source
DROP all
-anywhere

destination
localhost

Firewall IPTABLES
Prtica

Listando regras - L
#iptables -L INPUT -n
Chain INPUT (policy ACCEPT)

target
DROP

prot opt source


all
-- 0.0.0.0/0

destination
127.0.0.1

#iptables -L INPUT -n --line-numbers


Chain INPUT (policy ACCEPT)

num
1

target
DROP

prot opt
all
--

source
0.0.0.0/0

destination
127.0.0.1

#iptables -L INPUT -n -v
Chain INPUT (policy ACCEPT 78 packets, 5820 bytes)

pkts
2

bytes
194

target prot
DROP icmp

opt in out
-- * *

source
0.0.0.0/0

destination
127.0.0.1

Firewall IPTABLES
Prtica

Apagando uma regra D


Usamos a mesma sintaxe para criar a regra no chain, mas trocamos -A por -D:
iptables -t filter -D INPUT -d 127.0.0.1 -j DROP

Ento, a regra correspondente no chain INPUT ser automaticamente apagada.


Caso o chain possua vrias regras semelhantes, somente a primeira ser
apagada.

Firewall IPTABLES
Prtica

Inserindo uma regra I


Precisamos que o trfego vindo de 192.168.1.15 no seja rejeitado pelo nosso
firewall. No podemos adicionar uma nova regra (-A) pois esta seria includa no
final do chain e o trfego seria rejeitado pela primeira regra (nunca atingindo a
segunda). A soluo inserir a nova regra antes da regra que bloqueia todo o
trfego ao endereo 127.0.0.1 na posio 1:

iptables -t filter -I INPUT 1 -s 192.168.1.15 -d 127.0.0.1 -j ACCEPT


Aps este comando, temos a regra inserida na primeira posio do chain
(repare no nmero 1 aps INPUT) e a antiga regra nmero 1 passa a ser a
nmero 2. Desta forma a regra acima ser consultada, se a mquina de origem
for 192.168.1.15 ento o trfego estar garantido, caso contrrio o trfego com
o destino 127.0.0.1 ser bloqueado na regra seguinte.

Firewall IPTABLES
Prtica

Substituindo uma regra - R


Aps criar nossa regra, percebemos que a nossa inteno era somente bloquear os pings
com o destino 127.0.0.1 (pacotes ICMP) e no havia necessidade de bloquear todo o
trfego da mquina. Existem duas alternativas: apagar a regra e inserir uma nova no lugar
ou modificar diretamente a regra j criada sem afetar outras regras existentes e mantendo
a sua ordem no chain (isso muito importante). Use o seguinte comando:
iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP
O nmero 2 o nmero da regra que ser substituda no chain INPUT e deve ser
especificado. O comando acima substituir a regra 2 do chain INPUT (-R INPUT 2)
bloqueando (-j DROP) qualquer pacote icmp (-p icmp) com o destino 127.0.0.1 (-d
127.0.0.1).

Firewall IPTABLES
Prtica
ICMP - Internet Control Message Protocol - um protocolo que faz parte da
pilha TCP/IP, enquadrando-se na camada de rede (nvel 3), a mesma
camada do protocolo IP - Internet Protocol. O uso mais comum feito pelos
utilitrios ping e traceroute. O ping evia pacotes ICMP para verificar se um
determinado host est disponvel na rede. O traceroute faz uso do envio de
diversos pacotes UDP ou ICMP e, atravs de um pequeno truque, determina
a rota seguida para alcanar um host.

Firewall IPTABLES
Prtica

Criando um nova chain N

O tamanho mximo de um nome de chain de 31 caracteres e podem conter tanto letras


maisculas quanto minsculas.
iptables [-t tabela] [-N novachain]

Para criar o chain internet (que pode ser usado para agrupar as regras de internet)
usamos o seguinte comando:
iptables -t filter -N internet

Firewall IPTABLES
Prtica

Renomeando um chain criado pelo usurio E


Se, por algum motivo, precisar renomear um chain criado por voc na tabela
filter, nat ou mangle, poder usar a opo -E do iptables:
iptables -t filter -E chain-antigo novo-chain
No possvel renomear os chains defaults do iptables.

Firewall IPTABLES
Prtica

Limpando as regras de um chain - F


Para limpar todas as regras de um chain, use a seguinte sintaxe:
iptables [-t tabela] [-F chain]
Onde:
tabela Tabela que contm o chain que desejamos zerar.
chain Chain que desejamos limpar. Caso um chain no seja especificado, todos
os chains da tabela sero limpos.
iptables -t filter -F INPUT
iptables -t filter -F

Firewall IPTABLES
Prtica

Apagando um chain criado pelo usurio - X


Para apagarmos um chain criado pelo usurio, usamos a seguinte sintaxe:
iptables [-t tabela] [-X chain]

Onde:
tabela Nome da tabela que contm o chain que desejamos excluir.
chain Nome do chain que desejamos apagar. Caso no seja especificado, todos os chains
definidos pelo usurio na tabela especificada sero excludos.
OBS: Chains embutidos nas tabelas no podem ser apagados pelo usurio.
iptables -t filter -X internet
iptables -X

Firewall IPTABLES
Prtica

Especificando a poltica padro de um chain - P


A poltica padro determina o que acontecer com um pacote quando ele chegar ao final
das regras contidas em um chain. A poltica padro do iptables "ACCEPT" mas isto pode
ser alterado com o comando:
iptables [-t tabela] [-P chain] [ACCEPT/DROP]
Onde:
ACCEPT/DROP ACCEPT aceita os pacotes caso nenhuma regra do chain conferir e
DROP rejeita os pacotes caso nenhuma regra do chain conferir
iptables -t filter -P INPUT DROP
As polticas de acesso PERMISSIVAS (ACCEPT) normalmente so usadas em conjunto
com regras restritivas, onde tudo bloqueado e o que sobrar liberado. As polticas
RESTRITIVAS (DROP) so usadas em conjunto com regras permissivas, onde tudo
liberado e o que sobrar bloqueado pela poltica padro.

Firewall IPTABLES
Prtica

Especificando um endereo de origem/destino


As opes -s (ou --src/--source) e -d (ou --dst/--destination) servem para especificar
endereos de origem e destino respectivamente. Pode-se usar um endereo IP completo
(como 192.168.1.1), um hostname, um endereo fqdn (www.debian.org) ou um par
rede/mscara (como 200.200.200.0/255.255.255.0 ou 200.200.200.0/24).
Caso um endereo/mscara no sejam especificados, assumido 0/0 como padro
(todos as mquinas de todas as redes). A interpretao dos endereos de origem/destino
dependem do chain que est sendo especificado (como INPUT e OUTPUT por exemplo).
OBS: Caso seja especificado um endereo fqdn e este resolver mais de um endereo IP,
sero criadas vrias regras, cada uma se aplicando a este endereo IP especfico.
recomendvel sempre que possvel a especificao de endereos IP's nas regras, pois
alm de serem muito rpidos (no precisam de resoluo DNS), so mais seguros para
evitar que firewall seja enganado por um ataque de IP spoofing.

Firewall IPTABLES
Prtica
# Bloqueia o trfego vindo da rede 200.200.200.*:
iptables -A INPUT -s 200.200.200.0/24 -j DROP
# Bloqueia conexes com o destino 10.1.2.3:
iptables -A OUTPUT -d 10.1.2.3 -j DROP

# Bloqueia o trfego da mquina www.meusite.com a rede 210.1.1.1


iptables -A INPUT -s www.meusite.com -d 210.21.1.1 -j DROP

Firewall IPTABLES
Prtica

Especificando um protocolo
A opo -p (ou --protocol) usada para especificar protocolos no iptables.
Podem ser especificados os protocolos tcp, udp e icmp. Por exemplo, para
rejeitar todos os pacotes UDP vindos de 200.200.200.200:
iptables -A INPUT -s 200.200.200.200 -p udp -j DROP

Firewall IPTABLES
Prtica

Especificando portas de origem/destino


As portas de origem/destino devem ser especificadas aps o protocolo e podem ser
precedidas por uma das seguintes opes:
--source-port ou --sport - Especifica uma porta ou faixa de portas de origem.
--destination-port ou --dport - Especifica uma porta ou faixa de portas de destino.
Uma faixa de portas pode ser especificada atravs de PortaOrigem:PortaDestino
# Bloqueia qualquer pacote indo para 200.1.1.1 na faixa de portas 0 a 1023
iptables -A OUTPUT -d 200.1.1.1 -p tcp --dport :1023 -j DROP
Caso a PortaOrigem de uma faixa de portas no seja especificada, 0 assumida
como padro.
Caso a PortaDestino no seja especificada, 65535 assumida como padro.

Firewall IPTABLES
Prtica
A tabela nat (Network Address Translation) - fazendo nat
A tabela nat serve para controlar a traduo dos endereos que
atravessam o cdigo de roteamento da mquina, ou seja, responsvel
pelo controle dos pacotes que passam pelo host, cuja origem ou destino
no o mesmo. Existem 3 chains na tabela nat: PREROUTING,
OUTPUT e POSTROUTING .
A traduo de endereos tem inmeras utilidades, uma delas o
Masquerading, onde mquinas de uma rede interna podem acessar a
Internet atravs de uma mquina Linux. Nenhuma mquina da Internet
poder ter acesso direto as mquinas da rede interna via SNAT .

Firewall IPTABLES
Prtica
Para ligar a rede na Internet existem duas opes:
Voc possui uma conexo que lhe oferece um endereo IP dinmico
(a cada conexo dado um endereo IP - como uma conexo PPP),
ento precisamos do IP masquerading.
Voc tem uma conexo que lhe oferece um endereo IP permanente
(ADSL, por exemplo), ento precisamos do SNAT.
Vamos dar enfoque a criao rpida de uma conexo IP masquerading,
entendendo a traduo de endereos no iptables.

Firewall IPTABLES
Prtica
Fazendo IP masquerading
O kernel dever ter suporte ao iptables. Com os dois comandos abaixo,
habilitamos o masquerading para todas as mquinas da rede
192.168.1.*:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
Aps definir as regras de NAT, execute o comando seguinte para
habilitar o suporte a redirecionamento de pacotes no kernel.
echo "1" >/proc/sys/net/ipv4/ip_forward

Firewall IPTABLES
Prtica
A configurao do servidor Linux est completa. Agora, os
clientes da rede precisaro ser configurados para usar o
endereo IP do servidor Linux como gateway.
recomendvel instalar um servidor proxy e DNS na
mquina Linux para acelerar o desempenho das
requisies/ resoluo de nomes das mquinas em rede.

Firewall IPTABLES
Prtica
Fazendo SNAT
SNAT (source nat - nat no endereo de origem) consiste em modificar o
endereo de origem das mquinas clientes antes dos pacotes serem
enviados. A mquina roteadora inteligente o bastante para lembrar
dos pacotes modificados e reescrever os endereos assim que obter a
resposta da mquina de destino, direcionando os pacotes ao destino
correto. necessrio especificar SNAT como alvo (-j SNAT) quando
desejar que as mquinas de da rede interna tenha acesso a Internet
atravs do IP fixo da mquina Linux. O parmetro --to IP:portas deve ser
usado aps o alvo SNAT. Ele serve para especificar um endereo IP,
faixa de endereos e opcionalmente uma porta ou faixa de portas que
ser substituda.

Firewall IPTABLES
Prtica
Toda operao de SNAT feita no chain POSTROUTING.
Modifica o endereo IP dos pacotes vindos da mquina 192.168.1.2 da
rede interna, que tem como destino a interface eth1 para
200.200.217.40 (que o nosso endereo IP da interface ligada a
Internet).
iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j SNAT --to
200.200.217.40

Firewall IPTABLES
Prtica
Os pacotes indo para a Internet (a conexo feita via eth1, a interface externa)
vindo do endereo 192.168.1.2, so substitudos por 200.241.200.40 e enviados
para fora. Quando a resposta a requisio retornada, a mquina com iptables
recebe os pacotes e faz a operao inversa, modificando o endereo
200.241.200.40 novamente para 192.168.1.2 e enviando a resposta para a
mquina da rede interna .
Tambm possvel especificar faixas de endereos e portas que sero
substitudas.
Modifica o endereo IP de origem de todas as mquinas da rede 192.168.1.0/24
que tem o destino a interface eth0 para 200.241.200.40 a 200.241.200.50. O
endereo IP selecionado escolhido de acordo com o ltimo IP alocado.
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to
200.2.217.40-200.2.217.50

Firewall IPTABLES
Prtica
Idntico ao anterior, mas faz somente substituies na faixa de portas de origem
de 1 a 1023.
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to
200.2.217.40-200.2.217.50:1-1023
Faz o mapeamento para a faixa de portas 200.2.217.40 a 200.2.217.50 e de
200.2.217.70 a 200.2.217.73.
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to
200.2.217.40-200.2.217.50 --to 200.2.217.70-200.2.217.73
OBS: Se por algum motivo no for possvel mapear uma conexo NAT, ela ser
derrubada.

Firewall IPTABLES
Prtica

Fazendo DNAT
DNAT (Destination nat - nat no endereo de destino) consiste em modificar o
endereo de destino das mquinas clientes. O destination nat muito usado
para fazer redirecionamento de pacotes, proxyes transparentes e
balanceamento de carga. Toda operao de DNAT feita no chain
PREROUTING.

Modifica o endereo IP destino dos pacotes de 200.200.217.40 vindo da


interface para 192.168.1.2.
iptables -t nat -A PREROUTING -s 200.200.217.40 -i eth0 -j DNAT --to
192.168.1.2

Firewall IPTABLES
Prtica
Tambm possvel especificar faixas de endereos e portas que sero substitudas no
DNAT. Modifica o endereo IP de destino do trfego vindos da interface 192.168.1.0/24
para um IP de 200.241.200.40 a 200.241.200.50. Este um excelente mtodo para fazer
o balanceamento de carga entre servidores. O endereo IP selecionado escolhido de
acordo com o ltimo IP alocado.
iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 200.2.217.40200.2.217.50
Idntico ao anterior, mas faz somente substituies na faixa de portas de destino de 1024
a 5000.
iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -j DNAT --to 200.2.217.40200.2.217.50:1024:5000

No se esquea de conferir se o ip_forward est ajustado para 1: echo "1" >


/proc/sys/net/ipv4/ip_forward.

Exemplos
Scripts de Firewall
Firewall para bloquear todo o fluxo de dados, s liberando o
fluxo na interface lo
# definindo as regras padro
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# liberando a interface lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Exemplos
Scripts de Firewall
Firewall para liberar o acesso servio http, para acesso
externo ( eth1) e acesso pela intranet (eth0) na porta 8080.
# definindo as regras padro
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# definindo as regras de filtragem ao HTTP e HTTPS
iptables -A INPUT -p tcp --dport 80 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT

Exemplos
Scripts de Firewall
Firewall para um servidor que hospeda os servios: http (80), https
(443), imap (143), pop3 (110), smtp (25), ftp (21), ssh (22). Todos os
servios podem ser acessados pela intranet (eth1) e os nicos servios
que podem ser acessados pela internet (eth0) so o http e o https.
# definindo as regras padro
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# liberando acesso pela internet (eth0)
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT

Exemplos
Scripts de Firewall
# liberando acesso pela internet (eth1)
iptables -A INPUT -p tcp --dport 80 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 143 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -i eth1 -j ACCEPT

Exemplos
Scripts de Firewall
Firewall para um servidor que proiba qualquer pacote oriundo da LAN
192.168.254.0/24 e possa ser direcionado ao site www.topfotos.com;
permitir a entrada de pacotes oriundos do site www.orkut.com; todos
os pacotes oriundos da interface eth1 do firewall devem ser
redirecionados para o computador 192.168.254.254; descarte todos os
pacotes oriundos do ip 200.255.96.171 e destinado ao IP
192.168.254.7; todos os pacotes destinados porta 23 devem ser
registrados e posteriormente descartados.
# poltica padro
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

Exemplos
Scripts de Firewall
# liberando o trfego na interface lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# pacotes que entram no firewall
iptables -A INPUT -p tcp -dport 23 -j LOG [firewall] acesso ao servio de telnet
iptables -A INPUT -p tcp -dport 23 -j DROP
# regras de forward
iptables -A FORWARD -s 192.168.254.0/24 -d www.topfotos.com -j DROP
iptables -A FORWARD -d 192.168.254.0/24 -s www.orkut.com -j ACCEPT
iptables -A FORWARD -s 200.255.96.171 -d 192.168.254.7 -j DROP
iptables -A FORWARD -i ! eth1 -j DROP
iptables -A FORWARD -o ! eth0 -j DROP

Exemplos
Scripts de Firewall
Firewall para compartilhamento do Acesso a Internet
# libera forward no kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
# Poltica padro
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# liberando acesso a interface lo
iptables -A INPUT -i lo -J ACCEPT

Exemplos
Scripts de Firewall
# libera a entrada de conexes iniciadas pela mquina
iptables -A INPUT -m state -state ESTABLISHED,RELATED -j ACCEPT
# bloqueia entrada na rede de conexes invlidas
iptables -A FORWARD -m state -state NEW,INVALID -j DROP
# hablitando o macascaramento com ip dinmico
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j MASQUERADE
# libera a entrada de conexes iniciadas pela rede
iptables -A FORWARD -o eth0 -m state -state ESTABLISHED,RELATED -j
ACCEPT
# habilita o forward vinda da rede interna
iptables -A FORWARD -i eth1 -s 192.168.254.0/24 -J ACCEPT