Cómo Configurar un Cortafuegos con UFW en un Servidor Ubuntu 22.04
En un Servidor Ubuntu 22.04, puedes gestionar el tráfico de red entrante y saliente usando UFW (Cortafuegos Descomplicado). Para servidores remotos, asegúrate de permitir el puerto SSH que estás usando actualmente antes de habilitar el cortafuegos, y confirma que puedes recuperar el acceso usando otra terminal o consola.
Cosas a Verificar Antes de Comenzar
UFW es una herramienta para gestionar cortafuegos en Linux. Incluso si un puerto está permitido en el cortafuegos, una conexión solo puede realizarse si el servicio está instalado, en ejecución y escuchando en la dirección y puerto correctos. Si existen grupos de seguridad en la nube o cortafuegos externos, revise sus reglas por separado también.
No cambie arbitrariamente las políticas existentes en un servidor en funcionamiento. Primero, verifique el estado actual del cortafuegos, las reglas registradas, los servicios requeridos y los puertos de acceso, y prepare un método de acceso que pueda utilizarse incluso si se pierde la conexión SSH, como a través de una consola en la nube o la consola de administración del servidor. Los comandos requieren privilegios de administrador.
sudo ufw status verbose
sudo ufw show added
sudo ss -lntup
status verbose muestra las políticas y reglas activas de UFW. Si UFW está inactivo, no se pueden verificar todas las reglas registradas solo con esta pantalla, por lo que también se debe consultar show added. ss ayuda a identificar los sockets que están escuchando, pero no establece si un servicio es accesible desde el exterior.
Activar después de permitir SSH
El siguiente es un ejemplo de un nuevo servidor ejecutando SSH en el puerto TCP 22 por defecto. Si el puerto es diferente, cámbielo al puerto real. Esta regla permite ese puerto sin restringirlo a una IP específica, así que considere que el rango de acceso es amplio. En servidores ya activos, revise primero las reglas y prioridades existentes.
sudo ufw allow 22/tcp
Verifique otras reglas de servicio requeridas y la política predeterminada, luego encienda el firewall. Cuando encienda UFW, las conexiones SSH existentes pueden ser interrumpidas mientras se aplican nuevamente las reglas. Pruebe una nueva conexión SSH desde un terminal separado mientras mantiene la sesión actual, y si falla, acceda con la consola preparada para modificar las reglas.
sudo ufw enable
sudo ufw status verbose
Verifique que el estado sea active y que se muestre la regla SSH prevista. Luego, pruebe las conexiones desde redes permitidas y no permitidas para los servicios realmente necesarios. Este procedimiento y las excepciones también se pueden consultar en la sección de gestión remota de Documentación de Ubuntu 22.04 UFW.
Políticas básicas y reglas de puertos
La configuración predeterminada de un UFW recién instalado generalmente niega las conexiones entrantes y permite las conexiones salientes, pero esto puede variar según el servidor. Verifique las políticas reales con status verbose. Por ejemplo, para negar las conexiones entrantes por defecto en un servidor nuevo donde se hayan verificado todos los servicios necesarios, puede usar el siguiente comando. En un servidor ya en funcionamiento, primero revise cómo los cambios en la política afectarán a los servicios y conexiones existentes.
sudo ufw default deny incoming
Si necesita proporcionar un servidor web externamente, permita los puertos y protocolos que realmente se usan. Los siguientes son ejemplos de puertos TCP para HTTP y HTTPS, y no es necesario aplicarlos de manera universal a servidores que no ejecutan servicios web.
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Si el servidor proporciona servicios DNS, puede permitir UDP y TCP en el puerto 53 según sea necesario. No abra puertos en servidores que no proporcionen servicios DNS solo porque sea un ejemplo.
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
allow agrega reglas de permiso, y deny agrega reglas de denegación. Las reglas de puerto sin un protocolo especificado pueden aplicarse tanto a TCP como a UDP, por lo que es más claro especificar el protocolo requerido. El orden de las reglas es importante, y se puede aplicar la primera regla coincidente, por lo que agregar una regla de denegación cuando ya existen reglas de permiso no necesariamente bloquea el acceso.
Permitir el acceso solo desde IPs específicas
El siguiente es un ejemplo de permitir conexiones únicamente al puerto TCP 22 desde una sola dirección IPv4. 192.0.2.10 es una dirección de marcador de posición con fines de explicación, así que reemplázala con la IP de acceso de administrador real, y si la IP puede cambiar, prepara primero un método de recuperación.
sudo ufw allow from 192.0.2.10 to any port 22 proto tcp
Incluso si agregas esta regla, el acceso puede no estar restringido si permanece una regla que permite el puerto 22 desde todas las direcciones. Verifica las reglas existentes y su orden usando la lista numerada, y conserva solo las reglas que sean realmente necesarias. Si el servidor tiene IPv6 habilitado, no asumas que una regla solo para IPv4 restringe el acceso IPv6; también verifica las políticas y reglas de IPv6.
sudo ufw status numbered
Eliminar reglas y desactivar el cortafuegos
Para eliminar una regla que agregaste con el contenido exacto, utiliza delete en el comando original. Por ejemplo, el comando a continuación elimina una regla que permite el puerto UDP 53, mientras que las reglas TCP son separadas.
sudo ufw delete allow 53/udp
También puedes eliminar por número, pero si eliminas una regla, los números cambian. Siempre verifica nuevamente el número y el contenido actuales con sudo ufw status numbered. La eliminación por número solo elimina una regla de IPv4 o IPv6 mostrada, así que verifica la regla correspondiente para la otra versión de IP también. Después de la eliminación, verifica nuevamente el estado y prueba la conexión real.
Para desactivar el firewall, utiliza el siguiente comando. Cuando está desactivado, se elimina la protección proporcionada por UFW, por lo que no asumas que es seguro solo porque existe otro firewall; primero, verifica el alcance del impacto.
sudo ufw disable
Cuando una regla no se comporta como se espera
Verifique si el servicio está en funcionamiento, si se permite el puerto y protocolo correctos, el orden de las reglas y las políticas predeterminadas. Además, revise las reglas del firewall en la nube, del router y de la red ascendente, así como las direcciones IPv4 o IPv6 utilizadas para conectarse. Debido a contenedores o reglas de red gestionadas por separado, puede ser difícil juzgar el comportamiento general usando solo la lista de estado de UFW.
Antes de cambiar realmente una regla, puede previsualizar los cambios usando --dry-run. Por ejemplo, el siguiente comando muestra los cambios a una regla de permitir TCP 80 sin aplicarlos.
sudo ufw --dry-run allow 80/tcp
La pantalla de estado de UFW muestra principalmente las reglas gestionadas por los comandos de UFW y no representa todas las configuraciones del firewall en el sistema. Para explicaciones adicionales y formatos de comandos, consulte Documentación del Firewall de Ubuntu Server.




