27 de Noviembre, 2008

Trabajar con iptables en CentOS

Tampoco es la leche, pero me he encontrado gente que no sabe cómo integrar sus reglas con la gestión que hace el sistema de iptables.

¿La consecuencia? Gente que pone reglas en ficheros dentro de /etc/init.d/ (¡horror!), incluso dentro de otros ficheros existentes (¡doble horror!), ¿quién espera encontrar reglas de iptables en ficheros que no tienen nada que ver con el tema? A eso lo llamo yo un sistema insostenible.

Pues es mucho más sencillo. Resulta que CentOS es una versión de comunidad de Red Hat, así que usaremos sus herramientas (que las hay).

Lo primero que podemos pensar es que será un GUI (un interfaz gráfico de usuario), aunque sea en modo texto, y los sysadm más clásicos arrugarán la nariz (ughks!). Pues no necesariamente :P.

En primer lugar, comprobamos que iptables arranca con el sistema:

# chkconfig --list iptables
iptables       	0:desactivado	1:desactivado	2:desactivado
3:desactivado	4:desactivado	5:desactivado	6:desactivado

En este caso no arrancará con el sistema (los números indican los runlevels, y todos están desactivados), así que lo cambiaremos para que sí lo haga:

# chkconfig iptables on
# chkconfig --list iptables
iptables       	0:desactivado	1:desactivado	2:activo
3:activo	4:activo	5:activo	6:desactivado

Por defecto aplica la información que tiene en un comentario /etc/init.d/iptables (chkconfig: 2345 08 92 en este caso), para decidir en qué runlevels se ejecuta.

Ahora arrancaríamos el servicio, seguido de un flush para empezar a poner nuestras reglas del cortafuegos:

# service iptables start
# iptables -F
# iptables -I INPUT 1 -i lo -p tcp  --dport 389 -j ACCEPT
# iptables -I INPUT 2 -i eth0 -p tcp --dport 389 -j REJECT

Como ejemplo he cerrado el acceso al puerto de LDAP, salvo para localhost. Tampoco voy a meterme demasiado a hablar de iptables :P.

Ahora guardamos esta configuración en el sistema:

# service iptables save
Guardando las reglas del cortafuegos a /etc/sysconfig/iptables [  OK  ]

Con lo que nos aseguramos que al arrancar el sistema se cargarán las reglas que hemos introducido (con las opciones start y stop podemos poner en marcha y parar iptables).

Puede ser interesante ojear /etc/sysconfig/iptables para ver que todo está correcto (es la salida de ejecutar iptables-save).

La verdad es que es bastante sencillo, y me parece muy buena idea saber cómo funcionan las cosas en el sistema en el que estamos trabajando, aunque signifique un pequeño esfuerzo extra :).

Anotación por Juan J. Martínez, clasificada en: iptables, red hat, centos.

Hay 3 comentarios

Gravatar

No me suena que se establezca esto por defecto. Anyway, ¿ QUé ventaja le ves esta forma sobre colocar (subdivididas según tabla/cadena y finalidad) las reglas en archivos concretos en init.d ?

por Sonicraver, en 2008-11-29 10:55:05

Gravatar

Debian no es CentOS, pero se pueden guardar las reglas de forma similar:

/etc/init.d/iptables save active
/etc/init.d/iptables save inactive

¿Ventajas? Es estándar, lo que significa que cualquier admin puede tocar un sistema que administra otra persona sin volverse loco.

A mi me parece suficiente :D

por Juanjo, en 2008-11-29 11:01:15

Gravatar

Nosotros lo hemos solucionado con un 'toma esto, aquí pone dónde están las reglas'; las tenemos en archivos en plan firewall.inet, firewall.forward, firewall.prerouting, y luego un launcher de todo. No es acorde a canon, pero hasta el momento nos aguanta.

Vamos, que tienes razón, aunque el asunto nos tire. Yo cuando tengo que revisar en corral ajeno empiezo con un "grep iptables" en /etc y desde ahí...

(BTW, yo ya he leído los libros con los que estás: 'la radio' me dejó un poco indiferente, pero cronopaisajes tiene muchas cucadas, a ver qué te parecen a tí...)

por Sonicraver, en 2008-11-29 11:06:40

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: