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.