Protege tu Linux con IPtables!Aprende a configurarlo!

IPtables es un sistema de “firewall”, que está ligado al kernel del sistema, al igual que su predecesor “ipchains”. IPtables no tiene nada que ver con la idea que tenemos de firewall de Windows, que lo abrimos y cerramos, que puede dejar de funcionar porque el programa en si se bloquea, o porque lo bloquean aplicaciones malintencionadas como exploits. IPtables es como un script de shell, al que le vamos pasando comandos para configurarlo a nuestro gusto. Es sencillo, si, y probablemente por eso tan bueno.

 

 

Si llevamos todo esto al extremo al más bajo puro nivel de estudio, las respuestas a.. se puede parar IP tables? Es si, puesto que podemos implementar un script de inicio en /etc/rc.d/INIT.d con el que hacer que IPtables arranque o quede fuera de servicio.

 

Bueno vamos  al grano, tenemos un sistema Linux, y queremos protegernos usando IPtables, lo único que tenemos que hacer es escribir un script que se adapte a nuestras necesidades, puesto que cada sistema es un mundo, y no todos usamos el aMule, ni tenemos montado un FTP para que los colegas se bajen warez…

 

Un ejemplo de script bien configurado sería este:

#!/bin/sh
## Ejemplo de SCRIPT de IPTABLES
## Freelogs.NET
## Es un ejemplo adáptalo a tu máquina

echo -n Empezando…

## Algunas reglas interesantes
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Aceptamos ciertos protocolos básicos y necesarios…
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT


/sbin/iptables -A INPUT -i lo -j ACCEPT

# A nuestra IP le permitimos todo
iptables -A INPUT -s 192.168.1.1 -j ACCEPT

# Cerramos puertos abiertos…
iptables -A INPUT -p tcp –dport 3306 -j DROP
iptables -A INPUT -p tcp –dport 10000 -j DROP
iptables -A INPUT -p udp –dport 10000 -j DROP

echo ” Finalizada la carga de directrices a Iptables…”

Por ejemplo si tenemos un servidor de FTP y queremos dejar entrar a un amigo a bajarse archivos tendríamos que permitirlo también, añadiríamos algo así:
 iptables -A INPUT -s 80.23.25.123 -p tcp -dport 20:21 -j ACCEPT

Hay un montón de scripts por la red, muy bien comentados en castellano, con los que tenemos que ir jugando hasta tener la máquina bien configurada, los más gurús en la materia recomiendan cerrar todo, e ir abriendo según vayamos necesitando.

Un script muy paranoico con todo cerrado, y super seguro sería algo así:

 #!/bin/sh
## SCRIPT de IPTABLES –paranoico total.
## Ejemplo de script para proteger la propia máquina con DROP por defecto
## Realizado por  Xabier Altadill Izura bajado de Freelogs.NET

 

 

echo -n Aplicando Reglas de Firewall…

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto: DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

## Empezamos a filtrar? no! empezamos a abrir! porque ahora esta TODO denegado.
## Debemos decir de manera explicita qué es lo que queremos abrir

# Operar en localhost sin limitaciones
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# A nuestra IP le dejamos todo
iptables -A INPUT -s 195.65.34.234 -j ACCEPT
iptables -A OUTPUT -d 195.65.34.234 -j ACCEPT

# Este es el servicio que DA la maquina a internet, por tanto todo paquete entrante se acepta para
# ese puerto y los salientes vinculados se aceptan.
/sbin/iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT

# Permitimos que la maquina pueda salir a la web
/sbin/iptables -A INPUT -p tcp -m tcp –sport 80 -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 80 -j ACCEPT

# Ya tambien a webs seguras
/sbin/iptables -A INPUT -p tcp -m tcp –sport 443 -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 443 -j ACCEPT

# Reglas necesarias para FTP pasivo y activo. Se permiten conexiones entrantes YA establecidas
/sbin/iptables -A INPUT -p tcp -m tcp –sport 20:21 -m state –state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 20:21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp –dport 1024:65535 -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT

# Permitimos la consulta a un primer DNS
/sbin/iptables -A INPUT -s 211.95.64.39 -p udp -m udp –sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 211.95.64.39 -p udp -m udp –dport 53 -j ACCEPT

# Permitimos la consulta a un segundo DNS
/sbin/iptables -A INPUT -s 211.95.79.109 -p udp -m udp –sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -d 211.95.79.109 -p udp -m udp –dport 53 -j ACCEPT

# Permitimos consultar el reloj de hora.rediris.es (un pentium166) para sincronizarse
/sbin/iptables -A INPUT -s 130.206.3.166 -p udp -m udp –dport 123 -j ACCEPT
/sbin/iptables -A OUTPUT -d 130.206.3.166 -p udp -m udp –sport 123 -j ACCEPT

# Barrera de backup por si cambiamos a modo ACCEPT temporalmente
# Con esto protegemos los puertos reservados y otros well-known
/sbin/iptables -A INPUT -p tcp -m tcp –dport 1:1024 -j DROP
/sbin/iptables -A INPUT -p udp -m udp –dport 1:1024 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp –dport 1723 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp –dport 3306 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp –dport 5432 -j DROP

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

# Fin del script

Como aplicamos estas reglas a IPtables, pues muy fácil, guardamos los scripts en un archivo y los ejecutamos desde la consola.

 

Anuncios
  1. Muy bien explicado. Iptables suele ser un tema que los usuarios nuevos no entienden.

  1. 11/01/12

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: