All pastes #576807 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-06-19 17:10 UTC
rendered paste body
#!/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
##########################################