Título: Ayuda con script iptables Publicado por: sworksht en 30 Abril 2011, 19:30 pm Buenas a todos, es mi primer mensaje en este foro, aprovecho para presentarme y plantear un problema que tengo con un script de iptables.
Tengo un ordenador con 2 tarjetas de red, corriendo debian únicamente cono firewall entre el router y un switch, para proteger una red interna. Los servicios hacía el exterior funcionan todos correctamente, es decir, las reglas que aplico en forward, funcionan bien, el problema lo tengo con la redirección de servicios hacia máquinas internas, en concreto, un servidor windows al cual necesitamos acceder a el por escritorio remoto desde el exterior y que también provee de un servidor FTP. No consigo que funcione ninguno de esos dos servicios, al igual que tampoco funciona la regla SSH que abre este servicio en el firewall para acceder desde internet a el. Os pego el script y a ver si alguien me puede ayudar en lo que está fallando. Gracias anticipadas. Script: #!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet ## con servicios abiertos de puerto 25, 110, y 1723 ## Pello Xabier Altadill Izura ## www.pello.info - pello@pello.info echo -n Aplicando Reglas de Firewall... ## FLUSH de reglas iptables -F iptables -X iptables -Z iptables -t nat -F ## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT ## Empezamos a filtrar # Servicios redirigidos a maquinas internas iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.1.2:3389 iptables -t nat -A PREROUTING -i eth0 -p udp --dport 3389 -j DNAT --to 192.168.1.2:3389 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8245 -j DNAT --to 192.168.1.2:8245 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to 192.168.1.2:21 ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT #iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT # Y abrimos el puerto SSH iptables -A INPUT -s 0.0.0.0 -p tcp --dport 22 -j ACCEPT ## Ahora con regla FORWARD filtramos el acceso de la red local ## al exterior. Como se explica antes, a los paquetes que no van dirigidos al ## propio firewall se les aplican reglas de FORWARD # Aceptamos que vayan a puertos 80 iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT # Aceptamos que vayan a puertos https iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT # Aceptamos que consulten los DNS iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 53 -j ACCEPT #Dejo salir al Noip iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 8245 -j ACCEPT #Dejo salir a FTP iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 21 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 22 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT #Dejamos salir el correo iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 110 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 25 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 993 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 465 -j ACCEPT # Y denegamos el resto. Si se necesita alguno, ya avisaran iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j DROP # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras máquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red # Cerramos el rango de puerto bien conocido iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp --dport 1:1024 -j DROP # Cerramos un puerto de gestión: webmin iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script Título: Re: Ayuda con script iptables Publicado por: c0d3rSh3ll en 1 Mayo 2011, 02:34 am lo ideal es que no copies y pegues script que no sabes lo que hacen.
que puertos quieres abrir?? y en que ip. cual es tu tarjeta que se conecta a internet? Título: Re: Ayuda con script iptables Publicado por: sworksht en 1 Mayo 2011, 09:57 am Hola, los puertos que quiero abrir Redireccionados un pc de la red son el 3389 y el 21 en la ip 192.168.1.2 y en el propio firewall el 22. La tarjeta que se conecta a internet es la eth0.
Gracias. Título: Re: Ayuda con script iptables Publicado por: SokarTefnut en 3 Mayo 2011, 20:45 pm Hay un par de cosas que no tienen mucha lógica en tu enunciado:
1 .- Si solamente utilizas el Firewall, no necesitamos acceso a localhost 2.- No necesitamos utilizar NAT, pues el router externo se encargará de hacer la conversion de IP Usando la politica ACCEPT,básicamente quedaría: # Permitir SSH a Debian desde eth0 iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT # Permitir Escritorio remoto y FTP iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT iptables -A FORWARD -p tcp --dport 20 -j ACCEPT iptables -A FORWARD -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -p tcp --sport 3389 -j ACCEPT iptables -A FORWARD -p tcp --sport 20 -j ACCEPT iptables -A FORWARD -p tcp --sport 21 -j ACCEPT # El resto DROP iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP iptables -A FORWARD -j DROP Título: Re: Ayuda con script iptables Publicado por: sworksht en 3 Mayo 2011, 23:51 pm Hay un par de cosas que no tienen mucha lógica en tu enunciado: 1 .- Si solamente utilizas el Firewall, no necesitamos acceso a localhost 2.- No necesitamos utilizar NAT, pues el router externo se encargará de hacer la conversion de IP Usando la politica ACCEPT,básicamente quedaría: # Permitir SSH a Debian desde eth0 iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT # Permitir Escritorio remoto y FTP iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT iptables -A FORWARD -p tcp --dport 20 -j ACCEPT iptables -A FORWARD -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -p tcp --sport 3389 -j ACCEPT iptables -A FORWARD -p tcp --sport 20 -j ACCEPT iptables -A FORWARD -p tcp --sport 21 -j ACCEPT # El resto DROP iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP iptables -A FORWARD -j DROP Gracias por contestar y me vas a perdonar pero creo que ando un poco "perdido" En el router, en el apartado Virtual host, he creado un NAT para que todo lo que entra en el rango de puertos 1-66355 los direccione a la ip del firewall, por eso desde ahí establezco esas reglas para que redireccione el tráfico. Tal vez el fallo está en la configuración del router entonces.... Podríais aclararme este punto ? Antes andaba perdido, pero con tu respuesta ya si que no me aclaro... Gracias de nuevo. Título: Re: Ayuda con script iptables Publicado por: SokarTefnut en 4 Mayo 2011, 08:01 am Explica un poco la topología de la red, ¿ Están todos los equipos conectados a mismo switch ó está el router fisicamente conectado solo a la eth0 y el resto de equipos a la eth1 via otro switch ?
Título: Re: Ayuda con script iptables Publicado por: sworksht en 4 Mayo 2011, 08:50 am Explica un poco la topología de la red, ¿ Están todos los equipos conectados a mismo switch ó está el router fisicamente conectado solo a la eth0 y el resto de equipos a la eth1 via otro switch ? La última opción es la correcta. Toda la red local conectada al switch, y entre medias del router y el switch, está el firewall con 2 tarjetas de red. La eth0 al router y la eth1 al switch. De ahí las reglas de redireccionamiento. Gracias de nuevo. |