Azure VM 게스트 OS에서 방화벽 규칙 사용 또는 사용 안 함
적용 대상: ✔️ Windows VM
이 문서에서는 게스트 운영 체제 방화벽이 VM(가상 머신)에서 부분 트래픽을 필터링하는 것으로 의심되는 상황을 해결하기 위한 참조를 제공합니다. 이는 다음과 같은 이유로 유용할 수 있습니다.
RDP 연결이 실패하는 방화벽을 의도적으로 변경한 경우 사용자 지정 스크립트 확장 기능을 사용하여 문제를 해결할 수 있습니다.
모든 방화벽 프로필을 사용하지 않도록 설정하는 것은 RDP 관련 방화벽 규칙을 설정하는 것보다 더 완벽한 문제 해결 방법입니다.
솔루션
방화벽 규칙을 구성하는 방법은 필요한 VM에 대한 액세스 수준에 따라 달라집니다. 다음 예제에서는 RDP 규칙을 사용합니다. 그러나 올바른 레지스트리 키를 가리켜서 다른 모든 종류의 트래픽에도 동일한 방법을 적용할 수 있습니다.
온라인 문제 해결
완화 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
사용자 지정 스크립트 확장 기능을 사용하여 Azure Portal에서 이 스크립트를 업로드 합니다.
완화 2: 원격 PowerShell
VM이 온라인이고 동일한 가상 네트워크의 다른 VM에서 액세스할 수 있는 경우 다른 VM을 사용하여 다음과 같은 완화를 수행할 수 있습니다.
문제 해결을 위한 VM에서 PowerShell 콘솔 창을 엽니다.
적절하게 다음 명령을 실행합니다.
규칙을 사용하도록 설정하려면 다음을 수행합니다.
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을 사용하여 다음과 같은 완화를 수행할 수 있습니다.
문제 해결을 위한 VM에서 PSTools를 다운로드합니다.
CMD 인스턴스를 열고 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에서 원격 레지스트리를 사용할 수 있습니다.
문제 해결을 위한 VM에서 레지스트리 편집기(regedit.exe)를 시작한 다음, 파일>네트워크 레지스트리 연결을 차례로 선택합니다.
TARGET MACHINE\SYSTEM 분기를 열고 다음 값을 지정합니다.
규칙을 사용하도록 설정하려면 다음 레지스트리 값을 엽니다.
TARGET MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
그런 다음 문자열에서 Active=FALSE를 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|
규칙을 사용하지 않도록 설정하려면 다음 레지스트리 값을 엽니다.
TARGET MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
그런 다음, Active =TRUE를 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|
VM을 다시 시작하여 변경 내용을 적용합니다.
오프라인문제 해결
어떤 방법으로든 VM에 액세스할 수 없는 경우 사용자 지정 스크립트 확장을 사용하면 실패하고 시스템 디스크를 통해 직접 작업하여 오프라인 모드에서 작업해야 합니다.
다음 단계를 따르기 전에 영향을 받는 VM의 시스템 디스크 스냅샷을 백업으로 만듭니다. 자세한 내용은 디스크 스냅샷을 참조 하세요.
복구 VM에 대한 원격 데스크톱 연결을 시작합니다.
디스크 관리 콘솔에서 디스크의 플래그가 온라인으로 지정되었는지 확인합니다. 연결된 시스템 디스크에 할당된 드라이브 문자입니다.
변경 내용을 롤백해야 하는 경우 변경 내용을 변경하기 전에 \windows\system32\config 폴더의 복사본을 만듭니다.
문제 해결 VM에서 레지스트리 편집기(regedit.exe)를 시작합니다.
HKEY_LOCAL_MACHINE 키를 강조 표시한 다음 메뉴에서 파일>로드 하이브를 선택합니다.
\windows\system32\config\SYSTEM 파일을 찾아 엽니다.
참고 항목
이름을 묻는 메시지가 표시됩니다. BROKENSYSTEM을 입력한 다음 HKEY_LOCAL_MACHINE 확장합니다. 이제 BROKENSYSTEM이라는 추가 키가 표시됩니다. 이 문제 해결을 위해 이러한 문제 하이브를 BROKENSYSTEM으로 탑재하고 있습니다.
BROKENSYSTEM 분기에서 다음과 같이 변경합니다.
VM이 시작되는 ControlSet 레지스트리 키를 확인합니다. HKLM\BROKENSYSTEM\Select\Current에 해당 키 번호가 표시됩니다.
규칙을 사용하도록 설정하려면 다음 레지스트리 값을 엽니다.
HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
그런 다음 Active=FALSE를 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|
규칙을 사용하지 않도록 설정하려면 다음 레지스트리 키를 엽니다.
HKLM\BROKENSYSTEM\ControlSet00X\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\RemoteDesktop-UserMode-In-TCP
그런 다음 Active=True를 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|
BROKENSYSTEM을 강조 표시한 다음 메뉴에서 Hive 파일>언로드를 선택합니다.
시스템 디스크를 분리하고 VM을 다시 만듭니다.
문제가 해결되었는지 확인합니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.