🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Preguntas frecuentes sobre firewall en Linux (iptables)

Actualizado el 30 de marzo de 2026

¿Qué es iptables y para qué sirve en un servidor Linux?

Si estás empezando a administrar un servidor Linux, es muy probable que hayas escuchado el término iptables y te hayas preguntado qué es exactamente. Piénsalo como el portero de tu servidor. Iptables es un firewall integrado en el núcleo de Linux que controla todo el tráfico de red que entra y sale de tu máquina. Su función principal es permitir o bloquear conexiones basándose en un conjunto de reglas que tú defines.

Cuando hablamos de firewall Linux preguntas, la más común es: "¿Por qué necesito configurarlo?". La respuesta es simple: sin un firewall, tu servidor está expuesto a cualquier conexión entrante, lo que supone un grave riesgo de seguridad. Iptables te permite proteger servicios web, bases de datos, correo y cualquier otra aplicación que esté escuchando en un puerto.

A lo largo de este artículo, resolveremos las dudas más frecuentes (o iptables FAQ) desde un punto de vista práctico y fácil de entender. No necesitas ser un experto en redes para empezar; solo necesitas seguir los pasos con atención.

Primeros pasos: ¿Cómo sé si iptables está instalado y activo?

Antes de empezar a escribir reglas, debes verificar que iptables esté disponible en tu sistema. La mayoría de las distribuciones Linux modernas lo incluyen por defecto, pero a veces viene desactivado o reemplazado por nftables (su sucesor). Para comprobarlo, abre una terminal y escribe:

sudo iptables -L -n -v

Este comando te mostrará las reglas actuales (si las hay). Si ves un mensaje como command not found, significa que iptables no está instalado. En distribuciones basadas en Debian/Ubuntu, puedes instalarlo con:

sudo apt update
sudo apt install iptables

En CentOS/RHEL/Fedora, usa:

sudo yum install iptables-services

[TIP] Si tu sistema usa nftables por defecto (como en Debian 11+ o Ubuntu 22.04+), iptables sigue funcionando como una capa de compatibilidad, pero es mejor aprender nftables a largo plazo. Para este FAQ, nos centraremos en iptables por su amplia documentación.

Pregunta 1: ¿Cuál es la estructura básica de una regla iptables?

Una regla de iptables se compone de varias partes. Imagina que estás escribiendo una instrucción para el portero: "Si viene alguien de tal dirección, con tal intención, hacia tal puerto, entonces haz esto". La sintaxis general es:

sudo iptables -A [cadena] -p [protocolo] --dport [puerto] -s [origen] -j [acción]

Desglosemos cada elemento:

  • -A (append): Añade la regla al final de una cadena.
  • Cadena: Puede ser INPUT (tráfico entrante), OUTPUT (saliente) o FORWARD (reenviado).
  • -p: Protocolo (tcp, udp, icmp).
  • --dport: Puerto de destino (por ejemplo, 80 para HTTP).
  • -s: Dirección IP de origen (puede ser una IP concreta o una red).
  • -j (jump): Acción a realizar (ACCEPT, DROP, REJECT, LOG).

[WARNING] El orden de las reglas importa. Iptables evalúa las reglas de arriba a abajo. Si una regla coincide, las siguientes no se procesan. Por eso, las reglas más específicas deben ir antes que las genéricas.

Pregunta 2: ¿Cómo permito el tráfico SSH (puerto 22) de forma segura?

SSH es la puerta de entrada a tu servidor. Bloquearlo accidentalmente te dejaría fuera. Por eso, la primera regla que debes escribir es permitir el tráfico SSH. Lo ideal es restringirlo solo a tu IP de confianza. Si tu IP es, por ejemplo, 192.168.1.100, la regla sería:

sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT

Si no sabes tu IP pública, visita ifconfig.me o ipinfo.io/ip. Si tu IP es dinámica, puedes permitir SSH desde cualquier origen, pero es menos seguro:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[INFO] Siempre mantén una sesión SSH abierta mientras pruebas reglas nuevas. Si te bloqueas, puedes reiniciar el servidor desde el panel de control de tu proveedor (como Syspanel, accesible por el puerto 2106) para restaurar la configuración por defecto.

Pregunta 3: ¿Cómo configuro reglas iptables básicas para un servidor web?

Un servidor web típico necesita permitir tráfico HTTP (puerto 80) y HTTPS (puerto 443). Además, debes permitir el tráfico de retorno (establecido) y bloquear el resto. Aquí tienes un conjunto de reglas iptables básicas que puedes usar:

# 1. Permitir tráfico en la interfaz loopback (localhost)
sudo iptables -A INPUT -i lo -j ACCEPT

# 2. Permitir tráfico de retorno de conexiones establecidas
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 3. Permitir SSH (ajusta la IP si quieres restringirlo)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 4. Permitir HTTP y HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 5. Bloquear todo lo demás (regla por defecto)
sudo iptables -A INPUT -j DROP

[TIP] La regla ESTABLISHED,RELATED es clave. Permite que el tráfico de respuesta a tus peticiones (por ejemplo, actualizaciones de paquetes) pueda entrar, mientras bloqueas nuevas conexiones no solicitadas.

Pregunta 4: ¿Cómo guardo las reglas para que persistan tras reiniciar?

Por defecto, las reglas de iptables se pierden al reiniciar el servidor. Para hacerlas persistentes, necesitas usar una herramienta de guardado. En Debian/Ubuntu, instala iptables-persistent:

sudo apt install iptables-persistent

Durante la instalación, te preguntará si quieres guardar las reglas actuales. Responde que sí. Después, puedes guardar manualmente con:

sudo netfilter-persistent save

En CentOS/RHEL, usa:

sudo service iptables save

[WARNING] Siempre guarda las reglas después de cada cambio significativo. Si olvidas hacerlo y el servidor se reinicia, perderás toda la configuración.

Pregunta 5: ¿Cómo bloqueo una IP específica?

Si detectas tráfico malicioso desde una IP concreta, puedes bloquearla fácilmente. Por ejemplo, para bloquear 203.0.113.5:

sudo iptables -A INPUT -s 203.0.113.5 -j DROP

Si quieres bloquear toda una subred (por ejemplo, 203.0.113.0/24):

sudo iptables -A INPUT -s 203.0.113.0/24 -j DROP

[INFO] Puedes combinar esto con logs para monitorizar ataques. Por ejemplo, añade -j LOG --log-prefix "IP Bloqueada: " antes de la regla DROP para registrar los intentos.

Pregunta 6: ¿Cómo permito un puerto específico para una aplicación?

Cada aplicación usa un puerto diferente. Por ejemplo, si tienes un servicio en el puerto 3000 (como una app Node.js), la regla sería:

sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

Para servicios que usan UDP (como DNS en el puerto 53), cambia el protocolo:

sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT

Si no estás seguro del protocolo, revisa la documentación de tu aplicación. La mayoría de servicios web usan TCP.

Pregunta 7: ¿Cómo listo y elimino reglas existentes?

Para ver todas las reglas numeradas (útil para borrar una específica), usa:

sudo iptables -L --line-numbers -n -v

Esto mostrará algo como:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Para eliminar la regla número 2 de la cadena INPUT:

sudo iptables -D INPUT 2

[WARNING] Ten cuidado al borrar reglas. Si borras la regla que permite SSH, perderás la conexión. Siempre verifica dos veces el número de línea.

Pregunta 8: ¿Qué hago si me bloqueo accidentalmente?

Es el miedo de todo administrador. Si estás configurando iptables de forma remota y te bloqueas, tienes varias opciones:

  1. Usar una sesión SSH de respaldo: Ten siempre abierta una segunda terminal mientras pruebas.
  2. Reiniciar el servidor desde el panel de control: Si tu proveedor ofrece un panel como Syspanel (puerto 2106), puedes reiniciar el servidor y las reglas se perderán si no las guardaste.
  3. Usar una tarea cron: Programa una tarea que limpie las reglas cada cierto tiempo. Por ejemplo, cada 5 minutos ejecuta iptables -F. Esto te da una ventana para recuperar el acceso si te equivocas.
  4. Acceso físico o IPMI: Si tienes acceso a la consola del servidor (por ejemplo, a través de un KVM over IP), puedes conectarte localmente.

[TIP] Una buena práctica es tener un script de respaldo con las reglas básicas (SSH permitido) y poder ejecutarlo rápidamente desde una tarea programada o un cron.

Pregunta 9: ¿Cómo configuro reglas para IPv6?

Iptables solo maneja IPv4. Para IPv6, necesitas usar ip6tables. La sintaxis es casi idéntica. Por ejemplo, para permitir SSH en IPv6:

sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT

Si tu servidor tiene IPv6 habilitado, es recomendable configurar también ip6tables para evitar brechas de seguridad.

Pregunta 10: ¿Debo usar iptables o ufw/firewalld?

Si eres principiante, herramientas como ufw (Uncomplicated Firewall) en Ubuntu o firewalld en CentOS simplifican mucho la tarea. Por ejemplo, con ufw puedes permitir SSH con un solo comando:

sudo ufw allow ssh

Sin embargo, iptables te da un control total y es más rápido una vez que lo dominas. Aprender iptables te ayudará a entender cómo funcionan realmente los firewalls en Linux, y luego podrás usar herramientas de alto nivel con mayor confianza.

[INFO] Si usas un panel de control como Syspanel (puerto 2106), este suele incluir su propio firewall gráfico. Pero para configuraciones avanzadas, iptables sigue siendo la opción más potente.

Pregunta 11: ¿Cómo puedo hacer un reset completo de las reglas?

Si quieres empezar de cero, puedes limpiar todas las reglas y políticas con estos comandos:

# Limpiar todas las reglas
sudo iptables -F

# Eliminar todas las cadenas personalizadas
sudo iptables -X

# Poner la política por defecto en ACCEPT para no bloquearte
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT

Después de esto, tu servidor quedará sin firewall hasta que añadas nuevas reglas. Úsalo solo si estás seguro de lo que haces.

Pregunta 12: ¿Cómo verifico que mis reglas funcionan correctamente?

Además de listar las reglas con iptables -L -n -v, puedes probar la conectividad desde otro equipo. Por ejemplo, si permitiste el puerto 80, desde otra máquina ejecuta:

curl -v http://tu-servidor-ip

Si el puerto está cerrado, verás un error de conexión. También puedes usar telnet o nc (netcat):

nc -zv tu-servidor-ip 80

[TIP] Para ver los paquetes que están siendo bloqueados, puedes añadir una regla de log antes de la regla DROP. Por ejemplo:

sudo iptables -A INPUT -j LOG --log-prefix "DROP: " --log-level 4

Luego revisa los logs con sudo tail -f /var/log/syslog (en Debian/Ubuntu) o sudo tail -f /var/log/messages (en CentOS).

Conclusión: Domina iptables con práctica y paciencia

Hemos recorrido las preguntas más comunes sobre iptables FAQ, desde conceptos básicos hasta soluciones para errores típicos. Recuerda que la clave está en empezar con reglas simples, probarlas en un entorno seguro (o con una sesión de respaldo) y luego ir añadiendo complejidad.

Si en algún momento te sientes abrumado, vuelve a lo básico: permitir SSH, HTTP/HTTPS y el tráfico de retorno. Es mejor tener un firewall restrictivo pero funcional que uno mal configurado que te deje fuera.

[WARNING] Nunca olvides guardar las reglas después de cada cambio. Un reinicio inesperado puede dejarte sin protección.

Ahora que ya sabes cómo responder a las preguntas más frecuentes sobre firewall Linux preguntas, ¡es hora de poner manos a la obra! Configura tu primer conjunto de reglas iptables básicas y protege tu servidor como un profesional.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel