|
|
|
|
Administración de Sistemas Operativos
| ||
| Inicio ASO | Aula Virtual |
La tecnología de firewall de Linux ha evolucionado desde sencillos filtros de paquetes lineales hasta los motores actuales de inspección de paquetes de estado. Los núcleos de Linux 2.0 emplean una implementación de reglas de filtrado de paquetes que utilizan tres pilas: INPUT (tráfico de entrada), OUTPUT (tráfico de salida) y FORWARD (paquetes que se reenvían a otro equipo). Los paquetes llegan a la parte superior de las pilas y se filtran a través de las reglas hasta que exista una coincidencia. En este punto, cada paquete se puede aceptar, descartar, rechazar o reenviar. Si el paquete no coincide con ninguna de las reglas, pasa a la directiva predeterminada, que normalmente descarta el paquete.
Aunque la capacidad nativa de firewall de los núcleos de Linux 2.0 era más que adecuada para generar firewalls, en la siguiente versión del núcleo 2.2 apareció Ipchains que incorporó nuevas y eficaces características: permite la definición de nuevas pilas y mejora la administración de las reglas de una pila.
A partir del desarrollo del núcleo 2.3, los programadores de Linux comenzaron a trabajar en iptables (también llamado netfilter). Iptables mejoró las ventajas de administración de conjuntos de reglas al permitir la capacidad de crear y anular asociaciones de conjunto de reglas con sesiones existentes. Con Iptables, el firewall se puede programar para asociar el tráfico devuelto generado a partir de una regla INPUT anterior. El tráfico que entra correctamente en el host puede salir automáticamente del host al ser devuelto, indicando simplemente al firewall que genere dinámicamente una regla de devolución.
Las ventajas de la tecnología de inspección de paquetes de estado (SPI, State Packet Inspection) no se limitan a la eficacia de las reglas. Ipchains no permite diferenciar la “verdadera naturaleza” del tráfico de la red. Por ejemplo, un firewall ipchains programado para permitir el tráfico FTP de salida también tendrá una regla INPUT asociada para permitir la devolución de paquetes. Si un atacante puede fabricar paquetes FTP devueltos, Ipchains permite su entrada. Con SPI no existe ninguna sesión para asociar estos paquetes falsificados y, por tanto, el firewall los rechazaría.
Iptables puede manejar varias tablas, pero las más importantes son:
Los comandos básicos de iptables son:
Las acciones que se pueden realizar en la tabla FILTER son:
Las acciones que se pueden realizar en la tabla NAT son:
De esta forma puede “jugar” con los parámetros de una determinada regla para poder especificar la acción que se aplica. A continuación puede ver tres reglas, para permitir el tráfico que reenvía el router, que van desde la más general a la más específica:
Para comprender mejor iptables imagine que tiene un router con tres redes: la externa, la red interna (192.168.1.0/24) y la zona neutra (172.16.0.0/24). Lo que desea hacer es configurar el cortafuegos para que permita el acceso de la red interna al exterior en los puertos web (80/TCP) y DNS (53/UDP). Además, se va a publicar un servidor web interno que se encuentra en la dirección 172.16.0.100.
# Limpiamos la configuración del cortafuegos iptables -F iptables -t nat -F # Indicamos que la red interna tiene acceso al exterior en los # puertos http(80/TCP), dns (53/UDP) y todo el tráfico que proviene # de conexiones establecidas en los puertos anteriores iptables -A FORWARD -s 192.168.1.0/24 -p TCP --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -p UDP --dport 53 -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Todo lo demás se deniega. Es igual que IPTABLES –P FORWARD DROP iptables -A FORWARD -s 0.0.0.0/0 -j DROP # Indicamos que la red interna tiene salida al exterior por NAT. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQUERADE # Permitimos el reenvío de tráfico echo "1" >/proc/sys/net/ipv4/ip_forward # Redirigmos el tráfico web que entra por la interfaz # externa (eth0) al servidor que hay en la zona neutra iptables -t nat -A PREROUTING -i eth0 –p tcp --dport 80 -j DNAT -- to 172.16.0.100:80
Finalmente, para guardar la configuración del sistema, primero tiene que guardar la configuración del cortafuegos ejecutando el comando:
iptables-save >/etc/sysconfig/iptables
y modificar el fichero /etc/sysctl.conf para establecer la variable net.ipv4.ip_forward=1. También se puede guardar la configuración de iptables ejecutando
service iptables save
Como se ha comentado antes, con el comando iptables –A <parámetros> -j <acción> puede definir la acción que quiere que realice el cortafuegos con un determinado tráfico. En la tabla 1 puede ver los parámetros que se utilizan para especificar el tráfico.