#!/bin/bash # # # Para guardar las reglas #+ iptables-save > reglas #+ iptables-restore < reglas # # Mirando si se tiene un parametro en linea de comando if [ -n "$1" ] && [ "$1" = "q" ] then QUIET="1" else QUIET="0" fi # Registrando el inicio del firewall #FECHA=$(date +"%C%y-%m-%d %H:%M") #echo $FECHA #/usr/bin/logger -p kern.notice -t NETFILTER \ # "====== Iniciado Cortafuegos: $FECHA =========" if [ $QUIET = "0" ]; then echo " Firewall Ghost Hecho por Sephiroth" echo " ---------------------------- ------" fi # PARAMETRIZACION DEL SCRIPT ########################################## ### Definiendo constantes para usar en el ###+ script if [ $QUIET = "0" ]; then echo " Cargando parametros..." fi # Binario de iptables IPTABLES=/sbin/iptables # INTERFACES # eth0 - conectado a internet con IP FIJA EXT_IF=eth0 EXT_IP=240.23.23.40 EXT_IP2=240.23.23.41 EXT_IP3=1240.23.23.42 # eth1 - conectado a LAN LAN_IF=eth1 LAN_IP=192.168.1.2 LAN_RED=192.168.1.0/24 # lo - interfaz de loopback LOO_RED=127.0.0.0/8 # cualquier red ANY_RED=0.0.0.0/0 # MAQUINAS INTERNAS IP_SERVIDOR_FTP=192.168.1.5 IP_SERVIDOR_MAIL=192.168.1.14 IP_SERVIDOR_BEDEF=192.168.1.15 IP_SERVIDOR_NAG=192.168.1.19 IP_SERVIDOR_UVIC=192.168.1.24 if [ $QUIET = "0" ]; then echo " Cargando modulos..." fi ########################################## ### Nos aseguramos que tenemos cargados ###+ los modulos necesarios modprobe ip_conntrack_irc modprobe ip_conntrack_ftp modprobe ip_nat_irc modprobe ip_nat_ftp if [ $QUIET = "0" ]; then echo " Limpiando FW..." fi ########################################## ### Limpiando la configuracion existente # Limpiamos (flush) las reglas $IPTABLES -F # Borramos 'cadenas' de usuario $IPTABLES -X # Ponemos a cero paquetes y contadores $IPTABLES -Z # Limpiamos las reglas de NAT $IPTABLES -t nat -F # Borramos 'cadenas' de usuario de NAT $IPTABLES -t nat -X if [ $QUIET = "0" ]; then echo " Estableciendo politicas..." fi ########################################## ### Estableciendo las politicas por omision ###+ de las 'cadenas' # Por omision se descartan los paquetes $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP # PREROUTING - NAT sobre la IP destino: normalmente desde inet hacia LAN # POSTROUTING - NAT sobre la IP origen: normalmente desde LAN hacia inet $IPTABLES -t nat -P PREROUTING DROP $IPTABLES -t nat -P POSTROUTING DROP # Se relajan las politicas de salida #+ Se Dejan salir paquetes de LAN_IP por LAN_IF $IPTABLES -A OUTPUT -o $LAN_IF -s $LAN_IP -j ACCEPT #+ Se Dejan salir paquetes de EXT_IP por EXT_IF $IPTABLES -A OUTPUT -o $EXT_IF -s $EXT_IP -j ACCEPT if [ $QUIET = "0" ]; then echo " -> Denegacion de redes invalidas..." fi ########################################## # No se admite desde el exterior a redes locales (RFC 1918) $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 192.168.0.0/16 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 10.0.0.0/8 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 172.16.0.0/12 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 224.0.0.0/4 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 240.0.0.0/5 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s $LOO_RED -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 0.0.0.0/8 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 169.254.0.0/16 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s 255.255.255.255 -j DROP $IPTABLES -t nat -A PREROUTING -i $EXT_IF -s $EXT_IP -j DROP # Desde el interior solo se admiten de nuestra red LAN $IPTABLES -t nat -A PREROUTING -i $LAN_IF -s ! $LAN_RED -j DROP if [ $QUIET = "0" ]; then echo " -> Denegacion de broadcast de NetBIOS..." fi ########################################## # Bloquear paquetes broadcast de NetBios salientes iptables -A FORWARD -p tcp --sport 137:139 -o $EXT_IF -j DROP iptables -A FORWARD -p udp --sport 137:139 -o $EXT_IF -j DROP iptables -A OUTPUT -p tcp --sport 137:139 -o $EXT_IF -j DROP iptables -A OUTPUT -p udp --sport 137:139 -o $EXT_IF -j DROP if [ $QUIET = "0" ]; then echo " Activando NAT..." fi ########################################## # Activamos el bit de forward echo 1 > /proc/sys/net/ipv4/ip_forward # Se enmascara la salida de la LAN $IPTABLES -t nat -A POSTROUTING -s $LAN_RED -o $EXT_IF -j MASQUERADE if [ $QUIET = "0" ]; then echo " Accesos a la maquina local permitidos..." fi ########################################## ### Permitimos ciertos accesos a la maquina if [ $QUIET = "0" ]; then echo " -> loopback..." fi #Se Permiten todas las conexiones del interfaz loopback #$IPTABLES -A INPUT -i lo -j ACCEPT #$IPTABLES -A OUTPUT -o lo -j ACCEPT $IPTABLES -A INPUT -i lo -s $LOO_RED -d $LOO_RED -j ACCEPT $IPTABLES -A OUTPUT -o lo -s $LOO_RED -d $LOO_RED -j ACCEPT #Se Permite el PostEnrutado de paquetes enviados localmente $IPTABLES -t nat -A POSTROUTING -o lo -s $LOO_RED -j ACCEPT if [ $QUIET = "0" ]; then echo " -> LAN..." fi # Se da acceso desde la red local $IPTABLES -A INPUT -s $LAN_RED -i $LAN_IF -j ACCEPT $IPTABLES -A OUTPUT -d $LAN_RED -o $LAN_IF -j ACCEPT if [ $QUIET = "0" ]; then echo " -> DNS..." fi #Se Aceptan conexiones DNS $IPTABLES -A INPUT -s $ANY_RED -i $EXT_IF -p udp -m udp --sport 53 --dport 1024:65535 -j ACCEPT $IPTABLES -A OUTPUT -d $ANY_RED -o $EXT_IF -p udp -m udp --dport 53 --sport 1024:65535 -j ACCEPT $IPTABLES -A INPUT -s $ANY_RED -i $EXT_IF -p udp -m udp --sport 953 --dport 1024:65535 -j ACCEPT $IPTABLES -A OUTPUT -d $ANY_RED -o $EXT_IF -p udp -m udp --dport 953 --sport 1024:65535 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> ntpd..." fi #Se Aceptan conexiones ntpd $IPTABLES -A INPUT -p udp -m udp --dport 123 -i $EXT_IF -s $ANY_RED -j ACCEPT $IPTABLES -A OUTPUT -p udp -m udp --sport 123 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> icmp..." fi #Se Permiten paquetes ICMP (ping, traceroute...) #+ con limites para evitar ataques de DoS # Se acepta ping y pong $IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT $IPTABLES -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT # Se aceptan redirecciones $IPTABLES -A INPUT -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT # Se Acepta tiempo excedido $IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT #Se Acepta destino inalcanzable $IPTABLES -A INPUT -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT if [ $QUIET = "0" ]; then echo " -> SSH..." fi #Se Abre el puerto 2222 para ssh #$IPTABLES -A INPUT -p tcp -i $EXT_IF -s $ANY_RED -m tcp --dport 2222 --sport 1024:65535 -j ACCEPT $IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 2222 --sport 1024:65535 -m state --state NEW -j LOG --log-prefix "[FW - SSH]" $IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 2222 --sport 1024:65535 -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -A OUTPUT -p tcp -m tcp --sport 2222 -m state --state RELATED,ESTABLISHED -j ACCEPT #if [ $QUIET = "0" ]; then # echo " -> Servicio WEB HTTP 80..." #fi ##Se Abre el puerto 80 para Apache #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 80 --sport 1:1024 -m state --state NEW -j ACCEPT #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 80 --sport 1:1024 -j ACCEPT ## ...y conexiones salientes relacionadas #$IPTABLES -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT #if [ $QUIET = "0" ]; then # echo " -> Servicio WEB HTTPS 443..." #fi #Se Abre el puerto 443 para Apache #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 443 --sport 1:1024 -m state --state NEW -j ACCEPT #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 443 --sport 1:1024 -j ACCEPT # ...y conexiones salientes relacionadas #$IPTABLES -A OUTPUT -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT #if [ $QUIET = "0" ]; then # echo " -> Servicio 25 SMTP..." #fi ##Se Abre el puerto 25 para SMTP #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 25 --sport 1:1024 -m state --state NEW -j ACCEPT #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 25 --sport 1:1024 -j ACCEPT # ...y conexiones salientes relacionadas #$IPTABLES -A OUTPUT -p tcp -m tcp --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT #if [ $QUIET = "0" ]; then # echo " -> Servicio 110 POP3..." #fi ##Se Abre el puerto 110 para POP3 #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 110 --sport 1:1024 -m state --state NEW -j ACCEPT #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 110 --sport 1:1024 -j ACCEPT ## ...y conexiones salientes relacionadas $IPTABLES -A OUTPUT -p tcp -m tcp --sport 110 -m state --state RELATED,ESTABLISHED -j ACCEPT #if [ $QUIET = "0" ]; then # echo " -> Servicio 143 IMAP..." #fi ##Se Abre el puerto 143 para IMAP #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 143 --sport 1:1024 -m state --state NEW -j ACCEPT #$IPTABLES -A INPUT -p tcp -s $ANY_RED -m tcp --dport 143 --sport 1:1024 -j ACCEPT ## ...y conexiones salientes relacionadas #$IPTABLES -A OUTPUT -p tcp -m tcp --sport 143 -m state --state RELATED,ESTABLISHED -j ACCEPT if [ $QUIET = "0" ]; then echo " Redirecciones..." fi ########################################## ###Se Generan redireccionamientos ###+ transparentes para el resto de maquinas #if [ $QUIET = "0" ]; then # echo " -> Proxy web transparente (Squid)..." #fi #+ Con la redireccion activa (primera linea) #+ no se llega a la segunda linea #+ Para bloquear todo acceso a la web comentar #+ solo la primera linea #+ Para anular el proxy comentar las dos reglas #$IPTABLES -t nat -A PREROUTING -i $LAN_IF -s $LAN_RED -p tcp --dport 80 -j REDIRECT --to-port 3128 #$IPTABLES -A FORWARD -i $LAN_IF -p tcp --dport 80 -j DROP #if [ $QUIET = "0" ]; then # echo " -> Filtro de correo (P3Scan)..." #fi #+ Con la redirección activa (primera linea) #+ no se llega a la segunda linea #+ Para bloquear todo acceso a POP comentar #+ solo la primera linea #+ Para anular el filtrado comentar las dos reglas #$IPTABLES -t nat -A PREROUTING -i $LAN_IF -s $LAN_RED -p tcp --dport 110 -j REDIRECT --to-port 8110 #$IPTABLES -A FORWARD -i $LAN_IF -p tcp --dport 110 -j DROP ###$IPTABLES -t nat -A OUTPUT -p tcp --dport 110 -m owner --owner-id p3scan -j ACCEPT ###$IPTABLES -t nat -A OUTPUT -p tcp --dport 110 -j REDIRECT --to-port 8110 if [ $QUIET = "0" ]; then echo " -> DNAT (21 y 20 SERVER FTP)..." fi #Se Redirige "$EXT_IP":2220-1 a "$IP_SERVIDOR_FTP":20-1 ###$IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 21 -j LOG --log-prefix "[FW - FTP] " $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 220 -j DNAT --to "$IP_SERVIDOR_FTP":20 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 221 -j DNAT --to "$IP_SERVIDOR_FTP":21 # ...y conexiones salientes relacionadas (ftp pasivo) $IPTABLES -t nat -A PREROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT #Se Permiten postruteos a "$IP_SERVIDOR_FTP":20-1 $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_FTP -p tcp --dport 20 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_FTP -p tcp --dport 21 -j ACCEPT # Permitimos reenvios desde el exterior a "$IP_SERVIDOR_FTP":20-1 $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_FTP -p tcp --dport 20 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_FTP -p tcp --dport 21 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> DNAT (80_HTTP y 443_HTTPS BEDEF WEB)..." fi #Se Redirige "$EXT_IP":443-80 a "$IP_SERVIDOR_BEDEF":443-80 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 80 -j DNAT --to "$IP_SERVIDOR_BEDEF":80 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 443 -j DNAT --to "$IP_SERVIDOR_BEDEF":443 #Se permiten postruteos a "$IP_SERVIDOR_BEDEF":443-80 $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_BEDEF -p tcp --dport 80 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_BEDEF -p tcp --dport 443 -j ACCEPT #Se permiten reenvios desde el exterior a "$IP_SERVIDOR_BEDEF":443-80 $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_BEDEF -p tcp --dport 80 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_BEDEF -p tcp --dport 443 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> DNAT (80_HTTP WEB UVIC)..." fi #Se Redirigen "$EXT_IP3":80 a "$IP_SERVIDOR_UVIC":80 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP3 -p tcp --dport 80 -j DNAT --to "$IP_SERVIDOR_UVIC":80 #Se Permiten postruteos a "$IP_SERVIDOR_UVIC":80 $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_UVIC -p tcp --dport 80 -j ACCEPT #Se Permiten reenvios desde el exterior a "$IP_SERVIDOR_UVIC":80 $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_UVIC -p tcp --dport 80 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> DNAT (80_HTTP y 443_HTTPS SERVER WEBMAIL + HOSTING)..." fi #Se Redirigen "$EXT_IP2":443-80 a "$IP_SERVIDOR_MAIL":443-80 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP2 -p tcp --dport 80 -j DNAT --to "$IP_SERVIDOR_MAIL":80 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP2 -p tcp --dport 443 -j DNAT --to "$IP_SERVIDOR_MAIL":443 #Se Permiten postruteos a "$IP_SERVIDOR_MAIL":443-80 $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 80 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 443 -j ACCEPT #Se Permiten reenvios desde el exterior a "$IP_SERVIDOR_MAIL":20-1 $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 80 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 443 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> DNAT (25_SMTP, 110_POP3 ,143_IMAP SERVER MAIL)..." fi # Se Redirigen "$EXT_IP2":25-110-143 a "$IP_SERVIDOR_MAIL":25-110-143 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP2 -p tcp --dport 25 -j DNAT --to "$IP_SERVIDOR_MAIL":25 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP2 -p tcp --dport 110 -j DNAT --to "$IP_SERVIDOR_MAIL":110 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP2 -p tcp --dport 143 -j DNAT --to "$IP_SERVIDOR_MAIL":143 #Se Permiten postruteos a "$IP_SERVIDOR_MAIL":25-110-143 $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 25 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 110 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 143 -j ACCEPT #Se permiten reenvios desde el exterior a "$IP_SERVIDOR_MAIL":25-110-143 $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 25 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 110 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 143 -j ACCEPT if [ $QUIET = "0" ]; then echo " -> (SSH 2323 -> SERVER MAIL)(SSH 2324 -> SERVER BEDEF)(SSH 2325 -> SERVER UVIC)" fi #Se Redirige "$EXT_IP1":2323, 2324, 2325 a "$IP_SERVIDOR_MAIL":2223 ,"$IP_SERVIDOR_BEDEF":2224, "$IP_SERVIDOR_UVIC":2225 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 2323 -j DNAT --to "$IP_SERVIDOR_MAIL":2627 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 2324 -j DNAT --to "$IP_SERVIDOR_BEDEF":22 $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -p tcp --dport 2325 -j DNAT --to "$IP_SERVIDOR_UVIC":22 #Se Permiten postruteos a "$IP_SERVIDOR_MAIL":2323 "$IP_SERVIDOR_BEDEF":2324 "$IP_SERVIDOR_MAIL":2325 $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 2627 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_BEDEF -p tcp --dport 22 -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -d $IP_SERVIDOR_UVIC -p tcp --dport 22 -j ACCEPT #Se Permiten reenvios desde el exterior a "$IP_SERVIDOR_MAIL":2323 "$IP_SERVIDOR_BEDEF":2324 "$IP_SERVIDOR_MAIL":2325 $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_MAIL -p tcp --dport 2627 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_BEDEF -p tcp --dport 22 -j ACCEPT $IPTABLES -A FORWARD -i $EXT_IF -d $IP_SERVIDOR_UVIC -p tcp --dport 22 -j ACCEPT if [ $QUIET = "0" ]; then echo " Reenvios..." fi ########################################## ###Se Aceptan algunos reenvios if [ $QUIET = "0" ]; then echo " -> icmp..." fi #Se Permiten paquetes ICMP (ping, traceroute...) #+ con limites para evitar ataques de DoS #Se Acepta ping y pong $IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 2/s -j ACCEPT $IPTABLES -A FORWARD -p icmp --icmp-type echo-reply -m limit --limit 2/s -j ACCEPT #Se Aceptan redirecciones $IPTABLES -A FORWARD -p icmp --icmp-type redirect -m limit --limit 2/s -j ACCEPT #Se Acepta tiempo excedido $IPTABLES -A FORWARD -p icmp --icmp-type time-exceeded -m limit --limit 2/s -j ACCEPT #Se Acepta destino inalcanzable $IPTABLES -A FORWARD -p icmp --icmp-type destination-unreachable -m limit --limit 2/s -j ACCEPT #Se Aceptan todas en LAN_IF $IPTABLES -t nat -A PREROUTING -i $LAN_IF -p icmp --icmp-type any -m limit --limit 2/s -j ACCEPT $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -p icmp --icmp-type any -m limit --limit 2/s -j ACCEPT if [ $QUIET = "0" ]; then echo " Salida general..." fi ########################################## ###Se Aceptan conexiones salientes #Se Permite cualquier salida tcp desde la propia maquina $IPTABLES -A OUTPUT -o $EXT_IF -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # ...y conexiones entrantes relacionadas $IPTABLES -A INPUT -i $EXT_IF -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT #Permite el reenvio de paquetes enviados desde la LAN $IPTABLES -A FORWARD -i $LAN_IF -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT #Se Permite el NAT de paquetes enviados desde la LAN $IPTABLES -t nat -A PREROUTING -i $LAN_IF -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -t nat -A PREROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT #Se Permite el NAT de paquetes enviados desde inet hacia la IP publica $IPTABLES -t nat -A PREROUTING -i $EXT_IF -d $EXT_IP -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -t nat -A PREROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT #Se Permite el NAT de paquetes enviados desde la IP publica hacia inet $IPTABLES -t nat -A POSTROUTING -o $EXT_IF -s $EXT_IP -j ACCEPT # ...y conexiones salientes relacionadas $IPTABLES -t nat -A POSTROUTING -m state --state RELATED,ESTABLISHED -j ACCEPT #Se Permiten el PostEnrutado de paquetes enviados localmente $IPTABLES -t nat -A POSTROUTING -o $LAN_IF -s $LAN_RED -j ACCEPT if [ $QUIET = "0" ]; then echo " Cerrando puertos restringidos..." fi ########################################## ### Puertos restringidos ###+ Reiterativo: para pruebas $IPTABLES -A INPUT -p tcp --dport 1:1024 -j DROP $IPTABLES -A INPUT -p udp --dport 1:1024 -j DROP ###echo " ACTIVADO DEBUG..." ########################################## ### Reglas utilizadas en debug para detectar #+ paquetes no tratados todavia #+ -j LOG --log-prefix "--PR> " ###$IPTABLES -t nat -A PREROUTING -j LOG --log-prefix "[FW - PR] " ###$IPTABLES -t nat -A POSTROUTING -j LOG --log-prefix "[FW - PO] " ###$IPTABLES -A FORWARD -j LOG --log-prefix "[FW - FW] " ###$IPTABLES -A INPUT -j LOG --log-prefix "[FW - IN] " ###$IPTABLES -A OUTPUT -j LOG --log-prefix "[FW - OU] " if [ $QUIET = "0" ]; then echo " Configuracion FW terminada." echo "" echo " A continuacion podria desear:" echo " - verificar reglas: iptables -nvL && iptables -nvL -t nat" echo " - guardar reglas: iptables-save > reglas" echo " - restaurar reglas: iptables-restore < reglas" fi ##########################################