El uso de cortafuegos para la protección de nuestros sistemas es una de las principales medidas de seguridad que establecemos siempre. En el mundo Linux existe una inmensa variedad de herramientas que permiten realizar las funciones de un cortafuego, dentro de ellas estan Uncomplicated Firewall(UFW) que viene por defecto en Ubuntu, SuSeFirewall que viene dentro de OpenSuse pero toda la gama Suse lo lleva y otros como el que veremos hoy Iptables que viene por defecto en Centos, Debian y otras distribuciones. Una lista mas extensa puede ser encontrada en un excelente articulo publicado en The geek stuff sobre los 5 principales cortafuegos en Linux.
Iptables es un programa que permite el filtrado de paquetes para IPv4, permite la traduccion de direcciones y traslación de puertos. Cuando iptables recibe un paquete puede aceptarlo, rechazarlo, eliminarlo o mantenerlo en cola según las reglas que establezcamos.
La configuración de iptables se hace a través de reglas, las mismas deben ser escritas utilizando una sintaxis establecida, pero pueden interpretarse como si establacieramos una regla común. Por ejemplo, la política por defecto es denegar todas las conexiones entrantes, escrito en una regla quedaría
-A INPUT -j REJECT
Si lo que queremos es restringir las entradas a una determinada interfaz de red como por ejemplo el eth0 la regla quedaría:
-A INPUT -i eth0 -j REJECT
Veamos cuales son las partes que conforman las reglas. La opción -A o –append adiciona una regla, específicando a que lista se adiciona, que puede ser de entrada, salida o reenvío. La segunda opción -i permite establecer sobre que interfaz se aplicará la regla y la opción -j la acción a realizar que puede ser aceptar, denegar, o rechazarlo.
Las opciones comunes para usar en iptables son:
- -A ó –append para agregar una nueva regla.
- -i ó –in-interface para establecer la interfaz de red de entrada
- -o ó –out-interface para establecer la interfaz de red de salida
- -s o –source para establecer la subred o IP para el cual se va a cumplir la regla
- -p ó –proto para establecer el protocolo para el cual se va a cumplir la regla
- -j ó –jump para especificar la acción a realizar con el paquete que cumpla con la regla.
- –dport para establecer el puerto para el cual se va a cumplir la regla
¿Dónde se escriben las reglas?
Donde escribir las reglas para el iptables varía en dependencia del sistema. Por ejemplo en Centos el archivo donde escribir las reglas es /etc/sysconfig/iptables, en Ubuntu y Debian se puede modificar el archivo /etc/init.d/iptables, pero el proceso para hacerlo no es así. Las reglas se escriben en un archivo cualquiera pero que empiece con *filter y termine con un COMMIT como por ejemplo este:
*filter -A INPUT -i lo -j ACCEPT -A INPUT -p tcp --dport 80 -s 10.0.0.0/8 -j ACCEPT -A INPUT -j REJECT -A OUTPUT -j ACCEPT COMMIT
Luego con el comando iptables-restore especificamos el archivo que contiene las reglas
iptables-restore < /etc/reglas-iptables.rules
Se pueden comprobar las reglas usando el comando:
iptables -L
Para salvar las reglas en otro archivo se puede utilizar el comando iptables-save, específicando donde se van a guardar las reglas
iptables-save > /etciptables-up.rules
Esto no quiere decir que se ejecutará cuando inicie el sistema, para ello debemos crear un fichero dentro del directorio /etc/network/if-pre-up.d/ y en su contenido poner
#!/bin/bash /sbin/iptables-restore < /etc/iptables.up.rules
Ya con esto garantizamos que las reglas que establecimos se apliquen cuando inicie el sistema. De esta forma queda protegido nuestro equipo filtrando los paquetes y decidiendo que hacer con ellos.
Comentarios ( 4 )
En Nova/Ubuntu no me gusta usar ufw porque me limita mucho. Para los que quieran usar iptables con todas las de la ley, instálense el paquete iptables-persistent, que instala un “servicio”, o más bien un script de inicio en /etc/init.d/iptables-persistent y las reglas se almacenan en /etc/iptables/rules.v4 (para IPv4) y /etc/iptables/rules.v6 (para IPv6). Con /etc/init.d/iptables-persistent save , se salva las reglas, mientras que con /etc/init.d/iptables-persistent start o /etc/init.d/iptables-persistent restart se cargan.
@Dariem Concuerdo contigo, voy a probar esta recomendación que nos dejas, pero también creo que Ubuntu con ufw facilita el trabajo para los que no tiene que realizar tareas tan complejas así que lo veo bien útil también, en ocaciones de premura me ha salvado la piel.
Dariem llevo poco tiempo administrando los servidores de mi proyecto esto sumado a las tareas de desarrollo me dado poco tiempo para profundizar en la administración y configuración de los servidores, donde encontrar documentación para la creación de script para facilitar instalaciones y configuración, así como la creación imágenes con lo necesario instalado en mis servidores, todo para ubuntuServer
Yo también estoy interesado en configuraciones y scripts para servidores en ubuntu.
Saludos Osiel !!!. Buen artículo. No olvidemos al Señor Shorewall, que en el libro de Joel Barrios viene bien explicado como implementarlo.