2- Explorar las posibilidades del tipo nat de IPTables. En concreto, probar a hacer NAT con comandos del tipo: # iptables -t nat -A POSTROUTING... y comprobar que se ha realizado el NAT con éxito, analizando los mensajes salientes.
A pesar de que ya he empleado NAT en el apartado 1.e emplearé un esquema nuevo que simula una red “real” para este ejercicio. En la misma tenemos nuestro cortafuegos con tres tarjetas de red separando las distintas zonas: Internet, la LAN y un DMZ en el que hemos puesto un servidor de DNS y un servidor FTP (simulado con netcat) de acuerdo con el siguiente esquema:
Las condiciones en cuanto a tráfico que ha de cumplir son las siguientes:
- los equipos de la la LAN pueden acceder:
- al servidor FTP del dmz
- al tráfico http y https de Internet
- al servidor dns del DMZ
-
- el servidor DNS puede realizar consultas a otros servidores DNS de Internet
- el servidor FTP del DMZ es accesible desde Internet y desde la LAN. Además no se debe permitir otro tráfico FTP que no sea el destinado a este servidor.
- Permitimos el tráfico icmp en toda la red, incluido el propio cortafuegos
El siguiente sería el script con las reglas para nuestro cortafuegos:
#En primer lugar borramos todas las reglas y ponemos las políticas por defecto a DROP:iptables -Fiptables -t nat -Fiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP#Hacemos SNAT de todo el tráfico salienteiptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 10.0.2.16#Permitimos el tráfico icmp salienteiptables -A OUTPUT -p icmp -j ACCEPTiptables -A OUTPUT -p udp --dport 53 -j ACCEPTiptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -A FORWARD -p icmp -j ACCEPT# si la ip de la interfaz eth0 fuera dinámica, emplearíamos:#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE#Aceptamos todo el tráfico relacionado con tráfico existente ya permitidoiptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT#El tráfico ftp y dns procedente de la lan lo redirigimos todo a nuestro DMZ en prerouting:iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 53 -s 192.168.56.0/24 -j DNAT --to 192.168.0.1iptables -t nat -A PREROUTING -i eth1 -p udp --dport 53 -s 192.168.56.0/24 -j DNAT --to 192.168.0.1#dejamos pasar el tráfico dns y hacemos SNAT del mismo:iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 53 -s 192.168.56.0/24 -d 192.168.0.1 -j ACCEPTiptables -A FORWARD -i eth1 -o eth2 -p udp --dport 53 -s 192.168.56.0/24 -d 192.168.0.1 -j ACCEPTiptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 192.168.0.195#Hacemos lo mismo para el tráfico FTP puertos de destino 20 y 21iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 20:21 -s 192.168.56.0/24 -j DNAT --to 192.168.0.193iptables -A FORWARD -i eth0 -o eth2 -p tcp --dport 20:21 -s 192.168.56.0/24 -d 192.168.0.193 -j ACCEPT#Permitimos el tráfico saliente de la LAN:http, https a Internetiptables -A FORWARD -i eth1 -o eth0 -p tcp --dport http -s 192.168.56.0/24 -j ACCEPTiptables -A FORWARD -i eth1 -o eth0 -p tcp --dport https -s 192.168.56.0/24 -j ACCEPT#Permitimos la salida de peticiones dns desde nuestro servidor DNS:iptables -A FORWARD -i eth2 -o eth0 -p tcp --dport 53 -s 192.168.0.1 -j ACCEPTiptables -A FORWARD -i eth2 -o eth0 -p udp --dport 53 -s 192.168.0.1 -j ACCEPT#Redirigimos las peticiones entrantes a los puertos 20 y 21 al servidor FTP del DMZ y permitimos #el tráfico relacionado salienteiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20:21 -j DNAT --to 192.168.0.193iptables -A FORWARD -i eth0 -o eth2 -p tcp --dport 20:21 -d 192.168.0.193 -j ACCEPT# En realidad se podría haber puesto una única regla en prerouting para el tráfico ftp#iptables -t nat -A PREROUTING -p tcp --dport 20:21 -j DNAT --to 192.168.0.193
como se puede ver en la imagen superior el servidor dns 192.168.0.1 no realiza las consultas a través del firewall ya que en realidad es la ip del router de la red local y sale directamente a Internet.
Finalmente la tabla de nat:
<< Anterior Siguiente >>
No hay comentarios:
Publicar un comentario