Compartir a través de


Habilitación o deshabilitación de una regla de firewall en el SO invitado de una máquina virtual de Azure

Se aplica a: ✔️ Máquinas virtuales de Windows

En este artículo se proporciona una referencia para solucionar una situación en que se sospecha que el firewall del sistema operativo invitado está filtrando tráfico parcial en una máquina virtual (VM). Esto puede resultar útil por los siguientes motivos:

  • Si se realizó un cambio deliberado en el firewall que provocó el error de las conexiones de RDP, el uso de la función de la característica Extensión Custom Script puede solucionar el problema.

  • La deshabilitación de todos los perfiles de firewall es más probable que solucione el error que la configuración de una regla de firewall específica para RDP.

Solución

El modo de configurar las reglas de firewall depende del nivel de acceso a la máquina virtual requerido. En los ejemplos siguientes se usan reglas de RDP. Sin embargo, pueden aplicarse los mismos métodos a cualquier otro tipo de tráfico que apunte a la clave del Registro correcta.

Solución de problemas en línea

Mitigación 1: Custom Script Extension

  1. Cree un script mediante la siguiente plantilla.

    • Para habilitar una regla:

      netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=yes
      
    • Para deshabilitar una regla:

      netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=no
      
  2. Cargue este script en Azure Portal mediante la característica Custom Script Extension.

Mitigación 2: PowerShell remoto

Si la máquina virtual está en línea y se puede acceder desde otra máquina virtual en la misma red virtual, puede realizar estas mitigaciones mediante el uso de la otra máquina virtual.

  1. En la máquina virtual donde está solucionando el problema, abra una ventana de consola de PowerShell.

  2. Ejecute los comandos siguientes, según corresponda.

    • Para habilitar una regla:

      Enter-PSSession (New-PSSession -ComputerName "<HOSTNAME>" -Credential (Get-Credential) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)) 
      Enable-NetFirewallRule -DisplayName  "RemoteDesktop-UserMode-In-TCP"
      exit
      
    • Para deshabilitar una regla:

      Enter-PSSession (New-PSSession -ComputerName "<HOSTNAME>" -Credential (Get-Credential) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)) 
      Disable-NetFirewallRule -DisplayName  "RemoteDesktop-UserMode-In-TCP"
      exit
      

Mitigación 3: Comandos de PSTools

Si la máquina virtual está en línea y se puede acceder desde otra máquina virtual en la misma red virtual, puede realizar estas mitigaciones mediante el uso de la otra máquina virtual.

  1. En la máquina virtual donde está solucionando el problema, descargue PSTools.

  2. Abra una instancia de CMD y acceda a la máquina virtual a través de su dirección IP interna.

    • Para habilitar una regla:

      psexec \\<DIP> ​-u <username> cmd
      netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=yes
      
    • Para deshabilitar una regla:

      psexec \\<DIP> ​-u <username> cmd
      netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=no
      

Mitigación 4: Registro remoto

Si la máquina virtual está en línea y se puede acceder desde otra máquina virtual de la misma red virtual, puede usar el Registro remoto en la otra máquina virtual.

  1. En la máquina virtual donde está solucionando el problema, inicie el editor del Registro (regedit.exe) y, a continuación, vaya a Archivo>Conectar al Registro de red.

  2. Abra la rama MÁQUINA DE DESTINO\SYSTEM y especifique los valores siguientes:

    • Para habilitar una regla, abra el valor del Registro siguiente:

      TARGET MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP

      A continuación, cambie Active=FALSE a Active=TRUE en la cadena:

      v2.22|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|

    • Para deshabilitar una regla, abra el valor del Registro siguiente:

      TARGET MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP

      A continuación, cambie Active =TRUE a Active=FALSE:

      v2.22|Action=Allow|Active=FALSE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|

  3. Reinicie la máquina virtual para aplicar estos cambios.

Solución de problemas sin conexión

Si no se puede acceder a la máquina virtual mediante ningún método, se producirá un error en el uso de Custom Script Extension y tendrá que trabajar en modo sin conexión directamente con el disco del sistema.

Antes de seguir estos pasos, tome una instantánea del disco del sistema de la máquina virtual afectada como copia de seguridad. Para obtener más información, consulte Instantánea de un disco.

  1. Conecte el disco del sistema a una máquina virtual de recuperación.

  2. Inicie una conexión mediante el Escritorio remoto a la máquina virtual de recuperación.

  3. Asegúrese de que el disco aparece marcado como En línea en la consola de Administración de discos. Anote la letra de unidad asignada al disco del sistema conectado.

  4. Antes de hacer cambios, cree una copia de la carpeta \Windows\system32\config, por si necesita una reversión de los cambios.

  5. En la máquina virtual donde está solucionando el problema, inicie el editor del Registro (regedit.exe).

  6. Seleccione la clave HKEY_LOCAL_MACHINE y Archivo>Load Hive (Cargar subárbol) en el menú.

    Captura de pantalla de la clave HKEY_LOCAL_MACHINE y la opción Cargar Hive en el menú Archivo del Editor del Registro.

  7. Busque y abra el archivo \windows\system32\config\SYSTEM.

    Nota

    Se le pedirá un nombre. Escriba BROKENSYSTEMy expanda HKEY_LOCAL_MACHINE. Ahora verá una clave adicional que se denomina BROKENSYSTEM. Para esta solución de problemas, estamos montando estos subárboles de problema como BROKENSYSTEM.

  8. Realice los cambios siguientes en la rama BROKENSYSTEM:

    1. Compruebe que la clave del Registro ControlSet es la VM desde donde se empieza. Verá su número de clave en HKLM\BROKENSYSTEM\Select\Current.

    2. Para habilitar una regla, abra el valor del Registro siguiente:

      HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP

      A continuación, cambie Active=FALSE a Active=True.

      v2.22|Action=Allow|Active=TRUE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|

    3. Para deshabilitar una regla, abra la clave del Registro siguiente:

      HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP

      A continuación, cambie Active=True a Active=FALSE.

      v2.22|Action=Allow|Active=FALSE|Dir=In|Protocol=6|Profile=Domain|Profile=Private|Profile=Public|LPort=3389|App=%SystemRoot%\system32\svchost.exe|Svc=termservice|Name=\@FirewallAPI.dll,-28775|Desc=\@FirewallAPI.dll,-28756|EmbedCtxt=\@FirewallAPI.dll,-28752|

  9. Resalte BROKENSYSTEM y, a continuación, seleccione Descargar archivo>de Hive en el menú.

  10. Desconecte el disco del sistema y vuelva a crear la máquina virtual.

  11. Compruebe si se ha resuelto el problema.

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.