Laboratorio1: LINUX IPTABLES Objetivos: • Comprender la forma como se comunican los equipos de diferentes redes, a través de los enrutadores. • Validar la utilidad del servicio de NAT para minimizar el uso de direcciones válidas y para publicar los servicios con direcciones inválidas • Comprender la diferencia entre los servicios de SNAT y DNAT Servidor Esquema general: Cortafuegos Red Externa Eth0 Red DMZ Eth1 10.66.0.1/24 Red Lan Eth2 10.67.0.1/24 Equipo Metodologia: Durante el desarrollo de la guía primero se indicará lo que se necesita hacer y después como se hará, de esta manera el estudiante está en la libertad de hacer la guía basado en el que, siempre y cuando conozca como lo va a hacer. Todos los conceptos serán desarrollados en el transcurso de la guía. Servidor (dmz) Interfaz eth0 ip 10.66.0.2/24 GW: 10.66.0.1 servicio Web, ssh,ftp Laboratorio1: LINUX IPTABLES Cortafuegos Interfaz ip servicio eth0 DHCP cliente DNS, ssh, snat,dnat,masquerade eth1 10.66.0.1/24 DNS,ssh, snat,dnat,masquerade eth2 10.67.0.1/24 DNS, DHCP servidor, Proxy Para habilitar el servicio de routing o reenvió de paquetes se debe modificar el archivo sysctl.conf que se encuentra en /etc/sysctl.conf , para que contenga 1 en la variable tcp_syncookies junto con ip_forward, en nuestro cortafuegos ya que este será el equipo que enrutará los paquetes y luego prestará el servicio de NAT. Luego de realizar estos pasos verificar la conexión entre las maquinas que constituyen nuestra red a través de un simple ping entre ellas. Si no están configuradas las rutas deberá de agregarlas manualmente a su tabla de rutas (route add). Verifique su cortafuegos se encuentra resolviendo nombres de dominio (ping google.cl). En su maquina cortafuegos habilitaremos el trafico SNAT para toda la red. iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Tambien se puede definir de manera mas explicita especificando la interfaz y el segmento de red. iptables -t nat -A POSTROUTING -s 10.66.0.0/24 -o eth0 -j MASQUERADE Recuerde que la interfaz eth0 esta definida como la interfaz que posee la dirección recibida por dhcp en la red externa. Si se equivoco con el comando anterior o si definio de manera distinta su interfaz externa borre el comando anterior con: iptables -t nat -F El comando anterior adiciona una regla en la tabla de nat en la cadena de POSTROUTING, pone como condición que si el paquete sale (-o) por la interfaz eth0 ejecute la opción MASQUERADE la cual especifica enmascarar (traducir) la dirección fuente del paquete por la configurada en la interfaz de salida iptables es una herramienta de administración de paquetes IPv4, permite realizar filtrado de paquetes e implementar servicios de NAT (SNAT y DNAT), predeterminadamente maneja dos tablas que son las más utilizadas: filter y nat, la tabla de nat maneja tres cadenas: PREROUTING, POSTROUTING y OUTPUT. Las reglas de SNAT se crean en la cadena de POSTROUTING y son los traslados de la dirección y/o puertos fuente de los paquetes y las de DNAT en la cadena de PREROUTING y son los traslados de la dirección y/o puertos de destino. En la cadena de OUTPUT se Laboratorio1: LINUX IPTABLES configuran las reglas de los paquetes que se les desea hacer algún cambio y son generados localmente. Ahora probaremos el funcionamiento de NAT. Intente navegar, a través de lynks2, desde el equipo servidor en su DMZ (lynks2 www.google.cl). Note que esta vez sí tiene acceso a Internet, lo cual indica que pudo resolver el nombre de dns y posteriormente tuvo acceso al servidor Web. Verificaremos las tabla nat en la cadena POSTROUTING en nuestro cortafuegos. iptables -t nat –L La opción -L se utiliza para listar las reglas configuradas y con la opción -t se especifica la tabla que en este caso es nat, note que en la columna prot (protocol) aparece all y en source and destination anywhere, esto se debe a que cuando se configuró la regla con el comando iptables no se espcificó ni el protocolo ni la dirección fuente ni destino, por ende iptables configuró la regla para que aceptará en esa regla todos los protocolos, direcciones fuente y destino. Si desea ver las reglas configuradas, de una cadena específica, por ejemplo, la de POSTROUTING usted puede ejecutar: iptables -t nat -L POSTROUTING En este momento ya está creada la regla para cuando el equipo con la dirección 192.168.2X.3/24 quiera salir a través del equipo Linux, se traslade a la dirección 192.168.130.1X, sin embargo está regla no es efectiva debido a que utilizamos la opción -A que especifica agregar una regla, esta opción agrega las reglas al final de una cadena, podemos comprobarlo al listar las reglas de POSTROUTING. iptables -t nat -L POSTROUTING --line-number Note que la regla de SNAT hacia la dirección 192.168.130.1X está después de la regla de MASQUERADE, pero recuerde que la primera regla especifica que desde cualquier dirección IP, lo que indica que cuando un paquete pase por esta cadena, cumplirá primero la condición 1 antes que la 2, esto es importante tenerlo en cuenta debido a que cuando el sistema operativo recorre las reglas, lo hace hasta la primera que cumpla la condición del paquete evaluado, en nuestro caso siempre cumplirá con las condiciones de la primera regla debido a que es muy general. Para corregir el problema mencionado eliminaremos la regla #2 qué es la regla de SNAT, para esto ejecutaremos: iptables -D POSTROUTING 2 iptables -t nat -L POSTROUTING --line-number Ahora no adicionaremos la regla sino que la insertaremos en una posición específica, que será la posición 1, de esta manera la regla quedará antes de la regla de MASQUERADE Laboratorio1: LINUX IPTABLES iptables -t nat -I POSTROUTING 1 -s 192.168.133.x/24 -o eth0 -j SNAT 10.66.0.0/24 iptables -t nat -L POSTROUTING --line-number Note que ahora la regla de SNAT está primero que la de MASQUERADE esto quiere decir que la dirección IP 10.66.0.2 se traducirá a la dirección 192.168.133.X y cuando se cualquier otro equipo de la red 10.66.0.0/24 se enmascarará con la dirección IP de la interfaz -> 192.168.133.X PORT FORWARD Las reglas de SNAT normalmente no especifican un traslado de puertos específico, debido a que los clientes pueden tener cualquier puerto mayor a 1024, sin embargo cuando se trabajando con las reglas de DNAT normalmente si se especifica los puertos, debido a que estas son las utilizadas para publicar servicios de una red inválida. Primero habilitaremos el servicio de FTP y HTTP hacia la dirección 10.66.0.2 iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 10.66.0.2:80 iptables -t nat -A PREROUTING -p tcp --dport 20:21 -i eth0 -j DNAT --to 10.66.0.2 iptables -t nat -L PREROUTING Las reglas de DNAT se configuran en la cadena de PREROUTING debido a que esta información debe ser cambiada antes de que se seleccione la ruta del paquete, ya que se necesita conocer el destino del paquete para poderlo enrutar y esto no se sabe hasta que se cambie la dirección destino del paquete en la cadena de PREROUTING. Para probar estos servicios ejecute en el browser (Internet Explorer o Mozilla): http://192.168.133.1X ftp://192.168.133.1X El traslado de las direcciones no es solo entre redes inválidas y redes válidas, es un traslado de direcciones sin importar que sean públicas o no.