CuRiOsIdAd GEEK!

por Koji-kabuto usuario IRC Freenode

IPTABLES en Linux, parte fundamental para protegernos.

Muchos de los nuevos usuarios Linux no toman en cuenta la seguridad en su Sistema, IPTABLES es un firewall que viene en toda distribución, su configuración es parte fundamental.

Si comparamos, Internet es como si fuera las ciudades, calles, donde pasan un sin fin de personas, tu pc es tu casa, como toda casa tiene puertas y ventanas. Tu sabes si le pones vidrios blindados o si tu puerta estará siempre abierta o cerrada.

En eso consiste en tener un Firewall, gestionar tus puertos de comunicación y evitar que te roben en tu casa.

En varias comunidades siempre me mencionan que use herramientas para la X pero pues yo prefiero mi script para configurar IPTABLES teniendo la ventaja que puedes configurar todo a tu gusto “a la medida”. Aunque no hay que negar que las interfaces te facilitan todo pues ya tiene reglas mas complejas y efectivas.

Los siguientes scripts vienen detallados de lo que hacen aunque creo que la mejor manera de estar protegidos es cerrar todo puerto por haber y despues abrir solo los necesarios.

#!/bin/sh
## SCRIPT de IPTABLES – ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet

echo -n Aplicando Reglas de Firewall…

## 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
## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN
# El localhost se deja (por ejemplo conexiones locales a mysql)
/sbin/iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j ACCEPT

#en caso de tener apache funcionando abrir port 80

iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 80 -j ACCEPT

# bloquear posibles ICMP extraños
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

## 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 -p tcp –dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp –dport 1:1024 -j DROP

#cerrar webproxy
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 8080 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 10000 -j DROP

echo ” OK . Verifique que lo que se aplica con: iptables -L -n”

# Fin del script

Es importante el archivo siempre tenga al inicio #!/bin/sh

Creo que esta bastante explicado es lo mas basico que uno debe llevar en un script para IPTABLES esto lo podemos guardar en un archivo de texto y despues darle permisos de ejecución

$ chmod u+x /ruta/archivo

y listo con solo ejecutar,

$ sudo /ruta/./archivo

en ese momento pedira el password para ejecucion en modo root (para cambiar reglas siempre usar root, notar el . antes de la / ya que eso realiza la ejecución) y las reglas estarán activa.

A todos nos ha pasado que cuando estamos experimentando con IPTABLES llega un momento de querer borrar toda reglas existente en el mismo, lo podemos hacer de forma segura de la siguiente forma usando este pequeño script.

#!/bin/sh
#limpio mis reglas
iptables –flush
iptables –table nat –flush
iptables –delete-chain
iptables –table nat –delete-chain

Igual lo guardamos en un archivo de texto con el nombre limpiareglas (tu puedes ponerle el nombre que quieras) y le damos permisos de ejecución (arriba ya lo mencione).

Listo, al ejecutar:

$ sudo ./limpiareglas

se limpiara todas las reglas contenidas en IPTABLES.

Para que se te haga comodo puedes ejecutar todo script desde tu X, creando un lanzador que contenga como comando

sudo /ruta/donde/se/encuentra/el/archivo/./archivoaejecutar

(en caso de un script con reglas iptables es necesario el “sudo”, si en otros scripts no lo requieres no lo añadas)

Despues marcar la casilla que dice “Ejecutar en Terminal” y no olvides ponerle nombre al lanzador, cada vez que ejecutes el lanzador te mandará a una consola y pedirá que introduzcas el password (recuerda es el password que usas al utilizar sudo).

Hay un sin fin de maneras de usar un script, no nadamas para IPTABLES, de hecho puedes programar cosas mas complejas segun tus necesidades.

Fuentes a consultar: IPTABLES manual práctico

15 Agosto 2006 Publicado por kojikabuto | Linux | | 10 comentarios