El rincón de Zerial

Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio

Router && Firewall: Script para iptables

Diciembre 4th, 2007 · 3 Comentarios

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

Posts relacionados

Etiquetas: Documentacion · GNU/Linux · Interes general · Seguridad

3 respuestas hasta ahora ↓

  • 1
    Katty Porota CHILE Debian GNU/Linux Mozilla Firefox 2.0.0.7 // Dic 5, 2007 a las 10:23 pm

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

    nos vemos
    terrible hacker!

  • 2
    pamchi GUATEMALA Ubuntu Linux Mozilla Firefox 2.0.0.3 // Feb 6, 2008 a las 4:55 pm

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

    Se agradece

  • 3
    Scripts publicados en este blog | El ricón de Zerial UNITED STATES WordPress 2.7.1 // May 19, 2009 a las 1:14 am

    [...] firewall-router: Este es otro script en bash que facilita la creacion de reglas sobre iptables. Nos puede servir para que nuestra maquina sea un router y tambien firewall. Permite el routeo de paquetes, redireccionamiento de puertos, bloqueo de puertos, etc. Es bastante util y facil de usar, ademas permite el uso de ficheros externos para definir redirecciones de puertos, direcciones ip para bloquear, etc. [...]

Deja un Comentario