Compartir a través de


Uso de UFW para solucionar problemas de conectividad en máquinas virtuales Ubuntu de Azure

Se aplica a: ✔️ Máquinas virtuales Linux

En este artículo se describe cómo usar firewall no replicado (UFW) para diagnosticar y resolver problemas de conectividad en una máquina virtual (VM) ubuntu de Azure.

UFW es una interfaz fácil de usar para administrar un firewall de Netfilter en distribuciones de Linux, especialmente en Ubuntu. Su objetivo principal es facilitar la administración de un firewall para los usuarios que puedan encontrar que la iptables configuración directa es compleja y compleja. UFW es la herramienta de configuración de firewall predeterminada para Ubuntu.

Requisitos previos

  • Privilegios raíz.
  • Acceso a la consola serie.
  • Paquetes instalados net-tools, iproute2y netcat-openbsd .

Cómo comprobar si un puerto está cerrado en la máquina virtual Ubuntu con UFW

Nota:

De forma predeterminada, UFW no está habilitado en máquinas virtuales Ubuntu creadas mediante imágenes de Azure Marketplace. Al habilitar UFW en la máquina virtual, se cerrarán todos los puertos, incluido el puerto 22 para los servicios SSH.

  1. Compruebe el estado de UFW:

    sudo ufw status
    

    En la salida:

    • Status: active indica que UFW se está ejecutando.

    • Status: inactive indica que UFW no está activo y el puerto no lo bloqueará UFW.

  2. Enumerar las reglas actuales de UFW:

    sudo ufw status numbered
    

    Este comando enumera todas las reglas. Muestra si se permiten o deniegan puertos específicos. Si un puerto no aparece en la lista, se deniega de forma predeterminada.

  3. Compruebe las reglas de UFW para determinar si se deniega un puerto determinado. Por ejemplo, para comprobar si se deniega el puerto SSH 22, ejecute el siguiente comando:

    sudo ufw status | grep '22'
    
    • Si la salida muestra 22/tcp ALLOW, el puerto se permite a través del firewall.
    • Si no aparece ninguna salida o la regla muestra 22/tcp DENY, se deniega el puerto.
  4. Use el netstat comando o ss para comprobar si un puerto está en uso.

    sudo netstat -tuln | grep ':22'
    
    tcp6   0   0 :::22     :::*   LISTEN   
    
    • La salida de ejemplo muestra que un servicio usa o escucha en el puerto 22. Sin embargo, esto no confirma que el firewall permite o desbloquea el puerto. Incluso si el firewall bloquea un puerto, es posible que siga apareciendo como LISTEN en la salida.
    • Ninguna salida indica que ningún servicio escucha el puerto.
  5. Pruebe la conectividad de puerto mediante nc:

    sudo nc -zv <server-ip> 22
    
    • Si se produce un error en la conexión, pero el puerto se está escuchando, esto confirma que el firewall deniega el puerto.
    • Una conexión correcta significa que se permite el puerto.

Si el puerto que está comprobando no aparece en las reglas de UFW o si está marcado como DENY, UFW está bloqueando el puerto. Además, si no puede conectarse al puerto mediante herramientas externas, el puerto se bloquea.

Trabajar con UFW

Escenario 1: Permitir la conectividad SSH para todas las direcciones IP

Ejecute el siguiente comando:

sudo ufw allow ssh
Rule added

Compruebe la regla:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  

Escenario 2: Permitir SSH (puerto 22) para una dirección IP específica

Ejecute el siguiente comando:

sudo ufw allow from 10.0.10.10 to any port 22 proto tcp

Compruebe la regla:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       10.0.10.10             

Escenario 3: Permitir que una subred se conecte al puerto 22

Ejecute el siguiente comando:

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

Compruebe la regla:

sudo ufw status
Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       10.0.10.10             
22/tcp                     ALLOW       10.1.0.0/24 

Escenario 4: Denegar SSH para todas las direcciones IP

Ejecute los comandos siguientes:

sudo ufw deny ssh
sudo ufw status
Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       10.0.10.10             
22/tcp                     ALLOW       10.1.0.0/24          
22/tcp                     DENY        Anywhere                     

Importante

El orden de las reglas es importante porque UFW procesa las reglas en el orden en que se enumeran. Esto significa que después de que una regla coincida, UFW aplicará esa regla y dejará de procesar reglas adicionales para esa conexión.

Eliminar una regla

Si las reglas no están en el orden correcto, puede eliminar una regla y, a continuación, restaurarla para cambiar el orden.

Para eliminar una regla, puede usar su número de la ufw status numbered salida. Por ejemplo, para eliminar el número de regla 3:

sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW       10.0.10.10             
[ 2] 22                         ALLOW       10.1.0.0/24 
[ 3] 22/tcp                     DENY IN     Anywhere  
sudo ufw delete 3

Para obtener más información, consulte: Ubuntu - UFW community

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.

Aviso de declinación de responsabilidades sobre la información de terceros

Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.