Conociendo nuestro sistema Linux: ¿Qué son las iptables?

Conociendo nuestro sistema Linux: ¿Qué son las iptables?

En los sistemas Linux hay muchos servicios que se integran con el Kernel y entran a formar parte del propio sistema operativo, ayudando a optimizar este sistema sin ningún tipo de límite. La principal preocupación del usuario que comienza a introducirse en los sistemas Linux es la seguridad y la manera de tratarla, y es que en estos sistemas no existen muchas posibilidades de contar con software antivirus puesto que el catálogo es verdaderamente escaso.

Comando iptables en Linux

¿Qué opciones tengo para protegerme?

Que no haya muchas opciones de cara a la seguridad viene propiciado en gran medida a que ya de por sí Linux cuenta con uno de las mejores (o la mejor) medidas de seguridad, iptables. Este servicio es un potente cortafuegos que viene ya predefinido y que junto a los servicios IPtables, ip6tables, ebtables, arptables e ipset forman parte de un proyecto llamado netfilter.

Candado en teclado

¿Cómo funciona iptables?

Iptables ya viene integrado en el sistema, por lo que no es un servicio que se inicia o se detiene, simplemente se configuran reglas y se aplican una serie de políticas de seguridad. Para ello ejecutamos el comando iptables que nos permitirá agregar, borrar o editar las mismas. En caso de tener que instalarlo se haría mediante un terminal con la sintaxis:

sudo apt-get install iptables

El funcionamiento de iptables es sencillo, puesto que lo que hace es comprobar si el paquete está destinado a la misma máquina o si por el contrario va destinada a otra máquina.

Tipos de reglas

Como he mencionado, iptables se basa en la aplicación de una serie de reglas organizadas en 3 grupos, denominados INPUT, OUTPUT y FORWARD. En el primer y segundo grupo de reglas (INPUT y OUTPUT) se localizan los paquetes que van dirigidos a la máquina mientras que los paquetes que van dirigidos a otras máquinas son filtrados gracias a la regla FORWARD.

Existe un tipo de regla adicional que es utilizada para aplicar re-direcciones de puertos o cambios en las IP's de origen y destino y son las llamadas reglas NAT o Network Address Translation.

¿Cómo aplicamos las reglas?

Lo primero que debemos tener en cuenta es que toda configuración que permite editar nuestras reglas iptables es introducida mediante la consola Terminal de nuestro sistema. Las reglas son agrupadas en cadenas, representadas en el terminal con -A, seguida de la cadena viene definida la operación a realizar y las interfaces de red que va a tratar la regla. Un ejemplo de la sintaxis que aplicar sería:

sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Este ejemplo aceptaría el reenvío de todos los paquetes que entren por la interfaz eth1 (-i = input interface) y que salgan por la interfaz eth0 (-o = output interface), con el modificador -j indicamos la regla de destino de tráfico que vamos a aplicar (DROP, ACCEPT o REJECT).

Podríamos dar una vuelta de tuerca más a esta regla si añadimos el tipo y número de puerto que va a regular, para ello utilizaríamos el modificador -p y --dport, de tal manera que con -p indicamos el tipo de puerto (TCP o UDP) y con --dport (destination port) el número de puerto.

Operaciones o reglas que podemos aplicar

En la siguiente lista encontramos todas las operaciones o reglas de destino de tráfico que podemos aplicar al fichero iptables:

  • ACCEPT: Acepta la petición.
  • DROP: Rechaza la petición.
  • REJECT: Rechaza la petición y notifica al emisor de esta petición de su rechazo.
  • QUEUE: Introduce el paquete en una cola dentro de la biblioteca libipq.
  • RETURN: El paquete vuelve a su origen y deja de circular por la cadena.
  • LOG: Crea un registro de los paquetes que circulan por la cadena.
  • DNAT: Modifica la dirección de destino (Destination NAT) y su puerto.
  • SNAT: Modifica la dirección de origen (Source NAT) y su puerto.
  • MASQUERADE: Esta operación es de las más utilizadas, es una forma especial de SNAT y que permite más restricciones.

Después de toda la teoría, un ejemplo habitual

En este momento estaremos deseando ver en qué podemos aplicar estas políticas, por ejemplo una regla muy habitual sería denegar el servicio entrante de transferencia de ficheros (FTP), para ello deberíamos ejecutar lo siguiente:

sudo iptables -A INPUT -i eth1 -p tcp --dport 21 -j DROP

Con ello lo que hacemos es que dentro de la serie de reglas de entrada (INPUT) denegamos (DROP) el tráfico de entrada por la interfaz eth1 y por el puerto de tipo tcp número 21, que es el que utiliza el servicio FTP por defecto.

En definitiva, el servicio iptables nos permite realizar casi todo tipo de limitaciones de seguridad dentro de nuestra red y es por esto que es uno de los servicios fundamentales de los sistemas Linux y que todo buen informático debe aprender a utilizar.

Para ti
Queremos saber tu opinión. ¡Comenta!