Desabilitar o firewall do sistema operacional convidado na VM do Azure

Este artigo fornece uma referência para situações em que você suspeita que o firewall do sistema operacional convidado esteja filtrando o tráfego parcial ou completo para uma máquina virtual (VM). Isso pode ocorrer se forem feitas alterações deliberadas no firewall que causaram falha nas conexões RDP.

Solução

O processo descrito neste artigo destina-se a ser usado como uma solução alternativa para que você possa se concentrar em corrigir seu problema real, que é como configurar as regras de firewall corretamente. É uma prática recomendada da Microsoft ter o componente Firewall do Windows ativado. A forma como você configura as regras de firewall depende do nível de acesso necessário à VM.

Soluções Online

Se a VM estiver online e puder ser acessada em outra VM na mesma rede virtual, você poderá fazer essas atenuações usando a outra VM.

Mitigação 1: extensão de script personalizado ou recurso de execução de comando

Se você tiver um agente do Azure em funcionamento, poderá usar a Extensão de Script Personalizado ou o recurso Executar Comandos (somente VMs do Gerenciador de Recursos) para executar remotamente os seguintes scripts.

Observação

  • Se o firewall for definido localmente, execute o seguinte script:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile' -name "EnableFirewall" -Value 0
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile' -name "EnableFirewall" -Value 0
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\Standardprofile' -name "EnableFirewall" -Value 0 
    Restart-Service -Name mpssvc
    
  • Se o firewall for definido por meio de uma política do Active Directory, você poderá executar o seguinte script para acesso temporário.

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile' -name "EnableFirewall" -Value 0
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\WindowsFirewall\PublicProfile' -name "EnableFirewall" -Value 0
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\WindowsFirewall\StandardProfile' -name "EnableFirewall" -Value 0
    Restart-Service -Name mpssvc
    

    No entanto, assim que a política for aplicada novamente, você será expulso da sessão remota. A correção permanente para esse problema é modificar a política aplicada a este computador.

Mitigação 2: PowerShell remoto

  1. Conecte-se a uma VM localizada na mesma rede virtual que a VM que você não pode acessar usando a conexão RDP.

  2. Abra uma janela do console do PowerShell.

  3. Execute os seguintes comandos:

    Enter-PSSession (New-PSSession -ComputerName "<HOSTNAME>" -Credential (Get-Credential) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)) 
    netsh advfirewall set allprofiles state off
    Restart-Service -Name mpssvc 
    exit
    

Observação

Se o firewall for definido por meio de um objeto de política de grupo, esse método pode não funcionar porque esse comando altera apenas as entradas do registro local. Se uma política estiver em vigor, ela substituirá essa alteração.

Mitigação 3: comandos do PSTools

  1. Na VM de solução de problemas, baixe PSTools.

  2. Abra uma instância CMD e acesse a VM por meio de seu DIP.

  3. Execute os seguintes comandos:

    psexec \\<DIP> ​-u <username> cmd
    netsh advfirewall set allprofiles state off
    psservice restart mpssvc
    

Mitigação 4: registro remoto

Siga estas etapas para usar o Registro Remoto.

  1. Na VM de solução de problemas, inicie o editor de registro e vá para Arquivo>Conectar registro de rede.

  2. Abra a ramificação TARGET MACHINE\SYSTEM e especifique os seguintes valores:

    <TARGET MACHINE>\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\EnableFirewall           -->        0 
    <TARGET MACHINE>\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\EnableFirewall           -->        0 
    <TARGET MACHINE>\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall         -->        0
    
  3. Reinicie o serviço. Como não é possível fazer isso usando o registro remoto, você deve usar o Console de serviço remoto.

  4. Abra uma instância de Services.msc.

  5. Clique em Serviços (Local).

  6. Selecione Conectar a outro computador.

  7. Insira o Endereço IP privado (DIP) da VM com problema.

  8. Reinicie a política de firewall local.

  9. Tente se conectar à VM por meio do RDP novamente no computador local.

Soluções off-line

Se você tiver uma situação em que não consegue acessar a VM por nenhum método, a extensão de script personalizado falhará e você terá que trabalhar no modo OFFLINE trabalhando diretamente no disco do sistema. Para fazer isso, siga estas etapas:

  1. Anexe o disco do sistema a uma VM de recuperação.

  2. Inicie uma conexão de área de trabalho remota com a VM de recuperação.

  3. Certifique-se de que o disco esteja sinalizado como Online no console de gerenciamento de disco. Observe a letra da unidade atribuída ao disco do sistema anexado.

  4. Antes de fazer qualquer alteração, crie uma cópia da pasta \windows\system32\config caso seja necessário reverter as alterações.

  5. Na VM de solução de problemas, inicie o editor de registro (regedit.exe).

  6. Para este procedimento de solução de problemas, estamos montando as seções como BROKENSYSTEM e BROKENSOFTWARE.

  7. Destaque a tecla HKEY_LOCAL_MACHINE e selecione Arquivo > Carregar Hive no menu.

  8. Localize o arquivo \windows\system32\config\SYSTEM no disco do sistema anexado.

  9. Abra uma instância do PowerShell e execute o seguinte comando:

    # Load the hives - If your attached disk is not F, replace the letter assignment here
    reg load HKLM\BROKENSYSTEM f:\windows\system32\config\SYSTEM
    reg load HKLM\BROKENSOFTWARE f:\windows\system32\config\SOFTWARE 
    # Disable the firewall on the local policy
    $ControlSet = (get-ItemProperty -Path 'HKLM:\BROKENSYSTEM\Select' -name "Current").Current
    $key = 'HKLM:\BROKENSYSTEM\ControlSet00'+$ControlSet+'\services\SharedAccess\Parameters\FirewallPolicy\DomainProfile'
    Set-ItemProperty -Path $key -name 'EnableFirewall' -Value 0 -Type Dword -force
    $key = 'HKLM:\BROKENSYSTEM\ControlSet00'+$ControlSet+'\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile'
    Set-ItemProperty -Path $key -name 'EnableFirewall' -Value 0 -Type Dword -force
    $key = 'HKLM:\BROKENSYSTEM\ControlSet00'+$ControlSet+'\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile'
    Set-ItemProperty -Path $key -name 'EnableFirewall' -Value 0 -Type Dword -force
    # To ensure the firewall is not set through AD policy, check if the following registry entries exist and if they do, then check if the following entries exist:
    $key = 'HKLM:\BROKENSOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile'
    Set-ItemProperty -Path $key -name 'EnableFirewall' -Value 0 -Type Dword -force
    $key = 'HKLM:\BROKENSOFTWARE\Policies\Microsoft\WindowsFirewall\PublicProfile'
    Set-ItemProperty -Path $key -name 'EnableFirewall' -Value 0 -Type Dword -force
    $key = 'HKLM:\BROKENSOFTWARE\Policies\Microsoft\WindowsFirewall\StandardProfile'
    Set-ItemProperty -Path $key -name 'EnableFirewall' -Value 0 -Type Dword -force
    # Unload the hives
    reg unload HKLM\BROKENSYSTEM
    reg unload HKLM\BROKENSOFTWARE
    
  10. Desconecte o disco do sistema e recrie a VM.

  11. Verifique se o problema foi resolvido.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.