Network Address Translator - NAT (tabela nat)
--> Mascaramento (masquerading)
--> Redirecionamento de portas (port forwarding ou PAT)
--> Redirecionamento de servidores (forwarding)
--> Proxy transparente (transparent proxy)
--> Balanceamento de carga (load balance)
A TABELA NAT
O NAT é dividido em:
--> SNAT: 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: 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.
Regras de NAT
#modprobe iptable_nat
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.
Opções
-A --> Append (adicionar, anexar).-D --> Deletar.
Dados
Para o mascaramento ou NAT será nat. Exemplo:
#iptables -t nat -A ...
--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
--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.
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.
Realizando alguns testes, para começarmos entender melhor como funciona a tabela NAT.
Estudo de caso:
Aqui em casa, criei a seguinte rede para estudo.
Uma máquina com Debian instalado, duas interfaces de rede (eth0, eth1).
Uma outra máquina também rodando o Debian, com serviço de WEB (apache2) instalado.
E uma terceira máquina com Windows XP.
O Servidor Firewall está com IP 192.168.0.10 na interface eth0, e a eth1 com IP da rede classe A, 10.0.0.0/24, que está conectada a rede interna, o Ip da placa eth1 é o 10.0.0.1/8.
O Servidor WEB que está na rede interna, está com o seguinte endereço IP: 10.0.0.10/8 e gateway, 10.0.0.1
A máquina com Windows XP, está com Ip da rede classe C, IP: 192.168.0.20/24, Gateway 192.168.0.10 (ip do servidor gateway)
O firewall está somente com a regra de roteamento ativa.
# echo 1 > /proc/sys/net/ipv4/ip_forward
Vamos agora dar um ping da máquina XP, no IP do servidor WEB, IP: 10.0.0.10, e vamos criar uma regra no Firewall para começar a monitor o ping dado no Servidor WEB.
No Servidor WEB você vai criar a seguinte regra:
iptables -t filter -A INPUT -p icmp -j LOG --log-prefix "LOG-PING-WEB: " -> com essa regra vamos pegar todos os pacotes de ping (icmp) com destino ao servidor WEB, a própria máquina.
Com o seguinte comando, podemos acompanhar o log, real:
tail -f /var/log/messages
Como podemos acompanhar no log do servidor WEB, o IP de origem do ping é a máquina 192.168.0.20 e o destino é a própria máquina.
Realizando o comando tracert 10.0.0.10 na máquina Windows, podemos ver, que para chegar até a máquina WEB, primeiro passa pelo servidor Gateway 192.168.0.10, depois vai para a máquina WEB.
LEMBRANDO: o servidor gateway, precisa estar com a rera de forward habilitado: echo 1 > /proc/sys/net/ipv4/ip_forward
Para que as duas redes 192.168.1.0/24 e 192.168.2.0/24 conversem.
Agora vamos fazer uma regra para que o servidor gateway responda diretamente para o servidor WEB, quando for realizado Ping de uma máquina externa para a sua rede interna.
No servidor Gateway escreva a seguinte regra:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
A regra está dizendo que todo trafego direcionado a tabela nat, na cadeia POSTROUTING, na placa de rede eth1 (Interface de rede Interna) será mascarado (MASQUERADE).
Volte agora dar um Ping da máquina Xp, no Servidor WEB, e pode verificar no LOG do Servidor WEB, que a máquina de origem agora é o Servidor GATEWAY, e não mais a máquina XP.
Por enquanto é isso, espero que possa ser de ajuda à alguém, que procura entender o Iptables.
Nenhum comentário:
Postar um comentário