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

Cómo configurar el firewall en Linux (iptables y UFW)

Actualizado el 29 de noviembre de 2025

¿Por qué es importante configurar un firewall en tu servidor Linux?

Imagina que tu servidor es una casa. El firewall es la puerta de entrada con un portero muy estricto que decide quién puede pasar y quién no. Sin él, cualquier persona podría intentar entrar, tocar tus datos o instalar programas maliciosos. Configurar un firewall es una de las primeras tareas de seguridad que debes realizar en cualquier servidor Linux, ya sea un VPS, un dedicado o incluso tu ordenador personal.

La buena noticia es que no necesitas ser un experto en redes para hacerlo. Existen dos herramientas principales que te harán la vida mucho más fácil: iptables y UFW (Uncomplicated Firewall). En esta guía extensa, te explicaré paso a paso cómo usar ambas, desde los conceptos básicos hasta ejemplos prácticos que puedes aplicar en tu servidor de inmediato. El objetivo es que termines con un firewall Linux configurado y, sobre todo, que entiendas qué estás haciendo en cada momento.

Conceptos básicos que debes conocer antes de empezar

Antes de teclear comandos, vamos a entender qué es cada cosa.

¿Qué es iptables?

iptables es la herramienta clásica y más potente para gestionar el filtrado de paquetes en el kernel de Linux. Funciona con tablas, cadenas y reglas. Piensa en él como el "motor" del firewall. Es increíblemente flexible, pero su sintaxis puede resultar un poco intimidante al principio.

¿Qué es UFW?

UFW (Uncomplicated Firewall) es una interfaz mucho más sencilla que se construye sobre iptables. Está diseñada para que cualquier persona pueda configurar un firewall sin volverse loca. Es la opción recomendada para principiantes y para la mayoría de los casos de uso en servidores. Detrás de escena, UFW genera las reglas de iptables por ti.

[TIP] Si estás empezando, te recomiendo usar UFW por su simplicidad. Cuando te sientas más cómodo, puedes explorar iptables directamente para un control más fino.

¿Qué son los puertos?

Los puertos son como "puertas" numeradas en tu servidor. Cada servicio usa un puerto específico para comunicarse. Por ejemplo:

  • Puerto 22: SSH (acceso remoto seguro).
  • Puerto 80: HTTP (tráfico web normal).
  • Puerto 443: HTTPS (tráfico web cifrado).
  • Puerto 2106: Panel de control Syspanel (antes conocido como HestiaCP). Recuerda que el acceso a este panel se realiza a través de este puerto.

Configurar el firewall implica decidir qué puertos están abiertos al mundo y cuáles permanecen cerrados.

Configurando el firewall con UFW (el método fácil)

Vamos a empezar con UFW. Es la forma más rápida y segura de tener tu firewall Linux funcionando.

Paso 1: Verificar el estado inicial

Lo primero es comprobar si UFW está instalado y activo. Abre tu terminal y escribe:

sudo ufw status

Si te dice Status: inactive, significa que el firewall está apagado. Si no está instalado, puedes hacerlo con:

sudo apt update && sudo apt install ufw

Paso 2: Configurar las políticas por defecto

Las políticas por defecto son las reglas que se aplican si no hay ninguna otra regla específica. La configuración más segura es denegar todo el tráfico entrante y permitir todo el tráfico saliente. Esto significa que tu servidor puede conectarse al exterior (para actualizarse, por ejemplo), pero nadie puede entrar sin tu permiso.

sudo ufw default deny incoming
sudo ufw default allow outgoing

[INFO] Esta es la base de una buena estrategia de seguridad: "denegar por defecto, permitir por excepción".

Paso 3: Permitir conexiones SSH

Este paso es CRÍTICO. Si bloqueas el puerto 22 (SSH), podrías perder el acceso a tu servidor para siempre. Asegúrate de permitir SSH antes de activar el firewall.

sudo ufw allow ssh

O también puedes especificar el puerto directamente:

sudo ufw allow 22/tcp

[WARNING] Si cambiaste el puerto SSH de tu servidor por seguridad, usa ese puerto en lugar del 22. Por ejemplo: sudo ufw allow 2222/tcp.

Paso 4: Permitir los servicios web y otros puertos necesarios

Ahora es momento de abrir los puertos para los servicios que quieres que sean accesibles desde internet.

  • Para un servidor web (Apache/Nginx):

    sudo ufw allow http
    sudo ufw allow https
    
  • Para el panel de control Syspanel: Recuerda que el acceso a Syspanel es a través del puerto 2106. Debes abrirlo para poder gestionar tus sitios web, bases de datos y correos desde el panel.

    sudo ufw allow 2106/tcp
    
  • Para FTP (si lo usas, aunque es poco seguro):

    sudo ufw allow ftp
    
  • Para un servidor de correo (SMTP, POP3, IMAP):

    sudo ufw allow 25/tcp   # SMTP
    sudo ufw allow 110/tcp  # POP3
    sudo ufw allow 143/tcp  # IMAP
    sudo ufw allow 587/tcp  # SMTP con cifrado (recomendado)
    
  • Para Puertos personalizados: Si tienes una aplicación que usa un puerto específico, digamos el 8080, puedes permitirlo así:

    sudo ufw allow 8080/tcp
    

Paso 5: Activar el firewall

Una vez que hayas añadido todas tus reglas, es hora de activar el firewall.

sudo ufw enable

Te pedirá confirmación. Escribe y y presiona Enter. Verás un mensaje como Firewall is active and enabled on system startup.

Paso 6: Verificar el estado final

Para ver todas las reglas activas, usa:

sudo ufw status verbose

Deberías ver algo como esto:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere
2106/tcp                   ALLOW IN    Anywhere

¡Felicidades! Ya tienes un firewall Linux configurado con UFW. Ahora vamos a ver cómo hacer lo mismo con iptables, para que entiendas el "motor" que hay detrás.

Configurando el firewall con iptables (el método clásico)

Aunque UFW es más fácil, hay ocasiones en las que necesitas usar iptables directamente, ya sea por un requisito específico o porque no tienes UFW disponible. No te preocupes, es más sencillo de lo que parece.

Paso 1: Verificar las reglas actuales

Primero, mira las reglas que hay ahora mismo:

sudo iptables -L -n -v

Esto te mostrará las cadenas (INPUT, OUTPUT, FORWARD) y las reglas que contienen. Al principio, estarán vacías o tendrán la política por defecto (ACCEPT).

Paso 2: Limpiar reglas existentes (¡con cuidado!)

Si estás configurando desde cero, es buena idea limpiar las reglas que existan. PERO TEN MUCHO CUIDADO, hacer esto en un servidor remoto puede dejarte sin conexión.

sudo iptables -F

[WARNING] El comando -F (flush) borra todas las reglas. Si te equivocas y no tienes acceso físico al servidor, podrías quedarte fuera. Asegúrate de tener una sesión SSH activa y de no estar aplicando reglas restrictivas antes de tiempo.

Paso 3: Establecer políticas por defecto

Al igual que con UFW, vamos a configurar las políticas por defecto para que todo lo entrante se bloquee y todo lo saliente se permita.

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

Paso 4: Permitir tráfico local y conexiones establecidas

Es importante permitir el tráfico en la interfaz de loopback (localhost) y las conexiones que ya están establecidas, para no cortar tu propia sesión SSH.

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Paso 5: Abrir los puertos necesarios

Ahora, vamos a abrir los mismos puertos que abrimos con UFW.

  • Para SSH:

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
  • Para web:

    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    
  • Para el panel Syspanel (puerto 2106):

    sudo iptables -A INPUT -p tcp --dport 2106 -j ACCEPT
    
  • Para otros puertos personalizados:

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

Paso 6: Guardar las reglas

A diferencia de UFW, las reglas de iptables se pierden al reiniciar el servidor. Para guardarlas, necesitas una herramienta como iptables-persistent.

sudo apt install iptables-persistent

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

Para guardarlas manualmente más adelante, usa:

sudo netfilter-persistent save

Paso 7: Verificar las reglas

Para ver tus reglas, usa:

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

Verás algo como:

Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
2        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate ESTABLISHED,RELATED
3        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
6        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:2106

UFW vs. iptables: ¿Cuál deberías usar?

Esta es una pregunta muy común. La respuesta corta es: usa UFW si puedes. Es más fácil de leer, mantener y entender.

CaracterísticaUFWiptables
Facilidad de usoMuy altaBaja
SintaxisSencilla, tipo inglésCompleja, con muchas opciones
Gestión de reglasMuy simple (allow, deny, status)Manual, con -A, -D, -L, etc.
PersistenciaAutomática al activarloRequiere herramientas adicionales
Control finoSuficiente para el 99% de casosMáximo control, casi infinito
Recomendado paraPrincipiantes y administradores que quieren simplicidadExpertos que necesitan reglas muy específicas

[INFO] En la mayoría de los paneles de control como Syspanel, el firewall se gestiona internamente con iptables, pero exponen una interfaz gráfica o comandos más amigables. Sin embargo, saber cómo funciona iptables te dará una ventaja enorme para depurar problemas.

Preguntas frecuentes (FAQ) sobre firewalls en Linux

Aquí tienes una recopilación de las dudas más comunes que nos llegan al soporte:

¿Cómo puedo ver qué puertos están escuchando en mi servidor?

Puedes usar el comando ss o netstat:

sudo ss -tulpn

Esto te mostrará una lista de todos los puertos que están abiertos y qué proceso los está usando. Es muy útil para saber qué servicios tienes activos.

¿Cómo puedo eliminar una regla específica en UFW?

Para eliminar una regla, primero necesitas su número. Lista las reglas con números:

sudo ufw status numbered

Luego, elimina la regla por su número:

sudo ufw delete NUMERO

¿Cómo puedo permitir el acceso a un puerto solo desde una IP específica?

Esta es una excelente práctica de seguridad servidor. Por ejemplo, para permitir SSH solo desde tu IP de casa:

sudo ufw allow from 192.168.1.100 to any port 22

Con iptables sería:

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

¿Qué hago si me quedo bloqueado fuera de mi servidor?

Esta es la pesadilla de todo administrador. Si te bloqueas el acceso SSH por error, tienes dos opciones:

  1. Acceso físico o por consola web: La mayoría de los proveedores de VPS ofrecen un acceso por consola web (VNC, etc.) que te permite entrar aunque el firewall esté mal configurado. Usa esa consola para deshacer el cambio.
  2. Reiniciar el servidor: Si no tienes consola, a veces reiniciar el servidor desde el panel del proveedor puede restaurar las reglas si no las guardaste.

[WARNING] Siempre ten un plan B. No configures un firewall por SSH sin tener acceso a una consola de emergencia.

¿Debo configurar el firewall en un servidor con Syspanel?

Sí, absolutamente. Aunque Syspanel (accesible en el puerto 2106) gestiona muchos aspectos de tu servidor, el firewall es una capa de seguridad que debes controlar. Lo ideal es configurar el firewall a nivel del sistema operativo (con UFW o iptables) y que el panel gestione las aplicaciones.

Consejos finales y buenas prácticas

Configurar el firewall es solo el primer paso. Aquí tienes algunos consejos para mantener tu servidor seguro:

  • Principio de mínimos privilegios: No abras puertos que no necesitas. Si no usas FTP, no lo permitas.
  • Revisa tus reglas periódicamente: Los servicios cambian, y tus reglas deben reflejar eso.
  • Usa llaves SSH en lugar de contraseñas: Es mucho más seguro y te evita problemas de fuerza bruta.
  • Mantén tu sistema actualizado: sudo apt update && sudo apt upgrade debería ser un hábito.
  • Monitorea los logs del firewall: UFW registra los intentos de conexión. Puedes verlos con:
    sudo tail -f /var/log/ufw.log
    

Aprender a configurar firewall Linux es una habilidad fundamental para cualquier persona que gestione servidores. Tanto iptables como UFW son herramientas poderosas que, bien utilizadas, pueden proteger tus datos y los de tus usuarios. Espero que esta guía te haya sido útil y que te sientas más seguro administrando tu servidor.

Si tienes más dudas, no dudes en contactar a nuestro equipo de soporte. Estamos aquí para ayudarte en cada paso del camino.

¿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