Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Aula 8.3 - Iptables Tabela NAT
1. Firewall Iptables - NAT
Prof. Andrei Carniel
Universidade Tecnológica Federal do Paraná – UTFPR
E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com
2. NAT – Network Address Translator
• NAT – Network Address Translator (Tradutor de Endereço de Rede)
• Existem vários recursos que utilizam NAT. Os mais conhecidos são:
▫ --> Mascaramento (masquerading)
▫ --> Redirecionamento de portas (port forwarding ou PAT)
▫ --> Redirecionamento de servidores (forwarding)
▫ --> Proxy transparente (transparent proxy)
▫ --> Balanceamento de carga (load balance)
2
3. NAT – Mascaramento (1/3)
• O mascaramento é uma forma de fazer NAT (Network Address
Translation).
• Com isso, é possível fazer uma rede privada navegar na Internet. A
rede solicita os dados para a máquina que faz o mascaramento. Essa
busca tais dados na Internet...
3
5. NAT – Mascaramento (3/3)
• No entanto, um host da Internet, por vontade própria, não consegue
ultrapassar o filtro que faz mascaramento, em direção à rede:
• O único endereço IP que irá circular na Internet será o do filtro.
• O mascaramento também possui um esquema de funcionamento.
Como haverá trocas de endereços, deveremos utilizar a tabela NAT
para fazer isso.
5
6. NAT – Redirecionamentos
• Redirecionamento de portas
▫ O redirecionamento de portas ocorre quando desejamos alterar a porta de
destino de uma requisição.
▫ Exemplo: tudo que for destinado à porta 23 de qualquer máquina, quando
passar pela máquina filtro, será redirecionado para a porta 10000 de outro
servidor.
• Redirecionamento de servidores
▫ Todos os pacotes destinados a um servidor serão redirecionados para outro
servidor.
6
7. NAT – Proxy Transparente
• Um exemplo é a técnica que força o uso de um servidor proxy na rede.
7
• Ou seja, consiste em interceptar uma comunicação HTTP e forçar ela a
seguir um caminho por um servidor proxy.
8. NAT – Balanceamento de Carga
• O balanceamento de carga (load balance) é uma técnica utilizada para
distribuir carga entre servidores sincronizados.
• O load balance é o ato de distribuir os clientes aos servidores mais
desocupados.
• Esse trabalho também pode ser feito por servidores DNS.
8
10. NAT – Network Address Translator
• O NAT é dividido em:
▫ --> SNAT (Source NAT): aplica-se quando desejamos alterar o
endereço de origem do pacote. Somente a chain POSTROUTING faz
SNAT. O mascaramento é um exemplo de SNAT.
▫ --> DNAT (Destination NAT): aplica-se quando desejamos
alterar o endereço de destino do pacote. As chains PREROUTING e
OUTPUT fazem DNAT. O redirecionamento de porta, o
redirecionamento de servidor, o load balance e o proxy
transparente são exemplos de DNAT.
10
11. Regras de NAT
• Para fazer o mascaramento, deveremos, antes, carregar o módulo de
NAT:
▫ #modprobe iptable_nat
• As regras mais utilizadas, além da maioria dos recursos descritos para
uso com a tabela filter, contêm o seguinte:
11
12. Regras de NAT – Chains
• Existem as seguintes chains:
▫ PREROUTING --> utilizada para analisar pacotes que estão entrando no
kernel para sofrerem NAT. O PREROUTING pode fazer ações de NAT com o
endereço de destino do pacote. Isso é conhecido como DNAT
(Destination NAT);
▫ POSTROUTING --> utilizada para analisar pacotes que estão saindo do
kernel, após sofrerem NAT. O POSTROUTING pode fazer ações de NAT com o
endereço de origem do pacote. Isso é conhecido como SNAT (Source NAT);
▫ OUTPUT --> utilizada para analisar pacotes que são gerados na própria
máquina e que irão sofrer NAT. O OUTPUT pode fazer ações de NAT com o
endereço de destino do pacote. Também é DNAT.
12
13. Regras de NAT – Chains
• Opções:
▫ -A --> Append (adicionar).
▫ -D --> Delete (apagar).
• Dados:
▫ -t --> Table (tabela). Estabelece a tabela a ser utilizada. A tabela default,
por omissão, é filter. Para o mascaramento ou NAT será nat. Exemplo:
▫ Exemplos:
#iptables -t nat -A ...
#iptables -t nat -D ...
13
14. Regras de NAT – Chains
• --to --> utilizado para definir IP e porta de destino, após um DNAT,
ou de origem, após um SNAT.
• Deve ser utilizado após uma ação (-j ação). Assim:
▫ #... -j DNAT --to 10.0.0.2
▫ #... -j DNAT --to 10.0.0.2:80
▫ #... -j SNAT --to 172.20.0.2
14
15. Regras de NAT – Chains
• --dport --> assim como -d define um host de destino, --dport
define uma porta de destino.
• Deve ser utilizado antes de uma ação (-j ação). Antes de --dport,
deve ser especificado um protocolo (-p). Exemplo:
▫ #-d 172.20.0.1 -p tcp --dport 80 -j DNAT --to 10.0.0.2
• --sport --> assim como -s define um host de origem, --sport
define uma porta de origem. Deve ser utilizado antes de uma ação (-j
ação).
• --to-port --> define uma porta de destino, após um REDIRECT.
15
16. Regras de NAT – Chains
• Obs: A maioria dos dados básicos apresentados para a tabela filter
continuam valendo.
• Exemplo: -p servirá para definir um protocolo de rede; -d define um
host de destino.
16
17. Regras de NAT – Ações
• SNAT --> Utilizado com POSTROUTING para fazer ações de
mascaramento da origem.
• DNAT --> Utilizado com PREROUTING e OUTPUT para fazer ações de
redirecionamento de portas e servidores, balanceamento de carga e
proxy transparente.
▫ Caso a porta de destino não seja especificada, valerá a porta de origem. No
filtro, a porta que será redirecionada não pode existir ou estar ocupada por
um serviço qualquer, a fim de evitar conflitos.
• MASQUERADE --> Faz mascaramento na saída de dados.
• REDIRECT --> Redireciona uma requisição para uma porta local do
filtro.
17
19. Redirecionamento de Portas
• O redirecionamento de portas permite repassar conexões com destino
a uma porta para outra porta na mesma máquina.
• O alvo REDIRECT é usado para fazer esta operação, junto com o
argumento --to-port especificando a porta que será redirecionada.
• Este é o método pode ser utilizado para se fazer proxy transparente.
Todas as operações de redirecionamento de portas é realizada no
chain PREROUTING.
• Exemplo:
▫ #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80
-j REDIRECT --to-port 81
• Redireciona as conexões chegando na interface eth0, porta 80 para a
porta 81.
19
20. Redirecionamento de Portas
• Exemplo Comentado:
▫ #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80
-j REDIRECT --to-port 81
• Explicando:
• iptables : comando para adicionar regras de firewall.
• -t nat : selecionando a tabela NAT.
• -A PREROUTING : adicionando uma nova regra no final da lista da
chain PREROUTING, na qual será alterado o endereço de destino.
• -i eth0 : especificando que será pacotes entrando da interface eth0.
• -p tcp : definindo regra para o protocolo TCP.
• --dport 80 : especificando a porta do protocolo TCP.
• -j REDIRECT : definindo a ação de redirecionamento de porta.
• --to-port 81 : definindo a porta de destino.
20
21. Redirecionamento de IP
• DNAT (Destination NAT) 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.
• Toda operação de DNAT é feita no chain PREROUTING.
• Exemplo:
▫ #iptables -t nat -A PREROUTING -d 200.200.217.40 -i eth0
-j DNAT --to 192.168.1.2
• Modifica o endereço IP destino dos pacotes de 200.200.217.40 vindo
da interface eth0 para 192.168.1.2.
21
22. Redirecionamento de Portas
• Exemplo Comentado:
▫ #iptables -t nat -A PREROUTING -d 200.200.217.40 -i eth0
-j DNAT --to 192.168.1.2
• Explicando:
• iptables : comando para adicionar regras de firewall.
• -t nat : selecionando a tabela NAT.
• -A PREROUTING : adicionando uma nova regra no final da lista da
chain PREROUTING, na qual será alterado o endereço de destino.
• -d 200.200.217.40 : definindo a validade da para qualquer pacote
da rede com destino ao IP 200.200.217.40.
• -i eth0 : especificando que será pacotes entrando da interface eth0.
• -j NAT : definindo a ação de redirecionamento de endereço.
• --to 192.168.1.2 : definindo o IP de destino.
22
23. Redirecionamento de IP
• Também é possível especificar faixas de endereços e portas que serão
substituídas no DNAT:
▫ #iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24
-j DNAT --to 200.200.217.40-200.200.217.50
• Modifica o endereço IP de destino do tráfego vindos da interface
192.168.1.0/24 para um IP de 200.241.200.40 a 200.241.200.50.
• Este é um excelente método para fazer o balanceamento de carga entre
servidores.
23
24. Redirecionamento de IP
• Exemplo 2:
▫ #iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24
-j DNAT --to 200.200.217.40-200.200.217.50 -p tcp
--dport 1024:5000
• Idêntico ao anterior, mas faz somente substituições na faixa de portas
de destino de 1024 a 5000.
• Verificando NAT:
▫ #iptables -t nat -L PREROUTING –n
24
26. Exemplos comentados de regras de filtragem (Tabela NAT)
▫ #iptables -t nat –L
• Mostra as regras de NAT ativas.
▫ #iptables -t nat -F
• Apaga todas as regras de NAT existentes.
▫ #iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
• Todos os pacotes que saírem pela interface ppp0 (modem) serão
mascarados. Isso dá um nível de segurança elevado à rede que está
atrás da ppp0.
• É uma boa regra para navegação na Internet. Note que esse tipo de
mascaramento não usa SNAT.
26
27. Exemplos comentados de regras de filtragem (Tabela NAT)
▫ #iptables -t nat -A POSTROUTING -d 0/0 -j MASQUERADE
• Tem o mesmo efeito da regra anterior. No entanto, estabelece que
qualquer pacote destinado a qualquer outra rede, diferente da interna,
será mascarado. A regra anterior refere-se aos pacotes que saem por
determinada interface. A opção -d 0/0 poderia ser -d 0.0.0.0/0
também. É uma outra regra para navegação na Internet.
▫ #iptables -t nat -A PREROUTING -p tcp -d 10.0.0.2 --
dport 80 -j DNAT --to 172.20.0.1
• Redireciona todos os pacotes destinados à porta 80 da máquina
10.0.0.2 para a máquina 172.20.0.1. Esse tipo de regra exige a
especificação do protocolo. Como não foi especificada uma porta de
destino, a porta 80 será mantida como destino.
27
28. Exemplos comentados de regras de filtragem (Tabela NAT)
▫ #iptables -t nat -A OUTPUT -p tcp -d 10.0.0.10 -j DNAT -
-to 10.0.0.1
• Qualquer pacote TCP, originado na máquina filtro, destinado a
qualquer porta da máquina 10.0.0.10, será desviado para a máquina
10.0.0.1 .
▫ #iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to
200.20.0.1
• Essa regra faz com que todos os pacotes que irão sair pela interface
eth0 tenham o seu endereço de origem alterado para 200.20.0.1 .
▫ #iptables -t nat -A PREROUTING -i eth0 -j DNAT --to
172.20.0.1
• Todos os pacotes que entrarem pela eth0 serão enviados para a
máquina 172.20.0.1 .
28
29. Exemplos comentados de regras de filtragem (Tabela NAT)
▫ #iptables -t nat -A PREROUTING -i eth0 -j DNAT --to
172.20.0.1-172.20.0.3
• Aqui haverá o load balance. Todos os pacotes que entrarem pela eth0
serão distribuídos entre as máquinas 172.20.0.1 , 172.20.0.2 e
172.20.0.3 .
▫ #iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o
eth1 -j SNAT 200.20.5.0/24
• Uma situação interessante: todos os pacotes que saírem da rede
192.168.1.0 serão transformados em 200.20.5.0 .
29
30. Exemplos comentados de regras de filtragem (Tabela NAT)
▫ #iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp
--dport 80 -j REDIRECT --to-port 3128
• Todos os pacotes TCP que vierem da rede 10.0.0.0, com máscara
255.0.0.0, destinados à porta 80 de qualquer host, não sairão; serão
redirecionados para a porta 3128 do filtro.
• Isso é o passo necessário para fazer um proxy transparente. O proxy
utilizado deverá aceitar esse tipo de recurso.
• No caso, o Squid, que aceita transparência, deverá estar instalado na
máquina filtro, servindo na porta 3128.
30
31. Exemplos comentados de regras de filtragem (Tabela NAT)
▫ #iptables -t nat -A PREROUTING -d 200.135.203.20 -p tcp
--dport 22 -j DNAT --to 172.29.50.12
• Todos os pacotes com destino a 200.135.203.20 via protocolo TCP na
porta 22, serão redirecionados para o endereço 172.29.50.12 .
▫ #iptables -t nat -A PREROUTING -d 172.29.45.45 -p tcp
--dport 5900 -j REDIRECT --to-port 6500
• Todos os pacotes com destino a 172.29.50.12 via protocolo TCP na
porta 5900, serão redirecionados para a porta 6500 .
31
33. Filter e NAT
• As tabelas FILTER e NAT podem atuar em conjunto, funcionando em
paralelo.
• Há de se ter cuidado pois, como já disse, elas atuam em paralelo, como
duas pilhas que serão executadas ao mesmo tempo. Assim sendo, se
tivermos as regras:
▫ #iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j
MASQUERADE
▫ #iptables -A FORWARD -j DROP
• Apesar da primeira (tabela nat) possibilitar a navegação mascarada da
rede 10.0.0.0 na Internet, essa navegação não ocorrerá, pois a segunda
regra (Tabela Filter) irá barrar o FORWARD entre as redes.
33
35. Topologia de Filtros de Pacotes
• O posicionamento de um filtros de pacotes dentro da rede é de
extrema importância para ela.
• Pode-se utilizar dois tipos de filtros de pacotes: filtro isolado (mais
seguro) e filtro incorporado (sendo este último o mais inseguro e
menos desejável).
• O filtro será isolado quando estiver entre máquinas, com função
exclusiva de filtro:
35
36. Topologia de Filtros de Pacotes
• O filtro será incorporado quando não houver uma máquina isolada
como filtro.
• Nesse caso, as máquinas da rede deverão estabelecer, individualmente,
as suas próprias regras de filtragem. É o sistema mais inseguro:
36
• Nada impede que os dois sistemas sejam utilizados em parceria,
oferendo assim um alto grau de segurança à rede. Cabe ressaltar que
no filtro incorporado há maior nível de insegurança, uma vez que
outros processos rodam junto com o filtro.
39. Exercícios
• Regras para servidor S:
1. Todas as conexões recebidas na porta 8008 devem ser redirecionadas a
porta 22.
2. O único host da rede B que poderá se conectar será o: Y.
3. Toda a rede A poderá acessar o servidor S.
4. Bloquear outras conexões a essa porta.
5. Quando o servidor tentar acessar o site www.facebook.com.br e
www.facebook.com, redirecionar para 177.99.179.99.
iptables -t nat -A PREROUTING -p tcp --dport 8008 -j REDIRECT --to-port 22
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 172.29.0.3 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -t nat -A OUTPUT -d www.facebook.com -j DNAT --to 177.99.179.99
iptables -t nat -A OUTPUT -d www.facebook.com.br -j DNAT --to 177.99.179.99
39
40. Exercícios
• Regras para roteador R:
1. Mascarar todas os pacotes que irão sair da rede B.
2. Mascarar todas os pacotes que irão sair do servidor S.
3. Todas as conexões recebidas na porta 80 devem ser redirecionadas para o
servidor S.
4. Quando a máquina X tentar enviar qualquer pacote para a máquina A
redirecionar para o servidor S.
5. Todos os pacotes originados na rede A devem ser redirecionados e
balanceados na rede B
iptables -t nat -A POSTROUTING -s 192.168.1.0/16 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 200.143.81.25 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -d 200.143.81.20 --dport 80 -j DNAT --to
200.143.81.25
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.4 -d 172.20.0.2 -j DNAT --to
200.143.81.25
iptables -t nat -A PREROUTING -s 172.29.0.0/16 -j DNAT --to 192.168.0.4-
192.168.0.5
40
41. Exercícios
• Regras para B:
1. Todas os pacotes para acesso de Internet deverão ser redirecionados para
o ip 177.99.179.99.
iptables -t nat -A PREROUTING -p tcp -d 0/0 --dport 80 -j DNAT --to
177.99.179.99
41
43. Firewall Iptables - NAT
Prof. Andrei Carniel
Universidade Tecnológica Federal do Paraná – UTFPR
E-mail: andreicarniel@utfpr.edu.br / andrei.carniel@gmail.com