Conceptos básicos de UFW: reglas y comandos comunes de firewall

Introducción

UFW ( cortafuegos sencillo ) es una herramienta de configuración de cortafuegos que se ejecuta sobre [nombre del archivo] , incluida por iptablesdefecto en las distribuciones de Ubuntu. Proporciona una interfaz optimizada para configurar casos de uso comunes de cortafuegos mediante la línea de comandos.

Esta guía en formato de hoja de trucos proporciona una referencia rápida a los casos de uso y comandos comunes de UFW, incluidos ejemplos de cómo permitir y bloquear servicios por puerto, interfaz de red y dirección IP de origen.

Cómo utilizar esta guía

  • Esta guía tiene formato de hoja de trucos con fragmentos de línea de comandos independientes.
  • Salte a cualquier sección que sea relevante para la tarea que está intentando completar.
  • Cuando vea texto resaltado en los comandos de esta guía, tenga en cuenta que este texto debe referirse a las direcciones IP de su propia red.

Recuerda que puedes consultar tu conjunto de reglas UFW actual con sudo ufw statuso sudo ufw status verbose.

Implementa tus aplicaciones frontend desde GitHub con la plataforma de aplicaciones DigitalOcean . Deja que DigitalOcean se encargue de escalar tu aplicación.

Verificar el estado de UFW

Para comprobar si ufwestá habilitado, ejecute:

sudo ufw status

OutputStatus: inactive

La salida indicará si su firewall está activo o no.

Habilitar UFW

Si recibiste un Status: inactivemensaje al ejecutar [Nombre del programa] ufw status, significa que el firewall aún no está habilitado en el sistema. Deberás ejecutar un comando para habilitarlo.

De forma predeterminada, al habilitar UFW, se bloqueará el acceso externo a todos los puertos del servidor. En la práctica, esto significa que si está conectado a un servidor por SSH y lo habilita ufwantes de permitir el acceso por el puerto SSH, se desconectará. Asegúrese de seguir la sección sobre cómo habilitar el acceso por SSH de esta guía antes de habilitar el firewall si ese es su caso.

Para habilitar UFW en su sistema, ejecute:

sudo ufw enable

Verás un resultado como este:

OutputFirewall is active and enabled on system startup

Para ver qué está bloqueado o permitido actualmente, puede utilizar el verboseparámetro al ejecutar ufw status, de la siguiente manera:

sudo ufw status

OutputStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

Desactivar UFW

Si por alguna razón necesita deshabilitar UFW, puede hacerlo con el siguiente comando:

sudo ufw disable

Tenga en cuenta que este comando deshabilitará completamente el servicio de firewall en su sistema.

Bloquear una dirección IP

Para bloquear todas las conexiones de red que se originan desde una dirección IP específica, ejecute el siguiente comando, reemplazando la dirección IP resaltada con la dirección IP que desea bloquear:

sudo ufw deny from 203.0.113.100

OutputRule added

En este ejemplo, from 203.0.113.100se especifica una dirección IP de origen de “203.0.113.100”.

Si lo ejecuta sudo ufw statusahora, verá la dirección IP especificada como denegada:

OutputStatus: active

To                         Action      From
--                         ------      ----
Anywhere                   DENY        203.0.113.100         

Todas las conexiones, entrantes o salientes, están bloqueadas para la dirección IP especificada.

Bloquear una subred

Si necesita bloquear una subred completa, puede usar la dirección de subred como fromparámetro en el ufw denycomando. Esto bloquearía todas las direcciones IP de la subred de ejemplo 203.0.113.0/24:

sudo ufw deny from 203.0.113.0/24

OutputRule added

Bloquear conexiones entrantes a una interfaz de red

Para bloquear conexiones entrantes desde una dirección IP específica a una interfaz de red específica, ejecute el siguiente comando, reemplazando la dirección IP resaltada con la dirección IP que desea bloquear:

sudo ufw deny in on eth0 from 203.0.113.100

OutputRule added

El inparámetro indica ufwque la regla se aplique solo a las conexiones entrantes y on eth0especifica que se aplica solo a la eth0interfaz. Esto puede ser útil si tiene un sistema con varias interfaces de red (incluidas las virtuales) y necesita bloquear el acceso externo a algunas de ellas, pero no a todas.

Permitir una dirección IP

Para permitir todas las conexiones de red que se originan desde una dirección IP específica, ejecute el siguiente comando, reemplazando la dirección IP resaltada con la dirección IP a la que desea permitir el acceso:

sudo ufw allow from 203.0.113.101

OutputRule added

Si lo ejecuta sudo ufw statusahora, verá un resultado similar a este, mostrando la palabra ALLOWjunto a la dirección IP que acaba de agregar.

OutputStatus: active

To                         Action      From
--                         ------      ----
...          
Anywhere                   ALLOW       203.0.113.101 

También puede permitir conexiones desde una subred completa proporcionando la máscara de subred correspondiente para un host, como 203.0.113.0/24.

Permitir conexiones entrantes a una interfaz de red

Para permitir conexiones entrantes desde una dirección IP específica a una interfaz de red específica, ejecute el siguiente comando, reemplazando la dirección IP resaltada con la dirección IP que desea permitir:

sudo ufw allow in on eth0 from 203.0.113.102

OutputRule added

El inparámetro indica ufwque se debe aplicar la regla solo a las conexiones entrantes y el on eth0parámetro especifica que la regla se aplica solo a la eth0interfaz.

Si lo ejecuta sudo ufw statusahora, verá un resultado similar a este:

OutputStatus: active

To                         Action      From
--                         ------      ----
...         
Anywhere on eth0           ALLOW       203.0.113.102            

Eliminar la regla de la UFW

Para eliminar una regla configurada previamente en UFW, utilice ufw deleteseguido de la regla ( allowo deny) y la especificación del objetivo. El siguiente ejemplo eliminaría una regla configurada previamente para permitir todas las conexiones desde una dirección IP de 203.0.113.101:

sudo ufw delete allow from 203.0.113.101

OutputRule deleted

Otra forma de especificar la regla que desea eliminar es proporcionar su ID. Esta información se puede obtener con el siguiente comando:

sudo ufw status numbered

OutputStatus: active

     To                         Action      From
     --                         ------      ----
[ 1] Anywhere                   DENY IN     203.0.113.100             
[ 2] Anywhere on eth0           ALLOW IN    203.0.113.102             

En el resultado, se puede ver que hay dos reglas activas. La primera, con valores resaltados, deniega todas las conexiones provenientes de la dirección IP 203.0.113.100. La segunda, permite las conexiones en la eth0interfaz provenientes de la dirección IP 203.0.113.102.

Dado que, por defecto, UFW bloquea todo acceso externo a menos que se permita explícitamente, la primera regla es redundante, por lo que puede eliminarla. Para eliminar una regla por su ID, ejecute:

sudo ufw delete 1

Se le pedirá que confirme la operación y se asegure de que la ID que proporciona se refiere a la regla correcta que desea eliminar.

OutputDeleting:
 deny from 203.0.113.100
Proceed with operation (y|n)? y
Rule deleted

Si vuelves a enumerar tus reglas con sudo ufw status, verás que la regla fue eliminada.

Lista de perfiles de aplicaciones disponibles

Tras la instalación, las aplicaciones que dependen de las comunicaciones de red suelen configurar un perfil UFW que permite la conexión desde direcciones externas. Esto suele ser equivalente a ejecutar ufw allow from, con la ventaja de proporcionar un acceso directo que abstrae los números de puerto específicos que utiliza un servicio y proporciona una nomenclatura intuitiva para los servicios referenciados.

Para enumerar los perfiles que están disponibles actualmente, ejecute lo siguiente:

sudo ufw app list

Si instaló un servicio, como un servidor web u otro software dependiente de la red, y no se creó un perfil en UFW, primero asegúrese de que el servicio esté habilitado. Para servidores remotos, normalmente tendrá OpenSSH disponible:

OutputAvailable applications:
  OpenSSH

Habilitar perfil de aplicación

Para habilitar un perfil de aplicación UFW, ejecute “ ufw allowseguido del nombre del perfil que desea habilitar, que puede obtener con un sudo ufw app listcomando. En el siguiente ejemplo, habilitamos el perfil OpenSSH, que permitirá todas las conexiones SSH entrantes en el puerto SSH predeterminado.

sudo ufw allow “OpenSSH”

OutputRule added
Rule added (v6)

Recuerde citar los nombres de perfil que constan de varias palabras, como Nginx HTTPS.

Deshabilitar el perfil de la aplicación

Para deshabilitar un perfil de aplicación previamente configurado en UFW, deberá eliminar la regla correspondiente. Por ejemplo, considere el siguiente resultado de sudo ufw status:

sudo ufw status

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                               
Nginx Full                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)                   
Nginx Full (v6)            ALLOW       Anywhere (v6)        

Este resultado indica que el Nginx Fullperfil de la aplicación está habilitado, lo que permite todas las conexiones al servidor web, tanto vía HTTP como HTTPS. Si solo desea permitir solicitudes HTTPS desde y hacia su servidor web, primero deberá habilitar la regla más restrictiva (en este caso Nginx HTTPS, ), y luego deshabilitar la regla activa Nginx Full:

sudo ufw allow "Nginx HTTPS"
sudo ufw delete allow "Nginx Full"

Recuerde que puede enumerar todos los perfiles de aplicaciones disponibles con sudo ufw app list.

Permitir SSH

Al trabajar con servidores remotos, deberá asegurarse de que el puerto SSH esté abierto a las conexiones para que pueda iniciar sesión en su servidor de forma remota.

El siguiente comando habilitará el perfil de aplicación OpenSSH UFW y permitirá todas las conexiones al puerto SSH predeterminado en el servidor:

sudo ufw allow OpenSSH

OutputRule added
Rule added (v6)

Aunque es menos fácil de usar, una sintaxis alternativa es especificar el número de puerto exacto del servicio SSH, que normalmente está configurado 22de manera predeterminada:

sudo ufw allow 22

OutputRule added
Rule added (v6)

Permitir SSH entrante desde una dirección IP o subred específica

Para permitir conexiones entrantes desde una dirección IP o subred específica, deberá incluir una fromdirectiva que defina el origen de la conexión. Esto requerirá que también especifique la dirección de destino con un toparámetro. Para restringir esta regla solo a SSH, deberá limitar el protoprotocolo a tcpy luego usar el portparámetro y establecerlo en 22, el puerto predeterminado de SSH.

El siguiente comando solo permitirá conexiones SSH provenientes de la dirección IP 203.0.113.103:

sudo ufw allow from 203.0.113.103 proto tcp to any port 22

OutputRule added

También puede utilizar una dirección de subred como fromparámetro para permitir conexiones SSH entrantes desde una red completa:

sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22

OutputRule added

Permitir Rsync entrante desde una dirección IP o subred específica

El programa Rsync873 , que se ejecuta en el puerto , se puede utilizar para transferir archivos de una computadora a otra.

Para permitir rsyncconexiones entrantes desde una dirección IP o subred específica, utilice el fromparámetro para especificar la dirección IP de origen y el portparámetro para configurar el puerto de destino 873. El siguiente comando solo permitirá conexiones Rsync provenientes de la dirección IP 203.0.113.103:

sudo ufw allow from 203.0.113.103 to any port 873

OutputRule added

Para permitir que toda la 203.0.113.0/24subred pueda acceder rsynca su servidor, ejecute:

sudo ufw allow from 203.0.113.0/24 to any port 873

OutputRule added

Permitir Nginx HTTP / HTTPS

Tras la instalación, el servidor web Nginx configura diferentes perfiles UFW. Una vez que Nginx esté instalado y habilitado como servicio, ejecute el siguiente comando para identificar los perfiles disponibles:

sudo ufw app list | grep Nginx

Output  Nginx Full
  Nginx HTTP
  Nginx HTTPS

Para habilitar el tráfico HTTP y HTTPS, seleccione Nginx Full. De lo contrario, seleccione Nginx HTTPpermitir solo HTTP o Nginx HTTPSHTTPS.

El siguiente comando permitirá el tráfico HTTP y HTTPS en el servidor (puertos 80y 443):

sudo ufw allow "Nginx Full"

OutputRule added
Rule added (v6)

Permitir Apache HTTP / HTTPS

Tras la instalación, el servidor web Apache configura diferentes perfiles UFW. Una vez instalado y habilitado Apache como servicio, ejecute el siguiente comando para identificar los perfiles disponibles:

sudo ufw app list | grep Apache

Output  Apache
  Apache Full
  Apache Secure

Para habilitar el tráfico HTTP y HTTPS, seleccione Apache Full. De lo contrario, seleccione ApacheHTTP o Apache SecureHTTPS.

El siguiente comando permitirá el tráfico HTTP y HTTPS en el servidor (puertos 80y 443):

sudo ufw allow "Apache Full"

OutputRule added
Rule added (v6)

Permitir todos los HTTP entrantes (puerto 80)

Los servidores web, como Apache y Nginx, suelen recibir solicitudes HTTP en el puerto 80. Si su política predeterminada para el tráfico entrante es descartar o denegar, deberá crear una regla UFW para permitir el acceso externo en el puerto 80. Puede usar el número de puerto o el nombre del servicio ( http) como parámetro para este comando.

Para permitir todas las conexiones HTTP (puerto) entrantes 80, ejecute:

sudo ufw allow http

OutputRule added
Rule added (v6)

Una sintaxis alternativa es especificar el número de puerto del servicio HTTP:

sudo ufw allow 80

OutputRule added
Rule added (v6)

Permitir todos los HTTPS entrantes (puerto 443)

HTTPS normalmente se ejecuta en el puerto 443. Si su política predeterminada para el tráfico entrante es descartar o denegar, deberá crear una regla UFW para permitir el acceso externo en el puerto 443. Puede usar el número de puerto o el nombre del servicio ( https) como parámetro para este comando.

Para permitir todas 443las conexiones entrantes HTTPS (puerto), ejecute:

sudo ufw allow https

OutputRule added
Rule added (v6)

Una sintaxis alternativa es especificar el número de puerto del servicio HTTPS:

sudo ufw allow 443

OutputRule added
Rule added (v6)

Permitir todos los HTTP y HTTPS entrantes

Si desea permitir el tráfico HTTP y HTTPS, puede crear una única regla que permita ambos puertos. Para ello, también debe definir el protocolo con el protoparámetro , que en este caso debe establecerse en tcp.

Para permitir todas las conexiones entrantes HTTP y HTTPS (puertos 80y 443), ejecute:

sudo ufw allow proto tcp from any to any port 80,443

OutputRule added
Rule added (v6)

Permitir la conexión MySQL desde una dirección IP o subred específica

MySQL escucha las conexiones de cliente en el puerto 3306. Si un cliente en un servidor remoto utiliza su servidor de base de datos MySQL, deberá crear una regla UFW para permitir dicho acceso.

Para permitir conexiones MySQL entrantes desde una dirección IP o subred específica, utilice el fromparámetro para especificar la dirección IP de origen y el portparámetro para establecer el puerto de destino 3306.

El siguiente comando permitirá que la dirección IP 203.0.113.103se conecte al puerto MySQL del servidor:

sudo ufw allow from 203.0.113.103 to any port 3306

OutputRule added

Para permitir que toda la 203.0.113.0/24subred pueda conectarse a su servidor MySQL, ejecute:

sudo ufw allow from 203.0.113.0/24 to any port 3306

OutputRule added

Permitir la conexión PostgreSQL desde una dirección IP o subred específica

PostgreSQL escucha las conexiones de cliente en el puerto 5432. Si un cliente en un servidor remoto utiliza su servidor de base de datos PostgreSQL, asegúrese de permitir ese tráfico.

Para permitir conexiones entrantes de PostgreSQL desde una dirección IP o subred específica, especifique la fuente con el fromparámetro y configure el puerto en 5432:

sudo ufw allow from 203.0.113.103 to any port 5432

OutputRule added

Para permitir que toda la 203.0.113.0/24subred pueda conectarse a su servidor PostgreSQL, ejecute:

sudo ufw allow from 203.0.113.0/24 to any port 5432

OutputRule added

Bloquear correo SMTP saliente

Los servidores de correo, como Sendmail y Postfix, suelen usar el puerto 25para el tráfico SMTP. Si su servidor no debería enviar correo saliente, le recomendamos bloquear ese tipo de tráfico. Para bloquear las conexiones SMTP salientes, ejecute:

sudo ufw deny out 25

OutputRule added
Rule added (v6)

Esto configura su firewall para bloquear todo el tráfico saliente en el puerto 25. Si necesita rechazar las conexiones salientes en un puerto diferente, puede repetir este comando y reemplazarlo 25con el puerto que desea bloquear.

Conclusión

UFW es una herramienta potente que, si se configura correctamente, puede mejorar considerablemente la seguridad de sus servidores. Esta guía de referencia abarca algunas reglas comunes de UFW que se utilizan a menudo para configurar un firewall en Ubuntu.

La mayoría de los comandos de esta guía se pueden adaptar a diferentes casos de uso y escenarios modificando parámetros como la dirección IP de origen o el puerto de destino. Para obtener información más detallada sobre cada parámetro de comando y los modificadores disponibles, puede usar la manutilidad para consultar el manual de UFW:

man ufw

La página oficial de UFW sobre la documentación de Ubuntu es otro recurso que puedes usar como referencia para casos de uso y ejemplos más avanzados.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post