Cómo configurar un firewall en un servidor Ubuntu
Publicado: 15 de febrero de 2025, 21:33:33 UTC
Este artículo explica y proporciona algunos ejemplos sobre cómo configurar un firewall en GNU/Linux usando ufw, que es la abreviatura de Uncomplicated FireWall (FireWall sin complicaciones), y el nombre es apropiado, realmente es una forma muy fácil de asegurarse de no tener más puertos abiertos de los necesarios.
How to Set Up a Firewall on Ubuntu Server
La información de esta publicación se basa en Ubuntu Server 14.04 x64. Puede que sea válida o no para otras versiones. (Actualización: puedo confirmar que la información de esta publicación sigue siendo básicamente válida y funcional a partir de Ubuntu Server 24.04, sin embargo, en los 10 años intermedios, ufw se ha vuelto un poco más "inteligente" al tener perfiles para aplicaciones de servidor comunes (por ejemplo, puede habilitar "Nginx completo" en lugar de los puertos 80 y 443 por separado) y ya no es necesario deshabilitar/habilitar todo el firewall para que se apliquen nuevas reglas)
Cuando empecé a trabajar con servidores GNU/Linux (Ubuntu), configurar un cortafuegos implicaba crear y mantener manualmente un archivo de configuración potencialmente complejo para iptables. Sin embargo, hace poco descubrí ufw , que es la abreviatura de Uncomplicated Firewall (cortafuegos sencillo), y realmente lo es :-)
Mi instalación de Ubuntu Server 14.04 ya tenía ufw instalado, pero si la tuya no lo tiene, simplemente instálalo desde los repositorios:
En realidad, UFW es solo una herramienta que simplifica la configuración de iptables. Detrás de escena, son iptables y el firewall del kernel de Linux los que realizan el filtrado, por lo que ufw no es ni más ni menos seguro que estos. Sin embargo, debido a que ufw facilita mucho la configuración correcta de un firewall, puede reducir el riesgo de error humano y, por lo tanto, es posible que sea más seguro para los administradores sin experiencia.
Si su servidor está configurado con IPv6 y también con IPv4, asegúrese de que esto también esté habilitado para UFW. Edite el archivo /etc/default/ufw y busque una línea que diga IPV6=yes . En mi instalación ya estaba allí, pero si no está allí o si dice que no, debe editarlo
Luego, simplemente usa el símbolo del sistema para habilitar los puertos que deseas abrir. Si estás conectado a tu servidor a través de ssh, asegúrate de habilitarlo también o podría interrumpir tu conexión y posiblemente bloquearte del servidor cuando lo actives. Dependiendo de si tienes acceso físico al servidor o no, esto puede ser un poco incómodo ;-)
Por ejemplo, si usa ssh en el puerto estándar 22 y está configurando un servidor web que admite conexiones no cifradas (HTTP en el puerto 80) y cifradas (HTTPS en el puerto 443), deberá emitir los siguientes comandos para configurar ufw:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Si necesita más reglas, simplemente agréguelas como se indica anteriormente.
Si tiene una dirección IP estática y solo necesita poder conectarse a través de ssh desde una ubicación, también puede restringir las conexiones ssh a una única dirección de origen de esta manera:
Por supuesto, introduzca su propia dirección IP.
Cuando haya terminado, habilite ufw ingresando:
¡Y ya está! El firewall está en funcionamiento y se iniciará automáticamente cuando reinicie el servidor :-)
Si realiza cambios en la configuración de ufw, es posible que deba deshabilitarla y habilitarla nuevamente para que surtan efecto, de la siguiente manera:
sudo ufw enable
Para ver la configuración actual, simplemente ingrese:
Si ufw no está habilitado, esto simplemente mostrará un mensaje “inactivo”, de lo contrario, enumerará las reglas definidas actualmente.