Você está na página 1de 64

Firewalls

NAT
Proxy

Gerencia de Redes
Redes de Computadores II

*Crditos: baseado no material do Prof. Dr. Joo Bosco M. Sobral


UFSC
Por que Firewall ?
O mundo respira Internet.
A Internet que o mundo respira no segura.
60% : Internet o principal ponto de invaso.
78% : ameaas, riscos e ataques tendem a
aumentar nos prximos anos.
32% : crackers so os principais invasores.
26% : no conseguem identificar os responsveis.
Por que Firewall ?
Internet

Uma imensa rede descentralizada


e no gerenciada, rodando sob
uma sute de protocolos
denominada IPv4, que no foi
projetada para assegurar a
integridade das informaes e
realizar controles de acesso.
Por que Firewall ?

Existem diversas formas de se


violar uma rede, mas essas formas
nada mais fazem do que se
aproveitar de falhas em servios
de rede e protocolos.
Por que Firewall ?
Um Firewall no possui a funo de
vasculhar pacotes a procura de
assinaturas de vrus.
Um Firewall poder evitar que a rede
interna seja monitorada por Trojans e
que os mesmos troquem informaes
com outros hosts na Internet.
Poder evitar que a rede interna seja
vasculhada por um scanner de
portas.
Por que Firewall ?

Um Firewall poder especificar que


tipos de protocolos e servios de
rede sero disponibilizados, tanto
externa quanto internamente.
Por que Firewall ?
Um Firewall pode controlar os pacotes de
servios no confiveis:
rlogin,
telnet,
FTP,
NFS,
DNS,
LDAP,
SMTP,
Etc...
Kernel e Firewall
Tudo o que chega ou sai de um
computador processado pelo kernel
do sistema operacional desse
computador.

Nos *nix, as funes de Firewall so


agregadas prpria arquitetura do
kernel.
Firewall no *inux

Nos sistemas *nix, no preciso


comprar um Firewall corporativo
carssimo.

Firewall open source, gratuito.


Firewall no BSD, Solaris

Ipfilter
Firewall originalmente utilizado no
OpenBSD, FreeBSD e Solaris.
Utilizado por muitos administradores por
ser seguro e confivel.
Firewall no Linux

Os firewalls existem no Linux desde o kernel 1.1, com


o ipfw, originrio do BSD.

Esse filtro era userspace, ou seja, rodava como um


programa comum no sistema, similarmente ao BIND
(servidor de nomes).

Com o kernel 2.0 veio o ipfwadm, que ainda era uma


ferramenta userspace e controlava as regras de
filtragem do kernel.

Na verso 2.2 do kernel, veio o ipchains (ainda


presente em algumas distribuies) e em 1999, veio o
iptables 2, presente a partir do kernel 2.3.15.
Firewall para Linux
Netfilter e IPTables
kernel 2.4.x
filtragem de pacotes e NAT
IPTables ferramenta de Front-End que
permite configurar o Netfilter.
Firewall no Linux

O iptables um firewall nativo do Linux


e que faz parte do seu kernel e por isto
tem um desempenho melhor que
firewalls instalados como aplicaes.
Com isso, ele bastante seguro e
rpido.
Cadeias e poltica padro
No iptables, existem tabelas de filtragem (chains), e
trs delas so bsicas e no podem ser apagadas:
INPUT, OUTPUT e FORWARD.

A chain INPUT trata dos pacotes de entrada,


aqueles que chegam da rede.

A chain OUTPUT trata dos pacotes de sada, aqueles


que vo para a rede.

E finalmente a chain FORWARD trata do


encaminhamento de pacotes, ou seja, roteamento.
Funes Netfilter / IPTables

Filtro de pacotes.
Mascaramento.
QoS sob trfego.
Suporte a SNAT e DNAT para
redirecionamento de endereos e
portas.
Mascaramento
Tcnica para colocar toda uma rede interna
atrs de um Firewall, usando-se IPs invlidos
(classe A, 10.0.0.0), no sentido de proteger
servidores de invases.
Quando tm-se pouqussimos IPs e tem-se que
disponibilizar o acesso para muitos servidores.
Habilita uma mquina Firewall a traduzir de um
IP vlido para n IPs invlidos internos.
IPTables e Netfilter

Deteco de fragmentos.
Monitoramento de trfego.
Regular a prioridade com TOS (Type of
Service).
Bloqueio a ataques Spoofing, Syn-Flood,
DoS, scanners ocultos, pings da morte, ...
Opo de utilizar mdulos externos para
composio de regras.
Sntese IPTables
Flag
Tabela
Comando
Ao
Alvo

19
Sntese do IPTables
...>iptables [flag] [tabela] [comando]
[parmetro] [alvo]
[flag] : -t

[tabela] : Uma tabela uma rea na memria para


armazenar as regras juntamente com os chains
(parmetros das tabelas).
filter (tabela padro, default se t omitido)
nat (-t nat)
mangle (- mangle)
Comandos no IPTables
[comando] : manipula a tabela atravs das regras e
chains correspondentes.
-A anexa a regra ao fim da lista j existente.
-D apaga a regra especificada.
-L lista as regras existentes na lista.
-P altera a poltica padro de uma cadeia de forma
que todo pacote desta cadeia ficar sujeito a esta
poltica, caso no exista nenhuma regra anterior
que se aplique a mesma..
-F remove todas as regras, ou remove todas as regras
referentes a um determinado chain.
-I insere uma nova regra, mas no incio da lista de
regras.
-R substitui uma regra j adicionada por outra.
-N permite inserir uma nova chain na tabela
especificada.
-E Renomeia uma nova chain criada.
-X apaga uma chain criada pelo administrador do
Firewall.
Aes no IPTables
[parmetro] :
especifica o protocolo,
as interfaces de rede,
endereo de origem do pacote (IP) e mscara
de sub-rede,
endereo de destino do pacote (IP),
exceo a uma determinada regra,
para onde um pacote pode ser direcionado
(alvo),
aplicar filtros com base na porta de origem,
aplicar filtros com base na porta de destino.
Alvos IPTables
[alvo] : quando um pacote se adequa a uma regra, ele
deve ser direcionado a um alvo e quem
especifica a prpria regra.
Os alvos aplicveis so:
ACCEPT
DROP simplesmente descarta, sem aviso
REJECT avisa emissor pacote de resposta
LOG
RETURN
QUEUE
SNAT
DNAT
REDIRECT
TOS
Exemplos

24
Parmetros para a filtragem de
pacotes
-p especifica o protocolo aplicado regra. Se
enquadra aos protocolos da camada de transporte,
como tcp, udp e icmp
Ex: iptables - A INPUT p tcp j ACCEPT
Parmetros para a filtragem de
pacotes
-s especifica a origem (source) do pacote ao qual a
regra deve ser aplicada. A origem pode ser um host ou
uma rede. Nesta opo geralmente utilizamos o IP
seguido de sua sub-rede:

Ex:
iptables A INPUT s 172.16.53.1 j DROP
iptables A INPUT s 172.16.53.1 j ACCEPT
Este comando descarta todo pacote de entrada vindo
da origem 172.16.53.1
O segundo comando aceita todo pacote de entrada
vindo da origem 172.16.53.1
Parmetros para a filtragem de
pacotes
-d especifica o destino do pacote (destination) ao
qual a regra deve ser aplicada. Sua utilizao se d da
mesma maneira que a ao s.

Ex:
iptables A OUTPUT d 172.16.53.1 j DROP
iptables A OUTPUT d 172.16.53.1 j ACCEPT
Este comando descarta todo pacote de sada com
destino mquina 172.16.53.1
O segundo comando aceita todo pacote de sada com
destino mquina 172.16.53.1
Parmetros para a filtragem de
pacotes
-i especifica a interface de entrada a ser utilizada e
como um Firewall possui mais de uma interface esta
regra acaba sendo muito importante para distinguir a
qual interface de rede o filtro deve ser aplicado.

Ex:
iptables A INPUT i eth0 j DROP
O comando permite que todo pacote que entra pela
interface eth0 seja selecionado para ser descartado
pelas regras do firewall.
Parmetros para a filtragem de
pacotes
-o especifica a interface de sada a ser utilizada e se
aplica da mesma forma que a regra i, mas este
parmetro menos usado, pois normalmente nos
preocupamos em impedir que o firewall aceite
conexes em determinadas portas, ao invs de tentar
interceptar as respostas.

Ex:
iptables A FORWARD o eth0 j DROP
O comando permite que todo pacote que sai pela
interface eth0 seja selecionado para ser descartado
pelas regras do firewall.
Parmetros para a filtragem de
pacotes
--sport porta de origem (source port). Com esta
regra possvel aplicar filtros com base na porta de
origem do pacote.
Ex:
iptables A INPUT p tcp -sport 22 j DROP
O comando permite que todo pacote de entrada
usando o protocolo TCP e com origem na porta 22 seja
descartado.
Parmetros para a filtragem de
pacotes
--dport porta de destino (destination port) especifica
a porta de destino do pacote e funciona de forma
similar regra sport.
Ex:
iptables A OUTPUT p tcp -dport 22 j DROP
O comando permite que todo pacote de sada usando
o protocolo TCP e com destino na porta 22 seja
descartado.
Parmetros para a filtragem de
pacotes
-m mac --mac-source a regra que permite especificar
endereos MAC dentro de regras do iptables. Ele uma forma de
dificultar o uso de endereos IP falseados para ganhar acesso ao
servidor, pois permite relacionar o IP ao endereo MAC da placa
instalada. No 100% eficaz pois o endereo MAC pode ser
trocado via ifconfig e ele no vlido para a camada de rede, ou
seja, quando sai da rede local, ele descartado.

iptables -A INPUT p tcp --dport 22 m mac --mac-source


00:1B:24:46:29:88 j DROP
Parmetros para a filtragem de
pacotes
Comando faz com que qualquer pacote de entrada
com destino na porta 22 advindo da mquina que
possua MAC 00:1B:24:46:29:88 seja descartado.

Ex:
iptables -A INPUT p tcp --dport 22 m mac --mac-source
00:1B:24:46:29:88 j REJECT

Comando faz com que qualquer pacote de entrada


com destino na porta 22 advindo da mquina que
possua MAC 00:1B:24:46:29:88 seja rejeitado.
Parmetros para a filtragem de
pacotes
multiport - com o modulo multiport possvel que
especifiquemos mltiplas portas a serem afetadas
pela regra, sob o limite mximo de 15.
EX:
iptables A INPUT p tcp i eth0 m multiport -dport
80,25,53,110 j DROP
Este comando indica em uma s regra por via de
multiport que o firewall descartar (-J DROP)
qualquer pacote que entre pela interface eth0 (-i
eth0) destinado s portas 80,25, 53, 110.
Bloqueando domnios
possvel ainda permitir ou bloquear com base no domnio, tanto
para entrada como para sada. Isto permite bloquear sites e
programas diretamente a partir do firewall, sem precisar instalar
um servidor Squid e configur-lo.

Ex:
Iptables A OUTPUT d www.site.com j DROP
O comando impede que pacotes de sada destinados ao domnio
sejam enviados, ou seja, impede que o domnio seja acessado a
partir da prpria mquina local.
Originalmente o iptables sabia trabalhar apenas com endereos
IP. A possibilidade de criar regras baseadas em domnios so um
recurso um pouco mais recente, onde o firewall faz um lookup
no domnio, para saber qual o IP atual.

Salvando as regras criadas no Firewall

Toda regra criada no Iptables fica gravada em memria


RAM, sendo posteriormente apagada quando o sistema
ligado ou reiniciado.

Para que o administrador de redes no seja obrigado a


ter que refazer todas as regras de firewall sempre que o
sistema ligado, existe um comando do iptables que
possibilita que salvemos as regras criadas em um
arquivo, que depois pode ser usado para restaurar as
regras no firewall.

Para ento salvar as regras criadas em um arquivo,


devemos usar o comando:
Salvando as regras criadas no Firewall

Aps isto, o arquivo criado ter todas as regras


do firewall criadas.

Em uma prxima ocasio quando o sistema for


reiniciado, as regras podem ser restauradas
atravs do comando:
iptables-restore < nome_do_arquivo

Este comando acessar o arquivo e colocar em


memria todas as regras que estavam gravadas
no arquivo.
Detalhes de Mangle

Conceituando TOS
Tabela Mangle

Utilizada para alteraes especiais


como, modificar o tipo de servio
(ToS) de um pacote IPv4.
Estrutura de um pacote IPv4
Verso (4 bits)
Tamanho do Cabealho (4bits)
Tipo de Servio (1 byte)
Tamanho Total (4 bytes)
Identificao (4
bytes)
Flags (3 bits)
Deslocamento do Fragmento (13 bits)
Tempo de Vida (1 byte)
Protocolo TCP / UDP / ICMP (1 byte)
Checksum do Cabealho (4 bytes)
Endereo IP de Origem (4 bytes)
Endereo IP de Destino (4 bytes)
Opes + Padding (4 bytes opcional)
Dados TCP / UDP / ICMP
(at 65.511 ou 65.515 bytes) Segmentos: TCP ou UDP ou ICMP
Conceito de TOS
Controle de trfego destinado a uma
mquina ou rede, atravs do Tipo de Servio.

Permite ento dizer a um Firewall que


qualquer pacote cujo tipo de servio seja,
por exemplo, SSH, deve possuir uma
prioridade de trfego x, e que outros
pacotes cujo tipo de servio seja, por
exemplo, HTTP, deve possuir prioridade
y.
Conceito de TOS

uma forma de dar controle sobre


o trfego de entrada e sada da
rede interna.

Ao invs de criar regras de


bloqueio de trfego via filtragem de
pacotes ou controle de palavras
chaves via Proxy, o TOS propicia o
controle do trfego, simplesmente,
definindo prioridades para os
Nveis de Prioridade TOS
Exemplo de regra de TOS
>iptables t mangle A OUTPUT o
eth0
p tcp dport 22 j TOS set-tos 16

-t mangle : indica uso da tabela


mangle.
-A : inserir esta nova regra ao final
da lista
Mdulos Externos
Uma forma de ampliar a
funcionalidade da ferramenta
IPTables.

Foge do convencional, aplicando


regras que trabalhem sob anlise do
corpo de um pacote.

Um mdulo chamado, quando


anunciado pela opo m <mdulo>.
Mdulos IPTables
Detalhes de NAT

SNAT
DNAT
Proxy Transparente
NAT
uma forma de mascaramento.
Muito utilizado em roteadores.
S que desempenha funo de
encaminhamento de pacotes
(forwarding).
Tcnica til quando se deseja colocar um
servidor Web ou servidor de email, atrs de
um Firewall, usando-se IPs falsos, com
intuito de escond-los contra invases.
IPTables - Tabela NAT
Funes de um Firewall NAT
SNAT (Source Nat)
(traduo de endereo IP de origem)

DNAT (Destination NAT)


(traduo de endereo IP de destino)

Transparent Proxy
Lgica NetFilter (iptables)
Input/Output chain
Forward chain
SNAT

O Firewall altera o endereo IP ou porta


de origem, antes dos pacotes serem
enviados.

O Firewall pode enviar um pacote do host


A ao host B e informar ao host B que
tal pacote foi enviado pelo host C.
SNAT
Qualquer regra aplicada a SNAT utiliza-se
somente da chain POSTROUTING.

Antes de iniciarmos a manipulao de


qualquer regra da Tabela NAT, tem-se que
habilitar a funo de re-direcionamento
(forward) no kernel Linux:
Forward no kernel Linux
O roteamento em um sistema Linux nativo do
kernel, ou seja, ao iniciar o servio de rede, o kernel
j ativou o roteamento de pacotes. O servio roda
inicialmente de uma forma local, roteando apenas os
pacotes da prpria mquina. Para que o kernel possa
rotear pacotes de outras mquinas preciso dizer
que ele deve fazer isso, que feito inserindo o valor
1 no arquivo /proc/sys/net/ipv4/ip_forward.
Forward no kernel Linux
Verificando o valor de ip_forward
# cat /proc/sys/net/ipv4/ip_forward

Mudando o valor de ip_forward


# echo 1 > /proc/sys/net/ipv4/ip_forward

Verificando o novo valor de ip_forward


# cat /proc/sys/net/ipv4/ip_forward

Tambm possvel fazer isso, e de uma forma mais


adequada, editando-se o arquivo /etc/sysctl.conf.
Exemplo 1: SNAT
>iptables t nat A POSTROUTING s
10.0.3.1 o eth1 j SNAT to 192.111.22.33
Com IPTables informamos ao Netfilter que atribua
tabela NAT (-t nat) sob o chain (POSTROUTING)
(os pacotes devem ser modificados aps o
tratamento de roteamento).
Uma nova regra (-A) ao fim da lista.
Qualquer pacote que tenha como origem o host
10.0.3.1 (-s 10.0.3.1) e que deve sair pela
interface eth1 (-o eth1) deve ter seu endereo
de origem alterado (-j SNAT) para
192.111.22.33 (to 192.111.22.33).
Exemplo 2: SNAT
>iptables t nat A POSTROUTING s 10.0.3.0/8 o
eth0 j SNAT to 192.111.22.33

Com IPTables informamos ao Netfilter que atribua tabela


NAT (-t nat) sob o chain (POSTROUTING) (os pacotes devem
ser modificados aps o tratamento de roteamento).

Uma nova regra (-A) ao fim da lista.

Qualquer pacote que tenha como origem o host 10.0.3.0/8


(-s 10.0.3.1/8) e que deve sair pela interface eth0 (-o
eth0) deve ter seu endereo de origem alterado (-j
SNAT) para 192.111.22.33 (to 192.111.22.33).
Exemplo 3: SNAT
>iptables t nat A POSTROUTING s 10.0.3.1 o eth0 j
SNAT to 192.111.22.33-192.111.22.66

Com IPTables informamos ao Netfilter que atribua tabela


NAT (-t nat) sob o chain (POSTROUTING) (os pacotes devem
ser modificados aps o tratamento de roteamento).
Uma nova regra (-A) ao fim da lista.
Qualquer pacote que tenha como origem o host 10.0.3.1 (-
s 10.0.3.1) e que deve sair pela interface eth0 (-o eth0)
deve ter seu endereo de origem alterado (-j SNAT)
para qualquer IP na faixa 192.111.22.33 192.111.22.66 (
to 192.111.22.33-192.111.22.66).
DNAT
Altera o endereo IP ou porta de destino,
dos pacotes que atravessam o Firewall, antes
do pacote ser enviado ao seu destino final.

Receber um pacote destinado porta 80 do


host A e encaminh-lo porta 3128 do host
B.

Possibilita o desenvolvimento de:


Proxies transparentes,
Balanceamento de carga.
DNAT
Usar somente o chain PREROUTING.

Antes de iniciarmos a manipulao de


qualquer regra da Tabela NAT, tem-se que
habilitar a funo de re-direcionamento
(forward) no kernel Linux:

>echo 1 > /proc/sys/net/ipv4/ip_forward


Exemplo 1: DNAT
>iptables t nat A PREROUTING s 10.0.3.1
i eth1 j DNAT to 192.111.22.33
Com IPTables informamos ao Netfilter que atribua
tabela NAT (-t nat) sob o chain (PREROUTING) (os
pacotes devem ser redirecionados logo que
chegam).
Uma nova regra (-A) ao fim da lista.
Qualquer pacote que tenha como origem o host
10.0.3.1 (-s 10.0.3.1) e que entre pela interface
eth1 (-i eth1) deve ter seu endereo de destino
alterado (-j DNAT) para 192.111.22.33 (to
192.111.22.33)
Exemplo 2: DNAT
>iptables t nat A PREROUTING i eth0 j
DNAT to 192.11.22.10-192.11.22.13
Com IPTables informamos ao Netfilter que atribua
tabela NAT (-t nat) sob o chain PREROUTING (os
pacotes devem ser redirecionados logo que
chegam).
Uma nova regra (-A) ao fim da lista.
E que qualquer pacote que entre na interface eth0 (-i
eth0), independente de quem o enviou deve ser
automaticamente redirecionado aos hosts
192.11.22.10, 192.11.22.11, 192.11.22.12,
192.11.22.13 (to 192.11.22.10-192.11.22.13).
Exemplo 3: DNAT
>iptables t nat A PREROUTING i eth2 j
DNAT to 192.11.22.58:22

Com IPTables informamos ao Netfilter que atribua


tabela NAT (-t nat) sob o chain PREROUTING (os
pacotes devem ser redirecionados logo que chegam).
Uma nova regra (-A) ao fim da lista.
E qualquer pacote que entre na interface eth2 (i
eth2), independente de quem o enviou, deve ser
automaticamente redirecionado ao host 192.11.22.58
(to 192.11.22.58:22), e, independente da porta
solicitada, dever ser enviado porta 22 (servio SSH).

Você também pode gostar