Configuración de mi Firewall
Comparte este post:
Bueno gracias a la documentación que hay en internet encontré un ejemplo de la configuración de un Firewall hecha por Pello Xabier Altadill y la adecué a la configuración que necesitaba y lo coloqué en el script cuando inicia la red y listo, tengo mi Firewall, que era en un principio un Proxy Transparente con Squid, pero ahora sólo es un Firewall.
Ahí les dejo el ScriptSaludos
#!/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
modprobe ip_tables modprobe ip_nat_ftp modprobe ip_conntrack_ftp modprobe ipv6 ## 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 ## REDIRECCIONES # Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos # a una maquina interna iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.10.0.2:80 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to 10.10.0.2:22 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to 10.10.0.2:21 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3306 -j DNAT --to 10.10.0.2:3306 # MySQL iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5432 -j DNAT --to 10.10.0.2:5432 # PostgreSQL iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8800 -j DNAT --to 10.10.0.2:8800 # IceCast #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8800 -j DNAT --to 10.10.0.2:5901 # VNC #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8800 -j DNAT --to 10.10.0.2:6001 # VNC ## 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 puertos para que accedan desde el exterior iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 21 -j ACCEPT iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 3306 -j ACCEPT # MySQL iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 5432 -j ACCEPT # PostgreSQL iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 8800 -j ACCEPT # IceCast #iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 5901 -j ACCEPT # VNC #iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 6001 -j ACCEPT # VNC #Abrir puertos para que accedan desde la red local #iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 5432 -j ACCEPT #PostgreSQL #iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT #MySQL # IMPEDIMOS QUE NAVEGUEN iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 80 -j DROP ## 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 # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) #iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 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 iptables -L -n # Fin del script
If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!




Junio 5th, 2007 at 9:45 AM
hola es muy bueno tu firewall pero una consulata y disculpa mi ignorancia donde pego est escript para que corra en mi linux al momento de iniciarlo , gracias willi
Junio 6th, 2007 at 3:53 PM
Bueno hay varias maneras, pero yo lo coloqué la ruta del script que cree, en el script de inicio de la RED. En Debian sería en el archivo:
/etc/init.d/networking
y en la linea donde inicia el servicio antes de los “;;” coloqué el la ruta del script. así:
———–
case “$1″ in
start)
….
….
/root/firewall.sh
;;
—————
, cada vez que inicies la red o ya sea de forma automática al iniciar el servidor o manualmente al ejecutar el servicio se activarán las reglas
Donde firewall.sh es el script con las lineas arriba descritas(con sus respectivos permisos claro
Saludos.
Junio 19th, 2007 at 1:56 PM
doble guion\
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 5432 -j ACCEPT #PostgresSQL