Uno de los aspectos más preocupantes de la seguridad es la seguridad a nivel de red; ya que es el área en la que los equipos están más expuestos y en la que hay más probabilidades de que puedan tomar el control de nuestro equipo. Obviamente hay más "puertas" para acceder a un equipo; hay un dicho bastante popular que dice que la seguridad perfecta únicamente se puede lograr teniendo un equipo dentro de una jaula de Faraday sin conexión a Internet y rezando de que nadie te robe la llave para abrir dicha jaula... Pero es innegable que generalmente se trata de acceder a un equipo remotamente a nivel de red... Es por eso que a veces hay que considerar la posibilidad de que un equipo pueda ser vulnerado y de que de ahí traten de "saltar" a otros equipos con los que dicho equipo tenga comunicación; he ahí donde entra en juego un concepto muy importante y útil llamado DMZ.
Como veis el objetivo es muy claro y a nivel gráfico es, en mi opinión, bastante entendible... La cuestión está que generalmente para lograr dicho propósito requeriríamos de un cortafuegos o un switch con estas capacidades... Cosa que generalmente requiere de una inversión económica importante y que a veces no nos es posible realizar. Afortunadamente podemos optar por realizar un DMZ con un equipo que simplemente tenga 3 tarjetas de red y Linux instalado. En concreto con la misma configuración que la mostrada en el esquema de arriba; es decir:
- Una interfaz de red de nombre eth0 con ip 192.168.1.2 y máscara 255.255.255.0 que estaría conectada al router.
- Una interfaz de red de nombre eth1 con ip 192.168.2,1 y máscara 255.255.255.0 que estaría conectada a la DMZ, es decir al área que va a recibir un tratamiento "especial".
- Una interfaz de red de nombre eth2 con ip 192.168.3.1 y máscara 255.255.255.0 que estaría conectada a la red local.
Teniendo esta disposición de interfaces de red clara, tenemos que tener claro qué objetivo lograr y cómo realizarlo... Con el esquema de arriba y las interfaces de red claras, y a sabiendas del objetivo de una DMZ veríamos que el objetivo sería:
- Que las peticiones a ciertos puertos de la interfaz eth0, sean redirigidos a eth1 (DMZ).
- Que el tráfico que venga desde la interfaz eth0 hacia la interfaz eth1, pase sin ningún problema.
- Que el tráfico que vaya desde la interfaz eth1 a eth0, sea únicamente el tráfico de respuesta a las peticiones que hayan realizado a los servidores de la DMZ.
- Que el tráfico que provenga desde la interfaz eth2 hacia al interfaz eth1, pase también sin ningún problema.
- Que el único tráfico que puede venir desde la DMZ (eth1) hasta la red local, sea el originado por respuestas a las peticiones realizadas desde la red local (eth2).
¿Todo esto como lo podríamos lograr? Con iptables por supuesto. Todo lo comentado arriba lo lograríamos con este simple script que únicamente habría que ejecutar para tener nuestra DMZ operativa. Hay que tener en cuenta que esta configuración estaría pensada para una DMZ que tenga un servidor web y uno de DNS; es decir que estaría preparado para redirigir las peticiones a los puertos 53 y 80. El script en cuestión podría llamarse DMZ.sh
- #!/bin/bash
- #PREPARAMOS LAS REGLAS BASICAS
- echo 1 > /proc/sys/net/ipv4/ip_forward
- iptables -F
- iptables -t nat -F
- iptables -A INPUT -j DROP
- iptables -A FORWARD -j DROP
- iptables -A OUTPUT -j ACCEPT
- #PREPARAMOS LAS REGLAS DE FORWARD
- #DE ETH0 A ETH1 DEJAMOS QUE PASE TODO EL TRAFICO
- iptables -A FORWARD -i eth0 -o eth1 -s state --state NEW,ESTABLISHED,RELATED -j ACCEPT
- #DE ETH1 A ETH0 DEJAMOS QUE SOLAMENTE PASEN LAS RESPUESTAS A LAS PETICIONES
- iptables -A FORWARD -i eth1 -o eth0 -s state --state ESTABLISHED,RELATED -j ACCEPT
- #DE ETH2 A ETH1 DEJAMOS QUE PASE TODO EL TRAFICO
- iptables -A FORWARD -i eth2 -o eth1 -s state --state NEW,ESTABLISHED,RELATED -j ACCEPT
- #DE ETH1 A ETH2 DEJAMOS QUE SOLAMENTE PASEN LAS RESPUESTAS A LAS PETICIONES
- iptables -A FORWARD -i eth1 -o eth2 -s state --state ESTABLISHED,RELATED -j ACCEPT
- #PREPARAMOS LAS REDIRECCIONES DESDE EL EXTERIOR A LA DMZ
- #PUERTOS REDIRIGIDOS 53 Y 80
- #IPS FICTICIAS PERO QUE ESTAN DENTRO DEL RANGO DE ETH1
- #PUERTO 53, TCP Y UDP
- iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to 192.168.2.4:53
- iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to 192.168.2.4:53
- #PUERTO 80 TCP: WEB
- iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.5:80
Con este pequeño script ya tendríamos el equipo preparado para actuar de "firewall" y para convertir la zona conectada a la interfaz eth1 en una DMZ.
Como veis la creación de este tipo de entornos no es excesivamente complicada, simplemente requiere tener ciertas bases de iptables para poder desenvolvernos con libertad; lo cual demuestra, una vez más, la enorme utilidad de esta herramienta.
Espero que os haya resultado útil.
Saludos.
No hay comentarios :
Publicar un comentario