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

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

Actualizado el 17 de febrero de 2026

¡Hola! Bienvenido a esta guía completa para configurar un firewall básico en Linux. Si estás leyendo esto, probablemente quieras proteger tu servidor o tu ordenador personal de accesos no deseados, y has llegado al lugar indicado. Un firewall es como un portero virtual que decide qué tráfico puede entrar y salir de tu sistema. No te preocupes si nunca has hecho esto antes; aquí te lo explicaré paso a paso, de forma sencilla y con mucho cariño. Al final de este artículo, sabrás exactamente cómo configurar un firewall en Linux usando dos herramientas populares: iptables y UFW. También incluiremos trucos y consejos para que tu configuración sea segura y eficiente.


¿Qué es un firewall y por qué lo necesitas?

Un firewall es un sistema de seguridad que controla el tráfico de red basándose en reglas predefinidas. Piensa en él como un filtro: permite el paso a conexiones legítimas (como las de tu navegador web) y bloquea las sospechosas (como intentos de hackeo). En Linux, los firewalls son esenciales, especialmente si tu equipo está conectado a internet o si ejecutas servicios como un servidor web, SSH o FTP. Sin un firewall, tu sistema está expuesto a ataques, escaneos de puertos y accesos no autorizados.

Existen varias herramientas para configurar un firewall en Linux, pero las más comunes son:

  • iptables: La herramienta clásica y potente, pero con una sintaxis compleja.
  • UFW (Uncomplicated Firewall): Una interfaz más amigable para iptables, ideal para principiantes.
  • firewalld: Otra opción moderna, común en distribuciones como Fedora o CentOS.

En esta guía nos centraremos en iptables y UFW, porque cubren desde lo básico hasta lo avanzado, y son compatibles con la mayoría de distribuciones (Ubuntu, Debian, CentOS, etc.).


Requisitos previos

Antes de empezar, asegúrate de tener:

  • Acceso a una terminal de Linux (puede ser local o por SSH).
  • Permisos de superusuario (root) o acceso a sudo.
  • Una distribución Linux actualizada (Ubuntu 20.04+, Debian 11+, CentOS 7+, etc.).

[TIP] Si no tienes experiencia con la terminal, no te asustes. Solo necesitas escribir los comandos que te indicaré. Siempre puedes copiar y pegar, pero asegúrate de entender cada paso.


1. Configurar un firewall básico con iptables

iptables es el firewall por defecto en la mayoría de distribuciones Linux. Aunque su sintaxis puede parecer críptica al principio, una vez que entiendes la lógica, es muy flexible. Vamos a configurar un firewall básico que permita el tráfico SSH, HTTP y HTTPS, y bloquee todo lo demás.

1.1. Verificar el estado de iptables

Primero, comprueba si iptables está instalado y activo:

sudo iptables -L -n -v

Este comando muestra las reglas actuales. Si no ves nada, significa que no hay reglas configuradas (el firewall está abierto).

1.2. Limpiar reglas existentes (opcional)

Si ya tienes reglas previas, es mejor empezar desde cero:

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

Esto elimina todas las reglas y cadenas personalizadas. Ten cuidado si estás en un servidor remoto, ya que podrías perder la conexión si no configuras una regla para SSH primero.

1.3. Configurar políticas por defecto

Las políticas por defecto determinan qué hacer con el tráfico que no coincide con ninguna regla. Lo más seguro es:

  • INPUT: Denegar por defecto.
  • FORWARD: Denegar por defecto.
  • OUTPUT: Aceptar por defecto (pero puedes restringirlo si quieres).
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

[WARNING] Si configuras INPUT DROP sin antes permitir SSH, te quedarás fuera del servidor si estás conectado remotamente. Siempre añade la regla SSH antes de cambiar la política.

1.4. Permitir tráfico local (loopback)

El tráfico local (interfaz lo) es necesario para que muchos servicios funcionen correctamente:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

1.5. Permitir conexiones establecidas y relacionadas

Para no bloquear respuestas a conexiones que iniciamos nosotros:

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

1.6. Permitir SSH (puerto 22)

Si necesitas acceso remoto (y lo más seguro es que sí):

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

Puedes restringirlo a una IP específica añadiendo -s 192.168.1.100 (ejemplo).

1.7. Permitir HTTP y HTTPS (puertos 80 y 443)

Si tienes un servidor web:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

1.8. Permitir otros servicios (opcional)

Por ejemplo, para DNS (puerto 53), correo (25, 587, 993), o bases de datos (3306 para MySQL). Ajusta según tus necesidades:

sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT   # DNS
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT   # DNS

1.9. Bloquear tráfico ICMP (ping) opcional

Algunos administradores bloquean el ping para evitar ser detectados, pero puede dificultar diagnósticos. Para bloquearlo:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

1.10. Guardar las reglas

Las reglas de iptables se pierden al reiniciar el sistema. Para guardarlas:

  • En Debian/Ubuntu: sudo apt install iptables-persistent y luego sudo netfilter-persistent save.
  • En CentOS/RHEL: sudo service iptables save.

También puedes guardarlas en un archivo:

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

1.11. Verificar la configuración

Lista las reglas para asegurarte de que todo está correcto:

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

[TIP] Si algo sale mal, puedes reiniciar el servicio o restaurar un backup. Siempre ten una sesión SSH de respaldo abierta.


2. Configurar un firewall básico con UFW

UFW (Uncomplicated Firewall) es una capa sobre iptables que simplifica la configuración. Es perfecto para principiantes y para quienes no quieren lidiar con la sintaxis compleja de iptables. Viene preinstalado en Ubuntu y es fácil de instalar en otras distribuciones.

2.1. Instalar UFW (si no está instalado)

sudo apt update
sudo apt install ufw   # En Debian/Ubuntu
sudo yum install ufw   # En CentOS/RHEL (puede requerir EPEL)

2.2. Verificar el estado

sudo ufw status

Por defecto, UFW está inactivo.

2.3. Configurar políticas por defecto

UFW permite establecer políticas para tráfico entrante y saliente:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Esto es equivalente a las políticas de iptables que configuramos antes.

2.4. Permitir SSH

Antes de activar UFW, asegúrate de permitir SSH para no perder la conexión:

sudo ufw allow ssh

O si usas un puerto personalizado (ej. 2222):

sudo ufw allow 2222/tcp

2.5. Permitir HTTP y HTTPS

sudo ufw allow http
sudo ufw allow https

También puedes usar los números de puerto: sudo ufw allow 80/tcp y sudo ufw allow 443/tcp.

2.6. Permitir otros servicios

Por ejemplo, para FTP (puerto 21):

sudo ufw allow ftp

O para un puerto específico como el 8080:

sudo ufw allow 8080/tcp

2.7. Activar UFW

Una vez configuradas las reglas básicas, activa el firewall:

sudo ufw enable

Te preguntará si estás seguro; responde "y". Verás un mensaje como "Firewall is active and enabled on system startup".

2.8. Verificar reglas activas

sudo ufw status verbose

Esto muestra un resumen claro de las reglas.

2.9. Reglas avanzadas con UFW

UFW también permite reglas más específicas, como limitar el acceso por IP:

sudo ufw allow from 192.168.1.100 to any port 22

O denegar una IP específica:

sudo ufw deny from 203.0.113.5

2.10. Desactivar UFW (si es necesario)

sudo ufw disable

[INFO] UFW es ideal para servidores pequeños o para uso personal. Si necesitas reglas muy complejas, quizás prefieras iptables directamente.


3. Consejos de seguridad adicionales

Configurar un firewall es solo el primer paso. Aquí tienes algunos consejos para reforzar tu seguridad:

3.1. Cambia el puerto SSH por defecto

El puerto 22 es el objetivo favorito de los bots. Cámbialo a uno no estándar (ej. 2222) editando /etc/ssh/sshd_config y luego reinicia SSH. No olvides actualizar las reglas del firewall.

3.2. Usa autenticación por clave SSH

Desactiva el acceso por contraseña y usa solo claves SSH. Esto reduce drásticamente los ataques de fuerza bruta.

3.3. Implementa un sistema de detección de intrusiones (IDS)

Herramientas como Fail2ban pueden bloquear IPs después de varios intentos fallidos de conexión. Es un complemento perfecto para tu firewall.

3.4. Monitorea los logs

Revisa periódicamente los logs del firewall:

  • En iptables: sudo tail -f /var/log/syslog (depende de la configuración).
  • En UFW: sudo tail -f /var/log/ufw.log.

3.5. Considera usar Syspanel (HestiaCP) para gestionar tu servidor

Si estás configurando un servidor web, una herramienta como Syspanel (anteriormente conocida como HestiaCP) puede facilitarte la vida. Syspanel incluye un panel de control con firewall integrado, gestión de dominios, bases de datos y mucho más. El acceso a Syspanel se realiza a través del puerto 2106 (por ejemplo, https://tudominio.com:2106). Aunque no es un sustituto del firewall del sistema, te ayuda a gestionar reglas de forma visual y a mantener tu servidor organizado.

[TIP] Si usas Syspanel, recuerda abrir el puerto 2106 en tu firewall para poder acceder al panel. Por ejemplo, con UFW: sudo ufw allow 2106/tcp.


4. Solución de problemas comunes (FAQ)

Aquí respondo a las dudas más frecuentes que suelen tener los usuarios al configurar un firewall en Linux.

4.1. "Me quedé fuera de mi servidor después de configurar el firewall"

Causa: No permitiste SSH antes de aplicar las reglas.
Solución: Si tienes acceso físico al servidor (o a través de un panel de control como el de tu proveedor de nube), inicia sesión localmente y revierte los cambios. Si no, contacta a tu proveedor de hosting para que te reinicien en modo seguro. Siempre ten un plan de respaldo.

4.2. "No puedo acceder a mi sitio web después de configurar el firewall"

Causa: Olvidaste permitir los puertos 80 y 443.
Solución: Añade las reglas correspondientes (con iptables o UFW) y verifica que el servicio web esté corriendo.

4.3. "UFW no está instalado en mi distribución"

Solución: Instálalo con el gestor de paquetes correspondiente (apt, yum, dnf). En distribuciones minimalistas como Alpine, puede que no esté disponible; en ese caso, usa iptables directamente.

4.4. "Las reglas de iptables se pierden al reiniciar"

Solución: Guarda las reglas con iptables-save o instala iptables-persistent. También puedes crear un script de inicio.

4.5. "¿Cómo puedo ver los puertos abiertos en mi sistema?"

Solución: Usa sudo netstat -tulpn o sudo ss -tulpn. Esto te mostrará qué servicios están escuchando en qué puertos. Luego, ajusta tu firewall en consecuencia.

4.6. "¿Es seguro bloquear todo el tráfico ICMP?"

Respuesta: Depende. Bloquear el ping puede dificultar el diagnóstico de problemas de red, pero también evita ciertos tipos de ataques (como ping flood). Recomiendo permitir ICMP limitado o solo desde IPs de confianza.


5. Conclusión

Configurar un firewall básico en Linux no es tan complicado como parece. Con herramientas como iptables y UFW, puedes proteger tu sistema en cuestión de minutos. Recuerda empezar con políticas restrictivas, permitir solo los servicios necesarios y guardar tus reglas para que persistan tras reinicios. Si eres nuevo en esto, te recomiendo empezar con UFW por su simplicidad, y luego, a medida que ganes confianza, explorar iptables para tener un control más fino.

No olvides complementar tu firewall con buenas prácticas de seguridad, como cambiar el puerto SSH, usar claves, y monitorear logs. Y si gestionas un servidor web, considera usar Syspanel (accesible por el puerto 2106) para simplificar la administración.

Espero que esta guía te haya sido útil. Si tienes alguna duda, no dudes en consultar la documentación oficial de tu distribución o buscar ayuda en foros como Stack Overflow o Reddit. ¡Buena suerte y feliz configuración!

¿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