Router && Firewall: Script para iptables

Un router nos permite crear una ruta de ida y de vuelta de un paquete, se encarga de que dicho paquete llegue a su destino y que la respuesta llegue correctamente a su remitente. Nos servirá para “compartir” internet en nuestra LAN.

Un firewall nos va a permitir filtrar cierto trafico en nuestra red, por ejemplo habilitar o deshabilitar puertos, redireccionar, etc.

Para simplificar todo esto y poder compartir internet he creado un script bastante facil de usar y de configurar.

El script cuenta con lo siguiente:

  • fichero para habilitar puertos (whitelist): Nos permite indicar que puertos están disponibles para usar.
  • fichero para bloquear o banear ip (blacklist): Nos permite banear una serie de direcciones ip o host para que no puedan acceder a nuestra red.
  • fichero para redireccionar puertos (redirect): Nos permite habilitar puertos para cualquier maquina que este en nuestra red y redireccionar todo el tráfico.

El script:

interface=”eth0″;
port_whitelist=”whitelist”;
ip_blacklist=”blacklist”;
redirect=”redirect”;

#Activamos el BIT de ruteo
echo 1 >/proc/sys/net/ipv4/ip_forward

#Eliminamos reglas anteriores
iptables -F

#Establecemos reglas por defecto
iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -F

#Baneamos IP
echo “Bloqueando IP:”;
for num_ban in `cat $ip_blacklist`;
do
echo ” $num_ban”;
iptables -A INPUT -s $num_ban -j REJECT
done

#Abrimos puertos desde blacklist

echo “Habilitando puertos:”;
for num_p in `cat $port_whitelist`;
do
echo ” $num_p”
iptables -A INPUT -p tcp –dport $num_p -j ACCEPT -i $interface;
done;

echo “Bloqueando los otros puertos …”;
iptables -A INPUT -i $interface -p all -m state –state NEW,INVALID -j REJECT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
# Habilito el NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 0.0.0.0/0 -j MASQUERADE

#Redireccionamos puertos
echo “Redireccionando puertos:”
for redir in `cat $redirect`;
do
_type=`echo $redir|cut -f1 -d “/”`;
_from=`echo $redir|cut -f2 -d “/”`;
_to=`echo $redir|cut -f3 -d “/”`;
echo ” ($_type) $_from -> $_to”;
iptables -A PREROUTING -t nat -p $_type -i $interface –dport $_from -j DNAT –to $_to;
done

El fichero blacklist:

200.104.135.146
200.89.57.66
201.219.26.210
81.236.23.196
200.28.183.32

El fichero whitelist:

21
22
25
80
6667
8000
8080

El fichero redirect:

tcp/22/192.168.0.10:22
udp/8080/192.168.0.10:80

Una véz ejecutado el script, éste se encargara de cargar todos los ficheros , si ejecutamos el script con las configuraciones que he dado como ejemplo, bloqueara todo el trafico que venga desde las ip que estan en el fichero blacklist, permitira el trafico por los puertos que estan en whitelist y redireccionara de la siguiente forma, los datos que estan en redirect:
Redireccionara el trafico TCP que venga por el puerto 22 hacia el puerto 22 de la ip 192.168.0.10
Redireccionara el trafico UDP que venga por el puerto 8080 hacia el puerto 80 de la ip 192.168.0.10
Descargar script:
firewall.tar.gz

2 comentarios

  1. Uta ke eris ñoño!!!
    a ver pedazo de ñoñez cuando le aplicamos al bowling!!!

    nos vemos
    terrible hacker!

  2. Buen posto, no se me había ocurrido utilizar archivos para manejar los valores.

    Se agradece

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.