Si no sabes nada sobre IPTABLES, te recomiendo que leas nuestro primer artÃculo de introducción a IPTABLES para asà llevar una base antes de comenzar a explicar el tema de las tablas en este fantástico elemento del kernel Linux para filtrar y actuar como un potente y eficaz cortafuegos o firewall. Y es que la seguridad es algo que preocupa y cada vez más, pero si eres linuxero estás de suerte, puesto que Linux implementa una de las mejores herramientas que podamos encontrar para luchar contra las amenazas.
IPTABLES como ya deberÃas saber se integra en el propio kernel Linux, y forma parte del proyecto netfilter, que además de iptables se compone por ip6tables, ebtables, arptables e ipset. Es un firewall muy configurable y flexible como la mayorÃa de elementos de Linux, y a pesar de haber tenido alguna vulnerabilidad, no por ello deja de ser especialmente potente. Al estar dentro del núcleo, se inicia con el sistema y se mantiene activo todo el momento y al estar al nivel del kernel, recibirá paquetes y estos serán aceptados o rechazados consultando las reglas de iptables.
Los tres tipos de tablas:
Pero iptables funciona gracias a una serie de tipos de tablas que es el tema principal de este artÃculo.
Tablas MANGLE
Las tablas MANGLE se encargan de modificar los paquetes, y para ello tienen las opciones:
-
TOS: Type Of Service es usado para definir el tipo de servicio de un paquetes y se debe usar para definir cómo los paquetes deben ser enrutados, no para paquetes que vayan hacia Internet. La mayorÃa de los routers no hacen caso del valor de este campo o pueden actuar de forma imperfecta si se usan para su salida a Internet.
-
TTL: cambia el campo de tiempo de vida de un paquete. Sus siglas corresponden a Time To Live y, por ejemplo, se puede usar para cuando no queremos ser descubiertos por ciertos proveedores de servicios de Internet (ISP) que sean demasiado fisgones.
-
MARK:Â usado para marcar paquetes con valores especÃficos, consiguiendo liminar el ancho de banda y generar colas mediante CBQ (Class Based Queuing). Posteriormente pueden ser reconocidas por programas como iproute2 para realizar los diferentes enrutamientos dependiendo de la marca que tengan o no estos paquetes.
Quizás estas opciones no te suenen del primer artÃculo, puesto que no tocamos nada de ellas.
Tablas NAT: PREROUTING, POSTROUTING
Las tablas NAT (Network Address Translation), es decir, traducción de direcciones de red, serán consultadas cuando un paquete cree una nueva conexión. Permiten compartir una IP pública entre muchos equipos, por lo que resultan imprescindibles en el protocolo IPv4. Con ellas podemos añadir reglas para modificar las direciones de IP de los paquetes, y contienen dos reglas: SNAT (IP masquerading) para la dirección de origen y DNAT (Port Forwarding) para las direcciones destino.
Para hacer modificaciones, nos permite tres opciones que ya vimos algo de ellas en el primer artÃculo de iptables:
- PREROUTING: para modificar paquetes tan pronto como lleguen al equipo.
- OUTPUT: para la salida de paquetes que se generan localmente y van a ser enrutados para su salida.
- POSTROUTING: modificar paquetes que estén listos para salir del equipo.
Tablas de Filtrado:
Las tablas de filtrado se usan por defecto para gestionar paquetes de datos. Estas son las más usadas y son responsables del filtrado de los paquetes según se ha configurado el cortafuegos o filtro. Todos los paquetes pasan a través de esta tabla, y para la modificación tiene tres opciones predefinidas que también vimos en el artÃculo de introducción:
- INPUT:Â para la entrada, es decir, todos los paquetes destinados a entrar en nuestro sistema deben pasar por esta cadena.
- OUTPUT: para la salida, todos aquellos paquetes creados por el sistema y que van a salir de él hacia otro dispositivo.
- FORWARD:Â redireccionamiento, como ya debes saber, simplemente los redirecciona a su nuevo destino, afectando a todos los paquetes que pasan por esta cadena.

Finalmente me gustarÃa decir que cada paquete de red enviado o recibido en un sistema Linux debe estar sujeto a alguna de estas tablas, al menos una de ellas o varias a la vez. Además debe estar sujeto a múltiples reglas de tablas. Por ejemplo, con ACCEPT se le permite que continúe su camino, con DROP se niega el acceso o no se envÃa y con REJECT se descarta simplemente, sin enviar un error al servidor o equipo que envió el paquete. Como ves, cada tabla tiene sus targets o polÃticas para cada una de las opciones o cadenas citadas anteriormente. Y estas son las citadas aquà como ACCEPT, DROP y REJECT, pero existe otra como QUEUE, ésta última, que quizás no conozcas es utilizada para procesar los paquetes que llegan por un determinado proceso, independientemente de su dirección.
Bueno, como ves, iptables es un poco arduo como para explicarlo en un solo artÃculo de una forma profunda, espero que con el primer artÃculo etngas una idea básica de uso de iptables con algunos ejemplos, y aquà algo más de teorÃa. Deja tus comentarios, dudas o aportaciones, serán bienvenidas.