#!/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 ## 3.2 Firewall de una LAN con salida a internet, ejemplo 2 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 ## 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 ## Abrimos el acceso a puertos de correo # Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP #iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT # Abrimos el pop3 #iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT ## Abrimos el acceso a puertos de administracion # Abrimos el puerto ssh 22 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT # Abrimos el puerto vnc-http-1 5801 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 5801 -j ACCEPT # Abrimos el puerto vnc-1 5900 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 5900 -j ACCEPT ## Abrimos el acceso a otros puertos # Abrimos el puerto del apache iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT # Abrimos el puerto del ftp iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 20 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 21 -j ACCEPT # Abrimos el puerto del aMule iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 4662 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 4672 -j ACCEPT # Abrimos el puerto del Azureus 59250 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 59250 -j ACCEPT #iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 59250 -j ACCEPT # Y abrimos el puerto pptpd para la ip del adsl de casa del jefe #iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -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 http iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT # Aceptamos que vayan a puertos 443 https iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT # Aceptamos que vayan a puertos SMTP correo iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 25 -j ACCEPT # Aceptamos que vayan a puertos POP3 correo iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 110 -j ACCEPT # Aceptamos que vayan a puertos 20 ftp iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 20 -j ACCEPT # Aceptamos que vayan a puertos 21 ftp iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 21 -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 # Aceptamos conexiones SAMBA 137 y 139 iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 137 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 139 -j ACCEPT # Aceptamos conexiones 68 DHCP iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 68 -j ACCEPT # Aceptamos conexiones NTPD iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 123 -j ACCEPT ## MENSAJERIA INSTANTANEA # Aceptamos conexiones AOL e ICQ iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 9898 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5190:5193 -j ACCEPT # # Aceptamos conexiones jabber iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5222:5223 -j ACCEPT # # Aceptamos conexiones MSN Messenger iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 1863 -j ACCEPT #(Para bloquearlo, hay que redireccionarlo, pues si no puede usar el 1863 usa el 80 #En donde 192.168.1.53 es la ip de la computadora a la que le quieres bloquear el messenger y 192.168.1.5 es una computadora inexistente en tu red) #iptables -t nat -A PREROUTING -p tcp -s 192.168.1.53 --dport 1863 -j DNAT --to-destination 192.168.1.5:1863 # # Aceptamos conexiones Yahoo! Messenger iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 5000:5010 -j ACCEPT ## STREAMING # pendiente... (posiblemente estara bloqueado) # 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 # Activamos el redireccionamiento del puerto 80 -> 3128 para hacerlo transparente iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red # Cerramos el rango de puertos bien conocidos 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 # Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe. iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP echo " OK . Verifique lo que se aplica con: iptables -L -n" # Fin del script