Cómo configurar UFW en Linux paso a paso y proteger tu servidor sin complicarte


Introducción


Uno de los errores más comunes cuando alguien empieza a trabajar con servidores Linux es centrarse solo en que “todo funcione” y olvidarse de una parte crítica: cerrar lo que no debe estar expuesto.

Porque sí, puedes instalar Apache, Nginx, MySQL, PHP, Node o lo que quieras. Pero si dejas el sistema demasiado abierto, estás regalando superficie de ataque. Y muchas veces ni siquiera hace falta que un servidor sea popular para recibir intentos de acceso, escaneos automáticos, bots o tráfico malicioso. En internet, eso empieza desde muy pronto.

Aquí es donde entra UFW.

UFW, que significa Uncomplicated Firewall, es una forma mucho más amigable de gestionar reglas de firewall en Linux. En lugar de pelearte directamente con configuraciones más complejas desde el primer día, UFW te permite controlar qué tráfico entra o sale del sistema usando una sintaxis bastante clara.


Es una herramienta ideal para:

  • VPS
  • servidores Ubuntu
  • Raspberry Pi expuestas a internet
  • entornos de desarrollo en red
  • máquinas Linux personales
  • laboratorios o proyectos reales que necesiten algo de seguridad básica

Y lo mejor es que no necesitas ser especialista en redes para empezar a usarlo bien.

En esta guía vamos a ver qué es UFW, por qué conviene usarlo, cómo activarlo, cómo abrir o cerrar puertos, cómo permitir servicios habituales y qué buenas prácticas deberías tener para no bloquearte tú mismo ni dejar el servidor expuesto de más.



Qué es UFW y para qué sirve


UFW es una herramienta para gestionar el firewall del sistema de una forma más simple.

En términos prácticos, te permite definir reglas como estas:

  • permitir SSH
  • bloquear un puerto concreto
  • permitir tráfico web
  • restringir accesos
  • ver qué reglas están activas
  • decidir qué entra y qué no entra al sistema


Piensa en UFW como un portero de discoteca para tu servidor:

  • deja pasar lo autorizado
  • bloquea lo que no debe entrar
  • aplica reglas concretas según tus decisiones

Eso es justamente lo que hace un firewall: controlar el tráfico de red.



Por qué conviene usar un firewall en Linux


Porque un servidor sin firewall bien planteado puede dejar expuestos servicios que no deberían estar disponibles para cualquiera.

Por ejemplo:

  • un panel interno
  • una base de datos
  • un servicio de desarrollo
  • puertos de prueba
  • servicios instalados que ni siquiera recuerdas que están corriendo

Y aunque algunos servicios ya vengan con sus propias medidas de seguridad, el firewall añade una capa extra muy importante.


Un firewall bien configurado ayuda a:

  • reducir superficie de ataque
  • limitar accesos innecesarios
  • controlar mejor qué servicios están expuestos
  • evitar errores de exposición accidental
  • proteger entornos públicos o sensibles

No reemplaza otras medidas de seguridad, pero sí es una base muy recomendable.



Qué tipo de tráfico controla UFW


UFW puede gestionar reglas de:

  • tráfico entrante
  • tráfico saliente
  • puertos concretos
  • protocolos como TCP o UDP
  • acceso por IP o rangos
  • perfiles de servicios conocidos

En la mayoría de configuraciones iniciales, lo que más te interesará es controlar el tráfico entrante. Es decir: decidir qué conexiones externas pueden entrar al sistema.



Comprobar si UFW está instalado


En muchas distribuciones basadas en Ubuntu suele estar disponible o ser muy fácil de instalar.

Puedes comprobar su estado con:

sudo ufw status

Si está instalado, te mostrará si está activo o no, y qué reglas tiene.


Si no lo tienes, en sistemas basados en Debian o Ubuntu suele instalarse así:

sudo apt update
sudo apt install ufw


Antes de activar UFW: atención con SSH


Este punto es importantísimo.

Si estás administrando el servidor de forma remota por SSH y activas UFW sin permitir antes ese acceso, puedes bloquearte a ti mismo.

Sí, es uno de los errores clásicos.

Por eso, antes de activar el firewall en un servidor remoto, asegúrate de permitir primero SSH.


Por ejemplo:

sudo ufw allow OpenSSH

O si usas un puerto SSH personalizado, deberás permitir ese puerto concreto antes de activar el firewall.

Esta es una regla de oro:

si administras por SSH, nunca actives el firewall sin haber permitido antes el acceso SSH correcto.


Cómo ver las aplicaciones o perfiles conocidos


UFW puede trabajar con perfiles de aplicaciones conocidos.

Puedes verlos así:

sudo ufw app list


Esto puede mostrarte perfiles como:

  • OpenSSH
  • Nginx Full
  • Nginx HTTP
  • Apache
  • Apache Full

Estos perfiles hacen más fácil permitir servicios habituales sin memorizar todos los puertos.



Cómo permitir SSH antes de activar el firewall


Si usas SSH en el puerto por defecto:

sudo ufw allow OpenSSH


Si usas un puerto personalizado, por ejemplo el 2222:

sudo ufw allow 2222/tcp

Esto permite el acceso por ese puerto usando TCP.



Cómo activar UFW


Una vez permitidos los accesos mínimos necesarios, puedes activar el firewall:

sudo ufw enable

Cuando lo actives, UFW empezará a aplicar sus reglas.


Después puedes comprobar estado con:

sudo ufw status

Y si quieres más detalle:

sudo ufw status verbose


Políticas por defecto: deny incoming, allow outgoing


Una configuración muy razonable para muchos servidores es esta:

  • denegar tráfico entrante por defecto
  • permitir tráfico saliente por defecto

UFW suele trabajar muy bien con ese enfoque.

Puedes configurarlo así:

sudo ufw default deny incoming
sudo ufw default allow outgoing


Esto significa:

  • si no hay una regla permitiendo entrada, se bloquea
  • el sistema puede salir a internet o conectar hacia fuera normalmente

Es una base bastante sensata para muchos escenarios.



Cómo permitir tráfico web


Si tu servidor hospeda una web, necesitarás permitir HTTP y probablemente HTTPS.


Permitir HTTP

sudo ufw allow 80/tcp


Permitir HTTPS

sudo ufw allow 443/tcp


O usando perfiles de aplicación, si existen:

sudo ufw allow 'Nginx Full'


o

sudo ufw allow 'Apache Full'

Esto es muy útil cuando ya tienes perfiles definidos para esos servicios.



Cómo permitir un puerto concreto


Ejemplo: permitir un panel en el puerto 8080

sudo ufw allow 8080/tcp


Ejemplo: permitir un servicio UDP en el puerto 51820

sudo ufw allow 51820/udp

Esto te permite afinar mucho según el servicio que uses.



Cómo denegar un puerto concreto


Si quieres bloquear explícitamente un puerto:

sudo ufw deny 3306/tcp

Esto puede tener sentido si, por ejemplo, no quieres exponer MySQL a internet.


De hecho, en muchos servidores conviene que bases de datos como MySQL o MariaDB no estén accesibles públicamente salvo que realmente lo necesites y lo configures con mucho criterio.



Cómo eliminar una regla


Si añadiste una regla por error o ya no la necesitas:

sudo ufw delete allow 8080/tcp

Esto ayuda mucho cuando haces ajustes y limpias reglas antiguas.



Cómo ver reglas numeradas


Para gestionar mejor las reglas:

sudo ufw status numbered

Esto te muestra las reglas con número, lo que facilita borrarlas por índice si hace falta.


Por ejemplo:

sudo ufw delete 3

Muy útil cuando tienes varias reglas y quieres limpiar sin equivocarte.



Cómo permitir acceso solo desde una IP concreta


Una de las funciones más interesantes de UFW es restringir accesos por IP.

Por ejemplo, permitir SSH solo desde una IP específica:

sudo ufw allow from 192.168.1.50 to any port 22 proto tcp


Esto significa:

  • permite conexiones solo desde esa IP
  • hacia el puerto 22
  • usando TCP

Este enfoque es muy potente para paneles, servicios internos o entornos más controlados.



Cómo permitir una subred


Si quieres permitir acceso desde una red interna:

sudo ufw allow from 192.168.1.0/24


O restringir un servicio concreto a esa red:

sudo ufw allow from 192.168.1.0/24 to any port 3306 proto tcp

Muy útil para entornos locales o redes internas donde la base de datos no debe ser pública.



Cómo bloquear una IP concreta


Si necesitas denegar una IP:

sudo ufw deny from 203.0.113.44


O un acceso específico a puerto:

sudo ufw deny from 203.0.113.44 to any port 22 proto tcp

Esto puede ayudarte frente a tráfico problemático, aunque para escenarios más automatizados herramientas como fail2ban suelen complementar muy bien esta parte.



Ejemplo práctico: servidor web básico seguro


Imagina que tienes un VPS con:

  • SSH
  • Nginx
  • HTTPS

Una configuración inicial razonable sería:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable


Esto deja permitido:

  • acceso remoto por SSH
  • tráfico web HTTP/HTTPS

Y bloquea el resto de accesos entrantes que no hayas autorizado.

Es una base muy buena para muchos proyectos web.



Ejemplo práctico: servidor con panel interno no público


Supongamos que tienes una app en el puerto 3000, pero solo quieres que sea accesible desde tu red local o desde una IP concreta.

En vez de hacer esto:

sudo ufw allow 3000/tcp


mejor algo como:

sudo ufw allow from 192.168.1.0/24 to any port 3000 proto tcp


O incluso desde una sola IP:

sudo ufw allow from 203.0.113.10 to any port 3000 proto tcp

Esto es mucho más seguro que exponer el puerto a todo internet.



Cómo desactivar UFW temporalmente


Si necesitas desactivarlo temporalmente:

sudo ufw disable

Pero úsalo con cuidado. En un servidor público no conviene dejar el firewall desactivado por pereza o por pruebas rápidas sin entender el impacto.



Cómo resetear UFW


Si quieres empezar desde cero:

sudo ufw reset

Esto elimina las reglas y desactiva UFW.

Úsalo con precaución, especialmente si el sistema depende de acceso remoto por SSH.



Cómo comprobar qué puertos están escuchando además del firewall


UFW controla tráfico, pero no te dice por sí solo qué procesos están escuchando.

Conviene combinarlo con herramientas como:

ss -tulpn

Así puedes ver:

  • qué puertos están abiertos en el sistema
  • qué servicio los está usando

Esto te ayuda a tomar decisiones más informadas sobre qué permitir o bloquear.



Errores comunes al configurar UFW


1. Activarlo sin permitir SSH

Es el clásico error que deja fuera al administrador.

2. Abrir demasiados puertos “por si acaso”

Mala práctica. Solo deberías abrir lo necesario.

3. Exponer bases de datos a internet sin necesidad

Muy frecuente y muy evitable.

4. No revisar reglas antiguas

A veces el firewall queda lleno de reglas temporales que ya no tienen sentido.

5. Asumir que UFW reemplaza toda la seguridad

No. Es una capa más, no la única.

6. No pensar en el origen del tráfico

A veces no basta con abrir un puerto; conviene limitar desde qué IP o red se permite el acceso.



Buenas prácticas con UFW

  • permite solo lo necesario
  • configura SSH antes de activar el firewall
  • usa deny incoming por defecto
  • evita exponer puertos internos innecesarios
  • revisa reglas periódicamente
  • combina UFW con logs, SSH seguro y fail2ban si hace falta
  • documenta qué puertos abriste y por qué
  • restringe por IP cuando tenga sentido


Conclusión:


UFW es una de las formas más sencillas y prácticas de añadir una capa de seguridad real a un sistema Linux sin complicarte demasiado.

No necesitas ser experto en firewalls para empezar a usarlo bien. Con unas cuantas reglas claras, una política razonable por defecto y algo de atención a SSH y a los puertos expuestos, puedes mejorar mucho la seguridad de tu servidor.

Si trabajas con Linux, VPS, Raspberry Pi o despliegues web, UFW debería formar parte de tu base mínima de administración y protección.