Sin un firewall, no hay reglas ni restricciones en el tráfico de su red y esto conlleva a una serie de consecuencias negativas. El sistema Linux viene con una herramienta de configuración de firewall predeterminada, que es Uncomplicated Firewall (UFW). Pero, ¿cómo configuras un firewall UFW? Siéntate y relájate, ¡este tutorial te tiene cubierto!
En este tutorial, aprenderás cómo configurar UFW y establecer un firewall en tu sistema Linux para asegurar tu red y prevenir actos maliciosos.
¿Listo? ¡Sigue leyendo para comenzar!
Prerrequisitos
Este tutorial será una demostración práctica. Si deseas seguirlo, asegúrate de tener lo siguiente:
- Una máquina Ubuntu: Este tutorial utiliza Ubuntu 20.04 LTS, pero otras distribuciones de Linux funcionarán.
- Privilegios de root en tu máquina.
Instalación de UFW y Habilitación de la Conexión IPv6
Aunque UFW viene incluido con tu sistema Ubuntu, no está instalado por defecto. Instala UFW primero con el gestor de paquetes apt
y configúralo para permitir conexiones sobre IPv6.
1. Abre tu terminal y ejecuta el comando apt update
a continuación para actualizar tu índice de paquetes local. El comando acepta todas las indicaciones (-y
) durante la actualización para menos intervención del usuario.

2. A continuación, ejecuta el siguiente comando para instalar UFW (install uwf
) en tu sistema mientras aceptas todas las indicaciones (-y
) durante la instalación.

3. Abre el archivo de configuración de UFW (/etc/default/ufw) con tu editor de texto favorito. UFW soporta IPv6, pero necesitas asegurarte de que el cortafuegos esté configurado para aceptar conexiones sobre IPv6.
Si solo tienes habilitado IPv4, aún te estás dejando vulnerable a ataques IPv6.
4. Desplázate hacia abajo hasta la variable IPV6 y establece el valor en yes, como se muestra a continuación, luego guarda los cambios y sal del editor

5. Por último, ejecuta el comando a continuación para desactivar y volver a activar UFW. El comando reinicia el servicio de UFW para que los cambios puedan surtir efecto.
Una vez que el comando se complete, tu cortafuegos ahora puede escribir conjuntos de reglas de cortafuegos tanto IPv4 como IPv6.
Configuración de Políticas Predeterminadas para Reglas de Cortafuegos
Si estás empezando con UFW, se recomienda configurar una política predeterminada para tus reglas. Las políticas predeterminadas se aplican a una cadena que aún no tiene reglas específicas definidas.
Configura UFW para denegar todas las conexiones entrantes y permitir todas las conexiones salientes. Como resultado, se niega el acceso a cualquier persona que intente alcanzar tu máquina desde el mundo exterior, mientras que aún puedes conectar libremente a cualquier sitio web o servidor.
Ejecuta el comando ufw
a continuación para denegar
todas las conexiones entrantes
de manera predeterminada
.

Ahora ejecuta el siguiente comando para permitir
todas las conexiones salientes
de manera predeterminada
.

Permitir Conexiones SSH en el Firewall UFW
Acabas de establecer políticas predeterminadas en tu firewall UFW para denegar todo el tráfico entrante, y la regla “permitir todo-denegar todo” es una buena configuración para un usuario regular. Pero ¿qué pasa si estás ejecutando un servidor? Necesitarás permitir tráfico específico tanto de entrada como de salida. Permitir la conexión SSH en tu firewall UFW hará el truco para permitir tráfico específico de entrada y salida.
Vas a configurar un servidor SSH que permita conexiones SSH entrantes en el puerto 22. Pero ¿por qué el puerto 22 y no cualquier otro puerto? En sistemas tipo Unix, el demonio SSH escucha en el puerto 22 de manera predeterminada, así que es una buena práctica usar el puerto SSH predeterminado para facilitarte un poco la vida.
1. Ejecuta los siguientes comandos para instalar el servidor OpenSSH (instalar openssh-server
) en tu sistema y comenzar un servidor OpenSSH (start ssh
).
2. Ahora ejecuta el siguiente comando para permitir conexiones SSH entrantes. Sin especificar el puerto 22 será suficiente ya que UFW sabe qué puerto es para SSH.

El archivo /etc/services contiene una lista de todos los servicios disponibles en su sistema. Abra el archivo en su editor de texto, desplácese hasta ssh y verá que el número de puerto (22) es parte de la descripción del servicio, como se muestra a continuación.

Pero tal vez prefiera especificar el número de puerto (22
) para permitir SSH. Si es así, ejecute el siguiente comando en su lugar.
3. Ahora ejecute el siguiente comando para habilitar UFW.
Escriba Y en el mensaje de confirmación, como se muestra a continuación, y presione Enter para continuar ejecutando el comando. UFW ahora comenzará a filtrar paquetes en su sistema.

4. Finalmente, ejecute cualquiera de los siguientes comandos para verificar el estado de su firewall UFW.
Si ejecuta el comando con la opción verbose
, verá una salida similar a la siguiente:
- Estado: activo – Indica que el firewall está actualmente en funcionamiento.
- Registro: activado (bajo) – Indica que UFW está registrando todos los paquetes que están siendo procesados por el firewall.
- Por defecto: denegar (entrantes), permitir (salientes), desactivado (enrutado) – Indica que la política predeterminada es denegar todas las conexiones entrantes y permitir todas las conexiones salientes.
- Nuevos perfiles: omitir – Indica que el cortafuegos actualmente está utilizando el conjunto predeterminado de reglas.

Si ejecutas el comando con la opción numerado
en su lugar, verás la salida a continuación. Puedes ver una lista de reglas numeradas y su estado correspondiente de PERMITIR o DENEGAR.

Permitir conexiones HTTP y HTTPS
En este punto, solo has permitido conexiones SSH en tu cortafuegos UFW, pero eso limita las capacidades de tu servidor. Permite otros tipos de conexiones, como HTTP o HTTPS, y agrega más reglas al cortafuegos UFW.
Ejecuta cualquiera de los siguientes comandos para permitir conexiones HTTP entrantes.

Ahora, ejecuta cualquiera de los siguientes comandos para permitir conexiones HTTPS entrantes.

Permitir conexiones desde un rango de puertos específico y dirección IP
Algunas aplicaciones utilizan varios puertos para proporcionar sus servicios. Y tal vez tengas un rango de puertos que abrir o necesites permitir la conexión desde una dirección IP específica. En ese caso, agrega más reglas al cortafuegos UFW.
Ejecuta los comandos a continuación para permitir conexiones entrantes en los puertos 5001 a 5009. Siempre debes especificar el protocolo (tcp
o udp
) después del rango de puertos al que se aplican las reglas, ya que no todos los puertos son utilizados por ambos protocolos.
Por ejemplo, los puertos TCP comúnmente utilizados incluyen 80 (HTTP) y 443 (HTTPS). Pero los puertos UDP comunes incluyen 53 (DNS) y 67/68 (DHCP).

Ejecuta el siguiente comando si prefieres permitir conexiones SSH desde una dirección IP específica. El comando permite conexiones SSH (port 22
) solo desde la dirección IP 192.168.1.2
.

Permitir tráfico desde una interfaz de red específica
UFW también te permite permitir tráfico solo en una interfaz de red específica, como eth0 que es la primera interfaz Ethernet y wlan0 que es la primera interfaz Wi-Fi.
Ejecuta cualquiera de los comandos a continuación para permitir conexiones HTTP solo en las interfaces eth0
y wlan0
.

Eliminación de reglas de firewall UFW
Quizás algunas reglas del firewall UFW ya no sirvan para nada. En ese caso, es posible que desees eliminar algunas de las reglas de UFW. Pero primero, debes conocer el número o el nombre de la regla que deseas eliminar.
1. Ejecuta el siguiente comando para obtener una lista numerada de las reglas añadidas a UFW.
Observa el número o nombre de la regla en la salida, como se muestra a continuación.

2. A continuación, ejecuta el siguiente comando para eliminar
la regla número 4
, que es el rango de puertos 5001:5010/tcp
.

3. Ejecuta el siguiente comando para eliminar
una regla por su nombre real con el estado allow
. En este ejemplo, eliminarías la regla http
ejecutando el siguiente comando.

4. Ahora ejecuta el siguiente comando para eliminar
una regla especificando un número de puerto (443
) con el estado allow
.

5. Finalmente, vuelve a ejecutar el siguiente comando como lo hiciste en el paso uno para listar todas las reglas.
Como se muestra a continuación, las reglas para el rango de puertos 5001:5010/tcp
, el http
y el puerto 443
ahora han sido eliminadas.

Restableciendo el Firewall UFW
Puede haber momentos en los que necesites restablecer UFW a sus valores predeterminados, como después de configurar un conjunto grande de reglas. Una actualización puede cambiar tu configuración, requiriendo que vuelvas a configurar UFW y posiblemente comiences desde cero.
Ejecuta el comando ufw reset
a continuación para restablecer todas tus reglas de firewall a sus configuraciones predeterminadas. Este comando deshabilita UFW y elimina todas tus reglas de firewall actuales.
Escribe ‘Y’ y presiona Enter para continuar restableciendo tu firewall UFW.

Una vez que el restablecimiento esté completo, tendrás una instalación fresca de UFW totalmente desactivada, e incluso tus políticas predeterminadas habrán desaparecido.
Ahora ejecuta el siguiente comando para volver a habilitar UFW y comenzar a configurar tus reglas de firewall desde cero.
Si decides que ya no quieres usar UFW, entonces no es necesario volver a habilitarlo. O ejecuta el siguiente comando para asegurarte de que UFW esté desactivado.

Conclusión
A lo largo de este tutorial, te has dado cuenta de que configurar un firewall no es demasiado intimidante cuando se utiliza UFW. Ahora deberías tener una buena comprensión de cómo configurar e implementar tus propias reglas con UFW en Ubuntu.
Ahora, ¿por qué no aprovechar este nuevo conocimiento y aprender más sobre UFW y la seguridad de Docker en una máquina Linux?