50% de descuento en todos los planes, por tiempo limitado. Desde $2.48/mo
14 min restantes
Seguridad y redes

Cómo listar y eliminar reglas de Iptables en Linux: referencia rápida para principiantes

Lily Carnell By Lily Carnell 14 min de lectura Actualizado el 18 de sep. de 2023
Guía para listar y eliminar reglas de Iptables

El acceso no autorizado y los ataques a servidores son amenazas graves. Por eso, implementar un cortafuegos es parte fundamental de cualquier estrategia de seguridad de red. Saber trabajar con las reglas de Iptables es uno de los recursos clave para reducir estos riesgos en sistemas Linux. Este tutorial te guiará por los conceptos básicos del cortafuegos, como consultar las reglas con iptables show rules y eliminarlas con remove iptables rules en Ubuntu, y te ayudará a ejecutar los comandos necesarios para lograrlo. Antes de ver cómo listar o eliminar reglas de iptables, conviene explicar qué son y para qué se usan.

¿Qué es Iptables?

iptables es una utilidad de cortafuegos por línea de comandos que permite o bloquea el tráfico mediante cadenas de políticas. Cuando se intenta establecer una conexión en tu sistema, iptables busca en la lista una regla que coincida con ella, lo que lo convierte en una herramienta clave para la seguridad de red. Si no encuentra ninguna regla para esa conexión, aplica la acción predeterminada.

iptables casi siempre viene preinstalado en cualquier distribución Linux. Puedes usar el siguiente comando para actualizarlo o instalarlo:

sudo apt-get install iptables

¿Por qué usamos Iptables?

Como cortafuegos de línea de comandos para Linux, iptables permite a los administradores de sistemas controlar el tráfico entrante y saliente mediante reglas de tabla configurables. iptables utiliza un conjunto de tablas con cadenas que contienen reglas integradas o definidas por el usuario.

Como se mencionó en la sección anterior, iptables cumple un papel fundamental en la seguridad de red de la mayoría de los sistemas Linux. El resto de este artículo se centra en describir cómo listar todas las reglas de iptables, incluyendo conceptos como mostrar reglas y eliminar reglas de iptables.

En concreto, este artículo aborda las tareas esenciales de iptables: cómo listar reglas, restablecer contadores de paquetes y bytes, eliminar reglas, vaciar cadenas y eliminar todas las cadenas aceptando todo el tráfico.

Guía completa de Iptables en Ubuntu

Antes de ver cómo mostrar las reglas de iptables, ten en cuenta que debes disponer de un servidor Linux con el comando iptables instalado. Además, es imprescindible contar con privilegios sudo. Al trabajar con cortafuegos, presta atención para no bloquearte el acceso al servidor interrumpiendo el tráfico SSH (puerto 22 por defecto). Si pierdes el acceso por la configuración del cortafuegos, es posible que necesites conectarte a través de una consola fuera de banda para solucionarlo.

Leer también: Cómo cambiar el puerto SSH en Linux: guía rápida paso a paso

Listar reglas por especificación

Puedes ver tus reglas activas de iptables en una tabla o como una lista de especificaciones de reglas. Ambos métodos presentan la misma información en formatos distintos. Para listar todas las reglas de iptables activas por especificación, ejecuta el comando iptables con la opción -S:

sudo iptables -S

Tras ejecutar este comando, verás una salida similar a esta:

salida del comando para listar reglas
salida del comando para listar reglas

Listar una cadena específica

Si quieres limitar la salida de iptables a una cadena concreta, como INPUT, OUTPUT o TCP, puedes indicar el nombre de la cadena directamente después de la opción -S. Por ejemplo, el siguiente comando muestra las reglas de la cadena TCP:

sudo iptables -S TCP

salida al listar la cadena TCP
salida al listar la cadena TCP

Como mencionamos antes, hay otra forma de consultar las reglas de iptables: verlas como una tabla. A continuación explicamos esta técnica.

Listar reglas como tablas

Usar el formato de tabla facilita la comparación entre reglas. Para ello, ejecuta el siguiente comando con la opción -L y obtendrás todas las reglas activas en formato tabular:

sudo iptables -L

Este comando muestra todas las reglas actuales ordenadas por cadenas. También puedes limitar la salida a una cadena específica, como INPUT, OUTPUT o TCP, indicando su nombre directamente después de la opción -L. Aquí tienes un ejemplo limitado a la cadena INPUT:

sudo iptables -L INPUT

salida de iptables limitada a la cadena INPUT
salida de iptables limitada a la cadena INPUT

La primera línea muestra el nombre de la cadena (INPUT, en este caso) y su política predeterminada (DROP). La siguiente línea contiene los encabezados de cada columna y las reglas de la cadena. Los explicamos a continuación:

  • Target: si un paquete coincide con la regla, Target determina qué hacer con él. El paquete puede aceptarse, descartarse, registrarse o enviarse a otra cadena para compararlo con más reglas.
  • prot: el protocolo (como TCP, udp, ICMP o all)
  • opt: indica opciones IP (de uso poco frecuente)
  • source: muestra la dirección IP o subred de origen del tráfico 
  • destination: muestra la dirección IP o subred de destino del tráfico

La columna sin etiqueta recoge opciones de la regla que no aparecen en las columnas anteriores. Puede incluir cualquier dato, desde puertos de origen y destino hasta el estado de conexión del paquete.

Leer también: Instala OpenVPN en VPS – Configuración del cliente OpenVPN 🔑

¿Cómo ver el recuento de paquetes y el tamaño acumulado?

Al listar las reglas de iptables, puedes mostrar el número de paquetes y el tamaño total en bytes que coinciden con cada regla; esto ayuda a entender qué reglas están teniendo efecto. Para ello, combina las opciones -L y -v para lograrlo esto.

A continuación se muestra un ejemplo en el que usaremos de nuevo la cadena INPUT con la opción -v:

sudo iptables -L INPUT -v

Mostrar contadores de paquetes y tamaño acumulado
salida de Mostrar contadores de paquetes y tamaño acumulado

Fíjate que la lista ahora tiene dos columnas adicionales llamadas pkts y bytes. Hemos visto distintas formas de ejecutar los comandos de iptables para mostrar todas las reglas. Ahora es momento de ver cómo reiniciar los contadores de paquetes y el tamaño acumulado.

¿Cómo reiniciar el recuento de paquetes y el tamaño acumulado?

Usa la opción -Z si quieres poner a cero los contadores de paquetes y bytes de tus reglas. También se reinician al reiniciar el sistema, lo cual es útil si quieres comprobar si el servidor está recibiendo nuevo tráfico que coincida con tus reglas actuales.

Puedes limpiar los contadores de todas las cadenas y reglas usando la opción opción -Z por sí sola:

sudo iptables -Z

Para eliminar los contadores de todas las reglas en una cadena concreta, debes usar la opción -Z e indicar el nombre de la cadena. Por ejemplo, el siguiente comando limpia los contadores de la cadena INPUT:

sudo iptables -Z INPUT

Si quieres eliminar los contadores de una regla específica, debes indicar el nombre de la cadena y el número de regla con exactitud. Por ejemplo, puedes ejecutar el siguiente comando para poner a cero los contadores de la primera regla de la cadena INPUT:

sudo iptables -Z INPUT 1

Además de conocer los comandos de iptables para mostrar todas las reglas y cómo reiniciar los contadores de paquetes y bytes, conviene saber cómo eliminar una regla de iptables.

Leer también: Cómo instalar un servidor PPTP VPN en tu VPS

¿Cómo eliminar reglas de iptables?

Puedes usar varios comandos para eliminar reglas de iptables o incluso borrar todas las reglas de una cadena. A continuación se explican estos métodos.

Eliminar reglas por especificación

Una forma de eliminar reglas de iptables es hacerlo mediante la especificación de la regla. Esto te permite ejecutar el comando iptables con la opción opción -D y la especificación de la regla. Para eliminar reglas con esta técnica, puedes usar la salida del listado de reglas, iptables -S, como referencia.

Por ejemplo, para eliminar la regla que descarta los paquetes entrantes no válidos (-A INPUT -m conntrack –ctstate INVALID -j DROP), puedes ejecutar el siguiente comando:

sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

Ten en cuenta que la opción -A indica la posición de la regla en el momento de su creación y no debe incluirse aquí.

Eliminar reglas por cadena y número

El otro método para eliminar reglas de iptables es mediante la cadena y el número de línea. Escribe el siguiente comando para ver el número de línea de cada regla, listar las reglas en formato de tabla y añadir la opción opción –line-numbers:

sudo iptables -L --line-numbers

Eliminar reglas por cadena y número
salida de Eliminar reglas por cadena y número

Tras ejecutar esto, todas las reglas de iptables muestran su número de línea, indicado por la cabecera num.

Una vez que sepas qué regla quieres eliminar, ten a mano su cadena y número de línea. Debes usar el comando iptables -D seguido de la cadena y el número de regla. Por ejemplo, si quieres eliminar la regla de entrada que descarta paquetes no válidos, verás que es la regla 3 de la cadena INPUT. Ejecuta este comando:

sudo iptables -D INPUT 3

¿Cómo vaciar cadenas?

Existe una forma de eliminar todas las reglas de iptables en una cadena, lo que se conoce como vaciar una cadena. A continuación veremos los distintos métodos para hacerlo. Antes de continuar, ten cuidado de no perder el acceso al servidor mediante SSH al vaciar una cadena con una política predeterminada de drop o deny. Si eso ocurre, es posible que necesites conectarte a través de la consola para recuperar el acceso.

Vaciar una cadena concreta

Para vaciar una cadena específica, es decir, eliminar todas sus reglas, puedes usar -F o su equivalente la opción –flush seguida del nombre de la cadena elegida. Por ejemplo, si quieres eliminar todas las reglas de la cadena INPUT, el procedimiento es sencillo: ejecuta el siguiente comando:

sudo iptables -F INPUT

Vaciar todas las cadenas

Para eliminar o vaciar todas las cadenas, puedes usar -F o su equivalente –flush sin argumentos adicionales:

sudo iptables -F

¿Cómo vaciar todas las reglas, eliminar todas las cadenas y aceptar todo el tráfico?

En este punto explicaremos cómo vaciar todas las reglas, tablas y cadenas del firewall y permitir todo el tráfico de red. Ten en cuenta que este proceso desactiva el firewall por completo. Por tanto, sigue estos pasos solo si deseas empezar desde cero con la configuración de tu firewall.

Primero debes establecer las políticas predeterminadas de cada cadena integrada en ACCEPT. El motivo principal es evitar que pierdas el acceso al servidor mediante SSH:

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

Después debes vaciar las tablas nat y mangle, vaciar todas las cadenas (-F)y eliminar todas las cadenas no predeterminadas (-X) de la siguiente forma:

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

Tras ejecutar los comandos anteriores, el firewall permitirá todo el tráfico de red. Si en este momento listas tus reglas, verás que no hay ninguna; solo permanecen las tres cadenas predeterminadas: INPUT, FORWARD y OUTPUT.

¿Cómo configurar iptables en Ubuntu?

Al igual que en cualquier firewall, las reglas de iptables se leen en el orden en que aparecen en cada cadena, por lo que debes definirlas en el orden correcto. Cuando añades nuevas reglas con append, se agregan al final de la lista. Para insertar una regla en una posición concreta, puedes hacerlo con iptables -I <index> -command. El <index> indica el número de posición en el que quieres insertar la regla. Usa el siguiente comando para saber qué número de índice utilizar:

sudo iptables -L --line-numbers

El número al inicio de cada línea indica la posición de esa regla en la cadena. Para añadir una nueva regla justo antes de una regla existente, debes usar el número de índice de esa regla. Por ejemplo, si quieres añadir una regla al principio de la cadena, usa el siguiente comando con el índice 1:

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

¿En qué se diferencia iptables de firewalld?

Tanto iptables como firewalld son herramientas eficaces para gestionar firewalls en distintos sistemas Linux diseñados específicamente para el filtrado de paquetes (filtrado estático). El filtrado de paquetes es una estrategia de firewall que permite controlar el acceso a una red gestionando los paquetes de información entrantes y salientes: los deja pasar o los bloquea según reglas predefinidas basadas en protocolos de origen y destino, puertos y direcciones IP. Estas reglas ofrecen mecanismos de seguridad muy eficientes, lo que convierte al filtrado de paquetes en una buena defensa contra dispositivos enrutados fuera de la LAN (Red de Área Local) del sistema.

Hay que tener en cuenta que firewalld se introdujo originalmente como una herramienta para gestionar iptables y facilitar su uso. Con esta introducción en mente, comparemos firewalld e iptables con más detalle.

iptables vs firewalld: Configuración del sistema

Firewalld e iptables utilizan configuraciones y almacenamiento de reglas diferentes. Con iptables, cada cambio implica eliminar todas las reglas existentes y cargar las nuevas, lo que requiere reiniciar el sistema. Con firewalld, en cambio, las reglas no se recrean desde cero: solo se aplican los cambios realizados sobre las reglas existentes, por lo que los efectos son visibles de inmediato en tiempo de ejecución.

iptables vs firewalld: Interfaz de usuario

Firewalld dispone de una interfaz gráfica de usuario (GUI), mientras que iptables utiliza una interfaz de línea de comandos (CLI), lo que puede resultar más difícil de manejar para acceder a las reglas del firewall del kernel Linux. Esto convierte a firewalld en la opción más directa para muchos usuarios. Dicho esto, iptables tiene tiempos de respuesta más cortos gracias a sus comandos breves. Ambas herramientas tienen sus casos de uso, así que elige la que mejor se adapte a tu flujo de trabajo.

Conclusiones: mostrar reglas en iptables

Iptables es una utilidad de firewall muy flexible diseñada específicamente para sistemas operativos Linux. Tanto si eres nuevo en Linux como si eres un administrador de sistemas con experiencia, las reglas de iptables pueden resultarte útiles. Este artículo ha cubierto los comandos básicos de esta utilidad, incluyendo cómo mostrar y eliminar reglas de iptables, con el objetivo de ofrecer una revisión general de las capacidades de Linux. Además, puedes utilizar nuestras soluciones de hosting Linux VPS para aprovechar al máximo este sistema operativo. En Cloudzy ofrecemos diversos planes Linux VPS con tecnología KVM, adaptados a múltiples casos de uso: hosting web, despliegue de aplicaciones web o configuración de entornos para desarrollar, probar y automatizar código.

Preguntas frecuentes

¿Cómo listar todas las reglas de iptables de Linux por especificación?

Si quieres listar todas las reglas de iptables activas en ese momento por especificación o funcionalidad, puedes hacerlo con el comando iptables seguido de la opción -S. Presta atención al uso de la sudo palabra clave en este caso:

sudo iptables -S

¿Cómo eliminar reglas de iptables?

Para eliminar una cadena específica, lo que borrará todas las reglas que contiene, debes usar la opción -F o --flush seguida del nombre de la cadena. Supongamos que queremos eliminar todas las reglas de la cadena OUTPUT. ¿Qué hay que hacer? Ejecuta este comando:

 sudo iptables -F OUTPUT

¿Cómo funciona iptables en Ubuntu?

El firewall de iptables compara el tráfico de red con un conjunto de reglas. Estas reglas definen las características de los paquetes que deben coincidir y la acción que se debe tomar cuando coinciden. Existen muchas opciones para determinar qué paquetes corresponden a una regla concreta.

¿Las reglas de iptables se aplican de inmediato? ¿Por qué?

Sí, las reglas de iptables surten efecto de inmediato. Como tu script añade entradas a las cadenas INPUT y OUTPUT, las reglas se agregan al final de dichas cadenas.

Compartir

Más del blog

Sigue leyendo.

Imagen de portada de una guía Cloudzy sobre VPN L2TP con MikroTik, que muestra un portátil conectándose a un rack de servidores a través de un túnel digital azul y dorado con iconos de escudo.
Seguridad y redes

Configuración de MikroTik L2TP VPN (con IPsec): guía para RouterOS (2026)

En esta configuración de MikroTik L2TP VPN, L2TP gestiona el túnel mientras IPsec se encarga del cifrado y la integridad. Combinarlos te da compatibilidad nativa con los clientes sin depender de software de terceros.

Rexa CyrusRexa Cyrus 9 min de lectura
Ventana de terminal con el mensaje de advertencia de SSH sobre un cambio en la identificación del host remoto, con el título de la guía de solución y la imagen de marca Cloudzy sobre fondo verde azulado oscuro.
Seguridad y redes

Advertencia: la identificación del host remoto ha cambiado. Cómo solucionarlo

SSH es un protocolo de red seguro que crea un túnel cifrado entre sistemas. Sigue siendo muy utilizado por desarrolladores que necesitan acceso remoto a equipos sin requerir una interfaz grá

Rexa CyrusRexa Cyrus 10 min de lectura
Ilustración de la guía de resolución de problemas del servidor DNS con símbolos de advertencia y un servidor azul sobre fondo oscuro, para errores de resolución de nombres de Linux
Seguridad y redes

Error temporal en la resolución de nombres: qué significa y cómo solucionarlo

Al usar Linux, es posible que te encuentres con un error de resolución de nombres temporal al intentar acceder a sitios web, actualizar paquetes o ejecutar tareas que requieren conexión a internet.

Rexa CyrusRexa Cyrus 12 min de lectura

¿Listo para desplegar? Desde 2,48 $/mes.

Cloud independiente, desde 2008. AMD EPYC, NVMe, 40 Gbps. 14 días de garantía de devolución.