다음을 통해 공유


Azure VM 게스트 OS에서 방화벽 규칙 사용 또는 사용 안 함

이 문서에서는 게스트 운영 체제 방화벽이 VM(가상 머신)에서 부분 트래픽을 필터링하는 것으로 의심되는 상황을 해결하기 위한 참조를 제공합니다. 이는 다음과 같은 이유로 유용할 수 있습니다.

  • RDP 연결이 실패하는 방화벽을 의도적으로 변경한 경우 사용자 지정 스크립트 확장 기능을 사용하여 문제를 resolve 수 있습니다.

  • 모든 방화벽 프로필을 사용하지 않도록 설정하는 것은 RDP별 방화벽 규칙을 설정하는 것보다 더 완벽한 문제 해결 방법입니다.

해결 방법

방화벽 규칙을 구성하는 방법은 필요한 VM에 대한 액세스 수준에 따라 달라집니다. 다음 예제에서는 RDP 규칙을 사용합니다. 그러나 올바른 레지스트리 키를 가리켜 다른 종류의 트래픽에 동일한 메서드를 적용할 수 있습니다.

온라인 문제 해결

완화 1: 사용자 지정 스크립트 확장

  1. 다음 템플릿을 사용하여 스크립트를 만듭니다.

    • 규칙을 사용하도록 설정하려면 다음을 수행합니다.

      netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=yes
      
    • 규칙을 사용하지 않도록 설정하려면 다음을 수행합니다.

      netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=no
      
  2. 사용자 지정 스크립트 확장 기능을 사용하여 Azure Portal 이 스크립트를 업로드합니다.

완화 2: 원격 PowerShell

VM이 온라인이고 동일한 가상 네트워크의 다른 VM에서 액세스할 수 있는 경우 다른 VM을 사용하여 다음과 같은 완화를 수행할 수 있습니다.

  1. 문제 해결 VM에서 PowerShell 콘솔 창을 엽니다.

  2. 적절하게 다음 명령을 실행합니다.

    • 규칙을 사용하도록 설정하려면 다음을 수행합니다.

      Enter-PSSession (New-PSSession -ComputerName "<HOSTNAME>" -Credential (Get-Credential) -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck)) 
      Enable-NetFirewallRule -DisplayName  "RemoteDesktop-UserMode-In-TCP"
      exit
      
    • 규칙을 사용하지 않도록 설정하려면 다음을 수행합니다.

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

완화 3: PSTools 명령

VM이 온라인이고 동일한 가상 네트워크의 다른 VM에서 액세스할 수 있는 경우 다른 VM을 사용하여 다음과 같은 완화를 수행할 수 있습니다.

  1. 문제 해결 VM에서 PSTools를 다운로드합니다.

  2. CMD instance 열고 DIP(내부 IP)를 통해 VM에 액세스합니다.

    • 규칙을 사용하도록 설정하려면 다음을 수행합니다.

      psexec \\<DIP> ​-u <username> cmd
      netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (TCP-In)" new enable=yes
      
    • 규칙을 사용하지 않도록 설정하려면 다음을 수행합니다.

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

완화 4: 원격 레지스트리

VM이 온라인이고 동일한 가상 네트워크의 다른 VM에서 액세스할 수 있는 경우 다른 VM에서 원격 레지스트리를 사용할 수 있습니다.

  1. 문제 해결 VM에서 레지스트리 편집기(regedit.exe)을 시작한 다음 파일>연결 네트워크 레지스트리를 선택합니다.

  2. TARGET MACHINE\SYSTEM 분기를 열고 다음 값을 지정합니다.

    • 규칙을 사용하도록 설정하려면 다음 레지스트리 값을 엽니다.

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

      그런 다음 문자열에서 Active=FALSEActive=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|

    • 규칙을 사용하지 않도록 설정하려면 다음 레지스트리 값을 엽니다.

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

      그런 다음 Active =TRUEActive=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. VM을 다시 시작하여 변경 내용을 적용합니다.

오프라인 문제 해결

어떤 방법으로든 VM에 액세스할 수 없는 경우 사용자 지정 스크립트 확장을 사용하면 실패하고 시스템 디스크를 통해 직접 작업하여 오프라인 모드에서 작업해야 합니다.

이러한 단계를 따르기 전에 영향을 받는 VM의 시스템 디스크 스냅샷 백업으로 수행합니다. 자세한 내용은 디스크 스냅샷을 참조하세요.

  1. 시스템 디스크를 복구 VM에 연결합니다.

  2. 복구 VM에 대한 원격 데스크톱 연결을 시작합니다.

  3. 디스크 관리 콘솔에서 디스크에 온라인 플래그가 지정되어 있는지 확인합니다. 연결된 시스템 디스크에 할당된 드라이브 문자입니다.

  4. 변경하기 전에 변경 내용 롤백이 필요한 경우 \windows\system32\config 폴더의 복사본을 만듭니다.

  5. 문제 해결 VM에서 레지스트리 편집기(regedit.exe)을 시작합니다.

  6. HKEY_LOCAL_MACHINE 키를 강조 표시한 다음 메뉴에서 파일>로드 Hive를 선택합니다.

    레지스트리 편집기 파일 메뉴의 HKEY_LOCAL_MACHINE 키 및 Hive 로드 옵션의 스크린샷

  7. \windows\system32\config\SYSTEM 파일을 찾아 엽니다.

    참고

    이름을 묻는 메시지가 표시됩니다. BROKENSYSTEM을 입력한 다음 HKEY_LOCAL_MACHINE 확장합니다. 이제 BROKENSYSTEM이라는 추가 키가 표시됩니다. 이 문제 해결을 위해 이러한 문제 하이브를 BROKENSYSTEM으로 탑재하고 있습니다.

  8. BROKENSYSTEM 분기에서 다음을 변경합니다.

    1. VM이 시작되는 ControlSet 레지스트리 키를 확인합니다. 키 번호는 HKLM\BROKENSYSTEM\Select\Current에 표시됩니다.

    2. 규칙을 사용하도록 설정하려면 다음 레지스트리 값을 엽니다.

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

      그런 다음 Active=FALSEActive=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. 규칙을 사용하지 않도록 설정하려면 다음 레지스트리 키를 엽니다.

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

      그런 다음 Active=TrueActive=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. BROKENSYSTEM을 강조 표시한 다음 메뉴에서 Hive 파일>언로드를 선택합니다.

  10. 시스템 디스크를 분리하고 VM을 다시 만듭니다.

  11. 문제가 해결되었는지 확인합니다.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.