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

¿Cómo configurar un firewall básico en Linux con iptables?

Actualizado el 23 de marzo de 2026

Bienvenido, amigo SysAdmin. Si estás leyendo esto es porque quieres blindar tu servidor Linux, y déjame decirte que estás en el lugar correcto. Configurar un firewall Linux con iptables puede sonar a magia oscura al principio, pero te prometo que es más sencillo de lo que parece. En esta iptables guía te llevaré paso a paso para que aprendas a configurar iptables desde cero, con ejemplos prácticos y explicaciones claras. No necesitas ser un gurú de la seguridad, solo tener paciencia y seguir las instrucciones. Al final, tendrás un firewall funcional que protegerá tu servidor de accesos no deseados.

¿Qué es iptables y por qué usarlo?

Iptables es la herramienta clásica de firewall en Linux. Funciona como un filtro de paquetes que decide qué tráfico entra, sale o pasa por tu servidor. Es como un portero muy estricto que solo deja pasar a quien tú digas. Aunque existen alternativas modernas como nftables, iptables sigue siendo el estándar en millones de servidores, y dominarlo te dará una base sólida para entender cualquier otro firewall.

[INFO] Iptables trabaja con reglas organizadas en cadenas (INPUT, OUTPUT, FORWARD) y tablas (filter, nat, mangle). Para un firewall básico, solo necesitas la tabla filter y las cadenas INPUT y OUTPUT.

Antes de empezar: requisitos y precauciones

Antes de lanzarte a escribir reglas, ten en cuenta lo siguiente:

  • Acceso root o sudo: Necesitas permisos de superusuario.
  • Conexión de respaldo: Si configuras mal el firewall, podrías bloquear tu propio acceso SSH. Siempre ten una sesión alternativa abierta (por ejemplo, una consola física o un panel de control como Syspanel, que por cierto, se accede por el puerto 2106).
  • Respaldo de reglas actuales: Si ya tienes reglas, guárdalas con iptables-save > respaldo.txt.

[WARNING] Nunca ejecutes iptables -F (limpiar todas las reglas) sin tener una regla de permiso para SSH. Podrías quedar fuera del servidor.

Paso 1: Verificar el estado actual de iptables

Lo primero es ver qué reglas tienes actualmente. Abre la terminal y ejecuta:

sudo iptables -L -n -v

Esto te mostrará las cadenas INPUT, FORWARD y OUTPUT con sus reglas. Si es un sistema nuevo, probablemente esté vacío o con reglas por defecto que permiten todo.

[TIP] El parámetro -n evita la resolución de nombres (más rápido) y -v da detalles como el contador de paquetes.

Paso 2: Políticas por defecto: cerrar todo, abrir lo necesario

Una buena práctica es establecer políticas restrictivas. Esto significa que por defecto, todo el tráfico está bloqueado, y luego abres solo lo que necesitas.

Ejecuta:

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

Explicación:

  • INPUT DROP: Bloquea todo el tráfico entrante que no tenga una regla explícita.
  • FORWARD DROP: Bloquea el reenvío de paquetes (no lo necesitas para un servidor básico).
  • OUTPUT ACCEPT: Permite todo el tráfico saliente (tu servidor puede conectarse a Internet sin problemas).

[WARNING] En este punto, si ejecutaste INPUT DROP, perderás la conexión SSH. No te preocupes, el siguiente paso es agregar la regla para permitir SSH.

Paso 3: Permitir tráfico esencial (SSH, HTTP, HTTPS)

Ahora vamos a crear reglas para permitir el tráfico que necesitas. Lo más común es:

  • SSH (puerto 22): Para administración remota.
  • HTTP (puerto 80) y HTTPS (puerto 443): Para servir páginas web.
  • Conexiones establecidas: Para que las respuestas de tus peticiones salientes puedan volver a entrar.

Ejecuta estas reglas en orden:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Desglose:

  • -A INPUT: Añade la regla a la cadena INPUT.
  • -m conntrack --ctstate ESTABLISHED,RELATED: Permite paquetes que pertenecen a conexiones ya establecidas o relacionadas.
  • -p tcp --dport 22: Especifica el protocolo TCP y el puerto destino.
  • -j ACCEPT: Acción de aceptar el paquete.

[INFO] Si tu servidor tiene otros servicios (por ejemplo, FTP, MySQL, o el panel Syspanel en el puerto 2106), agrega reglas similares cambiando el puerto.

Paso 4: Permitir tráfico local (loopback)

El tráfico local (interfaz lo) es necesario para que muchas aplicaciones funcionen correctamente. Permítelo sin restricciones:

sudo iptables -A INPUT -i lo -j ACCEPT

Esto asegura que la comunicación entre procesos locales no sea bloqueada.

Paso 5: Bloquear tráfico malicioso (opcional pero recomendado)

Puedes añadir reglas para mitigar ataques comunes:

  • Bloquear paquetes inválidos:
    sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
    
  • Limitar conexiones SSH (evita fuerza bruta):
    sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
    sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
    
    Esto permite solo 4 intentos de conexión SSH por minuto.

Paso 6: Verificar y probar las reglas

Después de agregar las reglas, verifica que todo esté correcto:

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

Los números de línea te ayudarán a insertar o eliminar reglas específicas si es necesario.

Prueba la conectividad:

  • Desde otra máquina, intenta hacer SSH: ssh usuario@tuserver
  • Abre un navegador y visita la IP de tu servidor (si tienes HTTP/HTTPS).

[TIP] Si algo falla, revisa el orden de las reglas. Iptables evalúa las reglas en orden, y la primera coincidencia gana.

Paso 7: Hacer persistentes las reglas

Las reglas de iptables se pierden al reiniciar el servidor. Para guardarlas, usa:

sudo iptables-save > /etc/iptables/rules.v4

En sistemas con systemd, puedes instalar el paquete iptables-persistent:

sudo apt update
sudo apt install iptables-persistent

Durante la instalación, te preguntará si quieres guardar las reglas actuales. Responde que sí.

[WARNING] Siempre guarda las reglas después de hacer cambios. Un reinicio sin guardar te dejará sin firewall.

Paso 8: Ejemplo completo de configuración básica

Aquí tienes un script que puedes copiar y pegar (ajusta los puertos según tus necesidades):

#!/bin/bash
# Firewall básico con iptables

# Políticas por defecto
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Permitir tráfico local
iptables -A INPUT -i lo -j ACCEPT

# Permitir conexiones establecidas
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Permitir SSH, HTTP, HTTPS
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# (Opcional) Permitir puerto de Syspanel (2106)
iptables -A INPUT -p tcp --dport 2106 -j ACCEPT

# Bloquear paquetes inválidos
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# Guardar reglas
iptables-save > /etc/iptables/rules.v4

Guarda esto como firewall.sh, dale permisos de ejecución (chmod +x firewall.sh) y ejecútalo con sudo ./firewall.sh.

Preguntas frecuentes (FAQ)

¿Cómo eliminar una regla específica?

Primero lista las reglas con números de línea:

sudo iptables -L INPUT --line-numbers -n

Luego elimina la regla por número:

sudo iptables -D INPUT <número>

¿Cómo permitir una IP específica?

Por ejemplo, para permitir todo el tráfico desde la IP 192.168.1.100:

sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT

¿Cómo bloquear un rango de IPs?

sudo iptables -A INPUT -s 10.0.0.0/8 -j DROP

¿Cómo ver el log de paquetes bloqueados?

Puedes añadir una regla de log antes de la regla DROP:

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

Luego revisa /var/log/syslog o /var/log/messages.

¿Qué hago si me bloqueo?

Si pierdes la conexión SSH:

  1. Usa una consola física o un panel como Syspanel (puerto 2106) para acceder al servidor.
  2. Ejecuta iptables -F para limpiar todas las reglas.
  3. Luego vuelve a cargar una configuración segura.

[WARNING] Siempre ten un plan B. No confíes solo en SSH.

Conclusión

Has aprendido a configurar iptables como un verdadero SysAdmin. Este firewall Linux básico te protegerá de accesos no autorizados y te dará control total sobre el tráfico de tu servidor. Recuerda que la seguridad es un proceso continuo: revisa tus reglas periódicamente, mantén el sistema actualizado y nunca desactives el firewall sin necesidad.

Si usas paneles de control como Syspanel, recuerda que su puerto es el 2106, y debes incluirlo en tus reglas si quieres acceder a él desde fuera. Ahora ve y pon en práctica lo aprendido. ¡Tu servidor te lo agradecerá!

¿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