IPTABLES: tipos de tablas

Iptables Funcionamiento

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.

Iptables tablas

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.

 


Etiquetas ,

Isaac P. E.

Soy un apasionado de la tecnología y me encanta compartir, pero sobre todo aprender cada día más. Me gusta todo lo que tenga que ver con la ciencia y leer sobre esta temática. En mi tiempo libre escribo un libro sobre microprocesadores, mi tema favorito. También me gusta realizar diseños electrónicos en Basic Stamp, Arduino, además me encanta jugar con Linux. Algunos de mis estudios son: - Módulo superior de electrónica y microelectrónica. - Módulo de domótica. - Experto en gestión medioambiental en la empresa. - Técnico en prevención en la industria. - Técnico en montaje y reparación de ordenadores. - Técnico en reparación de portátiles. - Técnico en redes informáticas. - Curso GNU/Linux. Otros conocimientos: inglés, ofimática, programación en diversos lenguajes (C, KOP, VHDL, PBASIC, Arduino y HTML), conocimientos avanzados de Windows y Linux,...

Escribe un comentario