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?
- Guía completa de Iptables en Ubuntu
- ¿Cómo eliminar reglas de iptables?
- ¿Cómo vaciar todas las reglas, eliminar todas las cadenas y aceptar todo el tráfico?
- ¿Cómo configurar iptables en Ubuntu?
- ¿En qué se diferencia iptables de firewalld?
- Conclusiones: mostrar reglas en iptables
- Preguntas frecuentes
¿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:

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

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

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

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

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.