Firewalls en Linux (II)
¿Y cómo se establece un firewall de filtrado de paquetes bajo Linux?
Los Kernels de Linux implementan el filtrado de paquetes desde la serie 1.1. La primera generación, basada en ipfw de BSD, fue portada por Alan Cox en 1994. Esto fue mejorado por Jos Vos y otros para el Kernel 2.0; la herramienta de espacio de usuario "ipfwadm" controlaba las reglas de filtrado. A mediados de 1998, con Linux 2.2, Rusty Russell reelaboró el Kernel en forma radical, con la ayuda de Michael Neulling, e introdujo la herramienta de espacio de usuario "ipchains". Finalmente, la herramienta de cuarta generación, "iptables", y otra reescritura del Kernel, a mediados de 1999, llegaron con Linux 2.4.
Si usted está usando un Kernel de la serie 2.4 o superior, ya tiene la estructura de netfilter incorporada en él. Netfilter (1) es un framework general dentro del Kernel de Linux al que otras cosas (como el módulo iptables) pueden acoplarse. La herramienta iptables habla al Kernel, y le dice qué paquetes filtrar, y cómo hacerlo. A menos que sea un programador (o extremadamente curioso), esto es todo lo que necesita saber sobre cómo el Kernel controla el filtrado…
Cómo se establecen las reglas
IP Tables es la cuarta generación de tecnología de firewalls de Linux, y el sucesor de IP Chains. Algunos sistemas Linux aún poseen ambas implementaciones (en casos muy aislados), pero la mayoría de los usuarios se decanta por IP Tables. La razón es que IP Tables incorpora un número muy grande de mejoras que no se encuentran en IP Chains ni en ningún otro firewall para Unix. Una de estas mejoras, y de las más importantes, es la posibilidad de realizar rastreo de conexiones y registro de transacciones para conexiones TCP, UDP e ICMP. Esto le da a IP Tables las habilidades de adaptarse dinámicamente a su entorno, de rastrear ataques mientras ocurren, y de adaptar el firewall para combatirlos.
Si bien IP Tables puede parecer difícil de aprender, la dificultad reside en que sus creadores han elegido una terminología incorrecta. Una vez salvado este detalle, se verá que IP Tables provee una forma muy elegante y simple de implementar filtrado de paquetes. Por suerte para nosotros, IP Tables viene del mismo padre que IP Chains (Rusty Russell), por lo que comparte mucha de su sintaxis, y hasta puede ser migrado con solo cambiar ipchains por iptables en muchos scripts básicos. Pero incorpora una mejora importantísima: las tablas. Una tabla en IP Tables es un módulo cargable que agrega filtrado de paquetes muy específico al Kernel. Hay en estos momentos tres clases de tablas que pueden utilizarse:
- Filter: Es la tabla por defecto. Contiene las cadenas built-in INPUT (para los paquetes destinados a la propia máquina), FORWARD (para aquellos que son enrutados a traves de la máquina), y OUTPUT (para aquellos paquetes que se generan localmente).
- Nat: Esta tabla se consulta cuando se encuentra un paquete que crea una nueva conexión. Consiste de tres cadenas built-in: PREROUTING (para alterar paquetes ni bien llegan), OUTPUT (para alterar paquetes generados localmente), y POSTROUTING (para alterar paquetes que estan a punto de salir).
- Mangle: Esta tabla es utilizada para alterar paquetes de manera muy específica. Hasta el kernel 2.4.17 tenía dos cadenas incluídas: PREROUTING (para alterar paquetes entrantes antes de enrutarlos) y OUTPUT (para alterar paquetes que generados localmente antes de que salgan). Desde el Kernel 2.4.18, tres cadenas más son soportadas: INPUT (para alterar paquetes que llegan a la máquina), FORWARD (para alterar paquetes enrutados a través de la máquina), y POSTROUTING (para alterar paquetes antes de que salgan).
Fuente: Revista Next It
Tags: