Introducción
UFW, o Uncomplicated Firewall, es una interfaz para iptables diseñada para simplificar la configuración de un firewall. Aunque iptables es una herramienta potente y flexible, aprender a usarla para configurar correctamente un firewall puede ser difícil para principiantes. Si busca empezar a proteger su red y no sabe qué herramienta usar, UFW puede ser una buena opción.
Requisitos previos
Si usa Ubuntu 16.04 o anterior, le recomendamos actualizar a una versión más reciente, ya que Ubuntu ya no es compatible con estas versiones. Estas instrucciones le ayudarán a actualizar su versión de Ubuntu.
Paso 1: Asegúrese de que IPv6 esté habilitado
En versiones recientes de Ubuntu, IPv6 está habilitado por defecto. En la práctica, esto significa que la mayoría de las reglas de firewall añadidas al servidor incluirán tanto IPv4 como IPv6, siendo este último identificado como v6 en la salida del comando de estado de UFW. Para comprobar si IPv6 está habilitado, puede consultar el archivo de configuración de UFW en /etc/default/ufw. Abra este archivo con nano o su editor de línea de comandos preferido:
sudo nano /etc/default/ufwLuego, asegúrese de que el valor IPV6 esté configurado en Sí. Debería verse así:
IPV6=yesGuarde y cierre el archivo. Si usa nano, puede hacerlo presionando CTRL+X, luego Y y ENTER para confirmar.
Cuando UFW se habilita en el siguiente paso de esta guía, se configurará para escribir reglas de firewall tanto IPv4 como IPv6.
Paso 2: Establecer políticas predeterminadas
Si recién está comenzando con UFW, un buen primer paso es revisar las políticas predeterminadas de su firewall. Estas reglas controlan cómo se gestiona el tráfico que no coincide explícitamente con ninguna otra regla.
De forma predeterminada, UFW está configurado para denegar todas las conexiones entrantes y permitir todas las salientes. Esto significa que cualquiera que intente acceder a su servidor no podrá conectarse, mientras que cualquier aplicación dentro del servidor podrá comunicarse con el exterior. Se incluyen reglas adicionales para permitir servicios y puertos específicos como excepciones a esta política general.
Para asegurarse de que puede seguir el resto de este tutorial, ahora configurará sus políticas UFW predeterminadas para el tráfico entrante y saliente.
Para establecer la política de ingreso de UFW predeterminada en denegar, ejecute el siguiente comando:
sudo ufw default deny incomingOutput
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)Para establecer la política de salida UFW predeterminada como permisiva, ejecute el siguiente comando:
Estos comandos establecen los valores predeterminados para denegar las conexiones entrantes y permitir las salientes. Estos valores predeterminados del firewall pueden ser suficientes para una computadora personal, pero los servidores a menudo necesitan responder a las solicitudes entrantes de usuarios externos. Hablaremos de esto más adelante.
Paso 3: Permitir conexiones SSH
Si activa su firewall UFW ahora, denegará todas las conexiones entrantes. Esto significa que, si desea que su servidor responda a este tipo de solicitudes, deberá crear reglas que permitan explícitamente las conexiones entrantes legítimas, por ejemplo, conexiones SSH o HTTP. Si utiliza un servidor en la nube, probablemente querrá permitir las conexiones SSH entrantes para poder conectarse y administrar su servidor.
Permitir el perfil de aplicación OpenSSH UFW
Una vez instaladas, la mayoría de las aplicaciones que dependen de conexiones de red registran un perfil de aplicación en UFW, lo que permite a los usuarios habilitar o denegar rápidamente el acceso externo a un servicio. Puede comprobar qué perfiles están registrados actualmente en UFW con el siguiente comando:
sudo ufw app listOutput
Available applications:
OpenSSHPara habilitar el perfil de aplicación OpenSSH, ejecute el siguiente comando:
Permitir SSH según el nombre del servicio
Otra forma de configurar UFW para permitir conexiones SSH entrantes es hacer referencia a su nombre de servicio:
Habilitar SSH según el número de puerto
Como alternativa, puede escribir la regla equivalente especificando el puerto en lugar del nombre del perfil de la aplicación o del servicio. Por ejemplo, este comando funciona como en los ejemplos anteriores:
sudo ufw allow 22Output
Rule added
Rule added (v6)Si ha configurado su servicio SSH para usar un puerto diferente, deberá especificar el puerto correspondiente. Por ejemplo, si su servidor SSH escucha en el puerto 2222, puede usar este comando para permitir conexiones en ese puerto:
sudo ufw allow 2222Output
Rule added
Rule added (v6)Ahora que su firewall está configurado para permitir conexiones SSH entrantes, puede habilitarlo.
Paso 4: Habilitar UFW
Su firewall debería estar configurado para permitir conexiones SSH. Para verificar qué reglas se han añadido hasta el momento, incluso con el firewall deshabilitado, puede usar el siguiente comando:
sudo ufw show added
Output
Added user rules (see 'ufw status' for running firewall):
ufw allow OpenSSHDespués de verificar que tiene una regla para permitir conexiones SSH entrantes, puede habilitar el firewall con el siguiente comando:
sudo ufw enable
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Recibirá una advertencia indicando que este comando podría interrumpir las conexiones SSH existentes. Ya ha configurado una regla de firewall que permite conexiones SSH, por lo que podrá continuar. Responda con "y" y presione ENTER.
El firewall ya está habilitado. Ejecute el comando sudo ufw status verbose para ver las reglas configuradas. El resto de este tutorial explica cómo usar UFW con más detalle, como permitir o denegar diferentes tipos de conexiones.
Paso 5 — Permitir otras conexiones
En este punto, debe permitir todas las demás conexiones que su servidor necesite gestionar. Las conexiones que debe permitir dependen de sus necesidades específicas. Ya sabe cómo escribir reglas que permiten conexiones según el perfil de la aplicación, el nombre del servicio o el puerto. Ya lo hizo para SSH en el puerto 22. También puede hacerlo para:
- HTTP en el puerto 80, que es el mismo puerto utilizado por servidores web no cifrados, usando sudo ufw allow http o sudo ufw allow 80
- HTTPS en el puerto 443, que es el mismo puerto que usan los servidores web cifrados, usando sudo ufw allow https o sudo ufw allow 443
- Apache con HTTP y HTTPS, usando sudo ufw allow 'Apache Full'‘
- Nginx con HTTP y HTTPS, usando sudo ufw allow 'Nginx Full'‘
No olvide comprobar qué perfiles de aplicación están disponibles para su servidor utilizando el comando sudo ufw app list.
Además de especificar un puerto o un nombre de servicio conocido, existen otras maneras de permitir conexiones. Analizaremos algunos de estos métodos a continuación.
Rangos de puertos específicos
Puede especificar un rango de puertos con UFW. Algunas aplicaciones usan varios puertos en lugar de uno solo.
Por ejemplo, para permitir conexiones X11 utilizando los puertos 6000-6007, utilice estos comandos:
sudo ufw permitir 6000:6007/tcp
sudo ufw permitir 6000:6007/udp
Al especificar rangos de puertos con UFW, debe especificar el protocolo (TCP o UDP) al que se aplicarán las reglas. No lo hemos mencionado antes porque al no especificar un protocolo, se permiten automáticamente ambos, lo cual es adecuado en la mayoría de los casos.
Direcciones IP específicas
Al trabajar con UFW, también puede especificar direcciones IP en sus reglas. Por ejemplo, si desea permitir conexiones desde una dirección IP específica, como la dirección IP de su trabajo o casa (203.0.113.4), utilice el parámetro "from" e introduzca la dirección IP deseada:
sudo ufw allow from 203.0.113.4Output
Rule addedTambién puede especificar el puerto al que se permite conectar una dirección IP añadiendo "<sup>" a cada puerto seguido del número de puerto. Por ejemplo, si desea permitir que 203.0.113.4 se conecte al puerto 22 (SSH), utilice este comando:
sudo ufw allow from 203.0.113.4 to any port 22
OutputRule added
Subredes
Si desea permitir el acceso a una subred de direcciones IP, puede hacerlo utilizando la notación CIDR para especificar una máscara de red. Por ejemplo, si desea permitir el acceso a todas las direcciones IP desde 203.0.113.1 hasta 203.0.113.254, puede usar este comando:
sudo ufw allow from 203.0.113.0/24
Output
Rule addedDe igual forma, puede especificar el puerto de destino al que la subred 203.0.113.0/24 puede conectarse. De nuevo, usaremos el puerto 22 (SSH) como ejemplo:
sudo ufw allow from 203.0.113.0/24 to any port 22Output
Rule addedConexión a una interfaz de red específica
Si desea crear una regla de firewall que solo se aplique a una interfaz de red específica, puede hacerlo especificando "Permitir registro" seguido del nombre de la interfaz de red.
Antes de continuar, puede buscar sus interfaces de red. Para ello, utilice este comando:
ip addrOutput Excerpt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .La salida resaltada muestra los nombres de las interfaces de red. Suelen tener nombres como eth0 o enp3s2.
Entonces, si su servidor tiene una interfaz de red pública llamada eth0, puede permitir el tráfico HTTP (puerto 80) con este comando:
sudo ufw allow in on eth0 to any port 80Output
Rule added
Rule added (v6)Hacer esto permitirá que su servidor reciba solicitudes HTTP de Internet público.
O si desea que su servidor de base de datos MySQL (puerto 3306) escuche conexiones en la interfaz de red privada eth1, por ejemplo, puede usar este comando:
sudo ufw allow in on eth1 to any port 3306Output
Rule added
Rule added (v6)Esto permite que otros servidores de su red privada se conecten a su base de datos MySQL.
Paso 6 – Descartar conexiones
Si no ha cambiado la política predeterminada para las conexiones entrantes, UFW está configurado para denegar todas las conexiones entrantes. En resumen, esto simplifica el proceso de creación de una política de firewall segura, ya que requiere la creación de reglas que permitan explícitamente el paso de puertos y direcciones IP específicos.
Sin embargo, a veces es conveniente denegar conexiones específicas según la dirección IP o subred de origen, quizás porque se sabe que el servidor está siendo atacado desde allí. Además, si se desea cambiar la política de entrada predeterminada a permitir (lo cual no se recomienda), se deberán crear reglas de denegación para cada servicio o dirección IP desde la que no se deseen permitir conexiones.
Para escribir reglas de denegación, puede utilizar los comandos descritos anteriormente, reemplazando allow por deny.
Por ejemplo, para rechazar conexiones HTTP, puede utilizar este comando:
sudo ufw deny httpOutput
Rule added (v6)O si desea denegar todas las conexiones desde 203.0.113.4, puede usar este comando:
sudo ufw deny from 203.0.113.4Output
Rule addedEn algunos casos, también puede que desee bloquear las conexiones salientes del servidor. Para evitar que todos los usuarios usen un puerto del servidor, como el puerto 25 para el tráfico SMTP, puede usar la opción "denegar salida" seguida del número de puerto:
sudo ufw deny out 25Output
Rule added
Rule added (v6)Esto bloqueará todo el tráfico SMTP saliente en el servidor.
Paso 7 – Eliminar reglas
Saber cómo eliminar reglas de firewall es tan importante como saber cómo crearlas. Hay dos maneras de especificar qué reglas eliminar: mediante el número de regla o mediante el nombre legible (similar a cómo se especifican las reglas al crearlas).
Eliminar una regla UFW por número
Para eliminar una regla de UFW según su número, primero debe obtener una lista numerada de todas las reglas de su firewall. El comando de estado de UFW tiene una opción para mostrar los números junto a cada regla, como se muestra aquí:
sudo ufw status numberedNumbered Output:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN AnywhereSi decide eliminar la regla n.° 2, la regla que permite conexiones del puerto 80 (HTTP), puede especificarla en el comando de eliminación de UFW de la siguiente manera:
sudo ufw delete 2Output
Deleting:
allow 80
Proceed with operation (y|n)? y
Rule deletedSe le solicitará confirmación y luego se eliminará la regla 2, que permite la conectividad HTTP. Tenga en cuenta que si tiene IPv6 habilitado, también deberá eliminar la regla correspondiente.
Eliminar una regla UFW por nombre
En lugar de usar números de regla, también puede referirse a una regla con un nombre legible, determinado por el tipo de regla (normalmente, permitir o denegar) y el nombre del servicio o el número de puerto al que se dirige, o el nombre del perfil de aplicación, si se utiliza. Por ejemplo, si desea eliminar una regla de permiso para un perfil de aplicación llamado Apache Full que estaba habilitado previamente, puede usar el siguiente comando:
sudo ufw delete allow "Apache Full"Output
Rule deleted
Rule deleted (v6)
El comando eliminar funciona de la misma manera para las reglas creadas haciendo referencia a un servicio por nombre o puerto. Por ejemplo, si previamente creó una regla para permitir conexiones HTTP a sudo ufw permitir http Puede eliminar la regla de la siguiente manera:
sudo ufw delete allow httpOutput
Rule deleted
Rule deleted (v6)Dado que los nombres de servicio son intercambiables con los números de puerto al especificar reglas, también puede hacer referencia a la misma regla permitir 80 en lugar de permitir http:
sudo ufw delete allow http
Output
Rule deleted Rule deleted (v6)Dado que los nombres de servicio son intercambiables con los números de puerto al especificar reglas, también puede hacer referencia a la misma regla permitir 80 en lugar de permitir http:
sudo ufw delete allow 80Output
Rule deleted
Rule deleted (v6)Al eliminar reglas UFW por nombre, se eliminan tanto las reglas IPv4 como las IPv6, si las hay.
Paso 8: Verifique el estado y las reglas de UFW
En cualquier momento, puedes comprobar el estado de UFW con este comando:
sudo ufw status verboseSi UFW está deshabilitado, lo cual está de forma predeterminada, verá algo como esto:
Output
Status: inactiveSi UFW está habilitado, como debería ser si seguiste el paso 3, el resultado indicará que está habilitado y enumerará las reglas establecidas. Por ejemplo, si el firewall está configurado para permitir conexiones SSH (puerto 22) desde cualquier lugar, el resultado podría ser similar a esto:
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhereاگر میخواهید بررسی کنید که UFW چگونه فایروال را پیکربندی کرده است، از دستور status استفاده کنید.
مرحله ۹ – غیرفعال کردن یا تنظیم مجدد فایروال
اگر تصمیم دارید که از فایروال UFW استفاده نکنید، میتوانید آن را با این دستور غیرفعال کنید:
sudo ufw disableOutput
Firewall stopped and disabled on system startupLas reglas que hayas creado con UFW dejarán de estar activas. Si necesitas activarlas más adelante, siempre puedes sudo ufw habilitar Correr.
Si ya ha configurado las reglas UFW pero decide comenzar de nuevo, puede usar el comando de reinicio:
sudo ufw resetOutput
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210729_170353'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210729_170353'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210729_170353'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210729_170353'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210729_170353'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210729_170353'Esto deshabilitará UFW y eliminará las reglas definidas previamente. Esto debería permitirle comenzar de cero con UFW. Tenga en cuenta que si modifica las políticas predeterminadas en cualquier momento, no volverán a su configuración original.
Conclusión
Su firewall ya está configurado para permitir (al menos) conexiones SSH. Asegúrese de permitir cualquier otra conexión entrante que su servidor necesite y de restringir las conexiones innecesarias para mantener su servidor funcional y seguro.
Para obtener más información sobre las configuraciones comunes de UFW, consulte el tutorial
Aspectos esenciales de UFW: Reglas y comandos comunes del firewall para la seguridad de Linux
Échale un vistazo.









