Skip to content

IPtables, un cortafuegos en el núcleo de Linux

20/octubre/2009

Icono-FirewallEl núcleo de Linux incluye el subsistema Netfilter, que es usado para manipular o decidir el destino del tráfico de red entre o a través de su red. En Linux, todas las soluciones de firewall o cortafuegos modernos utilizan este sistema para el filtrado de paquetes.

El sistema de filtrado de paquetes del núcleo puede ser gestionado por los administradores a través de la interfaz  Iptables. Cuando un paquete llega a un servidor, éste es gestionado por el subsistema Netfilter para aceptarlo, manipularlo o rechazarlo basándose en las reglas suministradas a éste via iptables. Así, iptables es todo lo que necesita el usuario para manejar su cortafuegos si está familiarizado con él, pero existen muchos interfaces de usuario disponibles para simplificar esta tarea, por ejemplo Shorewall o Firestarter.

En versiones anteriores al núcleo de Linux 2.4.* se llamaba ipchain, pero a partir de esta versión se cambió a iptables, un sistema mucho mas potente.

iptables permite al administrador del sistema definir reglas acerca de qué hacer con los paquetes de red. Las reglas se agrupan en cadenas: cada cadena es una lista ordenada de reglas. Las cadenas se agrupan en tablas: cada tabla está asociada con un tipo diferente de procesamiento de paquetes.

Cada regla especifica qué paquetes la cumplen (match) y un destino que indica qué hacer con el paquete si éste cumple la regla. Cada paquete de red que llega a un computador o que se envía desde un computador recorre por lo menos una cadena y cada regla de esa cadena se comprueba con el paquete. Si la regla cumple con el datagrama, el recorrido se detiene y el destino de la regla dicta lo que se debe hacer con el paquete. Si el paquete alcanza el fin de una cadena predefinida sin haberse correspondido con ninguna regla de la cadena, la política de destino de la cadena dicta qué hacer con el paquete. Si el paquete alcanza el fin de una cadena definida por el usuario sin haber cumplido ninguna regla de la cadena o si la cadena definida por el usuario está vacía, el recorrido continúa en la cadena que hizo la llamada (lo que se denomina implicit target RETURN o RETORNO de destino implícito). Solo las cadenas predefinidas tienen políticas.

No hay un limite respecto de cuán anidadas pueden estar las cadenas. Hay tres cadenas básicas (INPUT, OUTPUT y FORWARD: ENTRADA, SALIDA y REENVÍO) y el usuario puede crear tantas como desee. Una regla puede ser simplemente un puntero a una cadena.

Ejemplo de un archivo con instrucciones para configurar el cortafuegos:

#!/bin/bash

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate NEW ! -i eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth1 -j REJECT
iptables -P INPUT DROP
iptables -P FORWARD DROP
echo "Cortafuegos Activado"

Si deseas profundizar en el uso de iptables te recomiendo la lectura de Iptables (doc.ubuntu-es) y Netfilter/iptables (Wikipedia). Como ya se indicó anteriormente, no es necesario configurar iptables de forma manual, ya que las distros ofrecen herramientas gráficas con las cuales se puede configurar el cortafuegos, por ejemplo, en openSUSE está la opción Cortafuegos disponible en YaST.

Cortafuegos en YaST2 de openSUSE

Cortafuegos en YaST2 de openSUSE

Anuncios

Los comentarios están cerrados.

A %d blogueros les gusta esto: