sábado, 8 de octubre de 2011

Ejercicios iptables 2.- Iptables como NAT

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:

image
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 -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Hacemos SNAT de todo el tráfico saliente
iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 10.0.2.16
#Permitimos el tráfico icmp saliente
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -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 permitido
iptables -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.1
iptables -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 ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -p udp --dport 53 -s 192.168.56.0/24 -d 192.168.0.1 -j ACCEPT
iptables -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 21
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 20:21 -s 192.168.56.0/24 -j DNAT --to 192.168.0.193
iptables -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 Internet
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport http -s 192.168.56.0/24 -j ACCEPT
iptables -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 ACCEPT
iptables -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 saliente
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20:21 -j DNAT --to 192.168.0.193
iptables -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
La tabla filter podemos ver cómo quedaría:image
La tabla nat:image
A continuación genero tráfico destinado al servidor ftp:image
la captura en wiresharkimage
y vemos tal y cómo lo muestra iptstate:image
finalmente podemos ver las estadísticas de tráfico tras generar tráfico icmp, http y https:image

imagecomo 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:
image
 << Anterior                                                                                                                Siguiente >>

Para ver el resto de manuales de seguridad y enlaces a las siguientes entregas, puede acudir al índice de temas de seguridad en el enlace