보호된 호스트 문제 해결
이 문서에서는 보호된 패브릭에서 보호된 Hyper-V 호스트를 배포하거나 운영할 때 발생하는 일반적인 문제에 대한 해결 방법을 설명합니다.
적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016
문제의 본질을 잘 모르는 경우 먼저 Hyper-V 호스트에서 보호된 패브릭 진단 실행하여 잠재적인 원인을 좁혀 보세요.
보호된 호스트 기능
Hyper-V 호스트에 문제가 있는 경우 먼저 호스트 보호자 Hyper-V 지원 기능이 설치되어 있는지 확인합니다. 이 기능이 없으면 Hyper-V 호스트에 증명을 전달하고 보호된 VM을 프로비전할 수 있는 몇 가지 중요한 구성 설정 및 소프트웨어가 없습니다.
기능이 설치된 경우 검사 하려면 서버 관리자 사용하거나 관리자 권한 PowerShell 창에서 다음 cmdlet을 실행합니다.
Get-WindowsFeature HostGuardian
기능이 설치되어 있지 않으면 다음 PowerShell cmdlet을 사용하여 설치합니다.
Install-WindowsFeature HostGuardian -Restart
증명 실패
호스트가 호스트 보호 서비스와 증명을 전달하지 않으면 보호된 VM을 실행할 수 없습니다. 해당 호스트의 Get-HgsClientConfiguration 출력에는 해당 호스트가 증명에 실패한 이유에 대한 정보가 표시됩니다.
아래 표에서는 AttestationStatus 필드에 나타날 수 있는 값과 적절한 경우 잠재적인 다음 단계를 설명합니다.
AttestationStatus | 설명 |
---|---|
만료됨 | 호스트가 이전에 증명을 통과했지만 발급된 상태 인증서가 만료되었습니다. 호스트 및 HGS 시간이 동기화되어 있는지 확인합니다. |
InsecureHostConfiguration | 호스트는 HGS에 구성된 증명 정책을 준수하지 않아 증명을 통과하지 못했습니다. 자세한 내용은 AttestationSubStatus 테이블을 참조하세요. |
구성되지 않음 | 호스트는 증명 및 키 보호에 HGS를 사용하도록 구성되지 않았습니다. 대신 로컬 모드로 구성됩니다. 이 호스트가 보호된 패브릭에 있는 경우 Set-HgsClientConfiguration 을 사용하여 HGS 서버에 대한 URL을 제공합니다. |
전달 | 호스트가 증명을 전달했습니다. |
TransientError | 네트워킹, 서비스 또는 기타 임시 오류로 인해 마지막 증명 시도가 실패했습니다. 마지막 작업을 다시 시도합니다. |
TpmError | TPM 오류로 인해 호스트가 마지막 증명 시도를 완료할 수 없습니다. 자세한 내용은 TPM 로그를 참조하세요. |
UnauthorizedHost | 호스트는 보호된 VM을 실행할 권한이 없기 때문에 증명을 통과하지 못했습니다. 호스트가 보호된 VM을 실행하기 위해 HGS에서 신뢰할 수 있는 보안 그룹에 속하는지 확인합니다. |
알 수 없음 | 호스트는 아직 HGS를 사용하여 테스트하려고 시도하지 않았습니다. |
AttestationStatus가 InsecureHostConfiguration으로 보고되면 하나 이상의 이유가 AttestationSubStatus 필드에 채워집니다. 아래 표에서는 AttestationSubStatus의 가능한 값과 문제를 resolve 방법에 대한 팁을 설명합니다.
AttestationSubStatus | 의미 및 수행할 사항 |
---|---|
BitLocker | 호스트의 OS 볼륨은 BitLocker에 의해 암호화되지 않습니다. 이를 resolve OS 볼륨에서 BitLocker를 사용하도록 설정하거나 HGS에서 BitLocker 정책을 사용하지 않도록 설정합니다. |
CodeIntegrityPolicy | 호스트가 코드 무결성 정책을 사용하도록 구성되지 않았거나 HGS 서버에서 신뢰할 수 있는 정책을 사용하지 않습니다. 코드 무결성 정책이 구성되었는지, 호스트가 다시 시작되었는지, 정책이 HGS 서버에 등록되었는지 확인합니다. 자세한 내용은 코드 무결성 정책 만들기 및 적용을 참조하세요. |
DumpsEnabled | 호스트는 HGS 정책에서 허용되지 않는 크래시 덤프 또는 라이브 메모리 덤프를 허용하도록 구성됩니다. 이 resolve 호스트에서 덤프를 사용하지 않도록 설정합니다. |
DumpEncryption | 호스트는 크래시 덤프 또는 라이브 메모리 덤프를 허용하도록 구성되지만 해당 덤프를 암호화하지는 않습니다. 호스트에서 덤프를 사용하지 않도록 설정하거나 덤프 암호화를 구성합니다. |
DumpEncryptionKey | 호스트는 덤프를 허용 및 암호화하도록 구성되었지만 HGS에 알려진 인증서를 사용하여 암호화하지는 않습니다. 이 resolve 호스트에서 덤프 암호화 키를 업데이트하거나 HGS에 키를 등록합니다. |
FullBoot | 호스트가 절전 상태 또는 최대 절전 모드에서 다시 시작되었습니다. 호스트를 다시 시작하여 클린 전체 부팅을 허용합니다. |
HibernationEnabled | 호스트는 HGS 정책에서 허용되지 않는 최대 절전 모드 파일을 암호화하지 않고 최대 절전 모드를 허용하도록 구성됩니다. 최대 절전 모드를 사용하지 않도록 설정하고 호스트를 다시 시작하거나 덤프 암호화를 구성합니다. |
HypervisorEnforcedCodeIntegrityPolicy | 호스트는 하이퍼바이저 적용 코드 무결성 정책을 사용하도록 구성되지 않았습니다. 코드 무결성이 하이퍼바이저에서 사용하도록 설정, 구성 및 적용되는지 확인합니다. 자세한 내용은 Device Guard 배포 가이드를 참조하세요. |
이오무 섬 | 호스트의 가상화 기반 보안 기능은 HGS 정책에 필요한 대로 직접 메모리 액세스 공격 방지를 위해 IOMMU 디바이스를 요구하도록 구성되지 않습니다. 호스트에 IOMMU가 있고, 사용하도록 설정되어 있는지, VBS를 시작할 때 Device Guard가 DMA 보호를 요구하도록 구성되어 있는지 확인합니다. |
PagefileEncryption | 호스트에서 페이지 파일 암호화를 사용할 수 없습니다. 이를 resolve 페이지 파일 암호화를 사용하도록 설정하려면 를 실행 fsutil behavior set encryptpagingfile 1 합니다. 자세한 내용은 fsutil 동작을 참조하세요. |
SecureBoot | 보안 부팅은 이 호스트에서 사용하도록 설정되지 않았거나 Microsoft 보안 부팅 템플릿을 사용하지 않습니다. Microsoft 보안 부팅 템플릿을 사용하여 보안 부팅을 사용하도록 설정하여 이 문제를 resolve. |
SecureBootSettings | 이 호스트의 TPM 기준은 HGS에서 신뢰할 수 있는 TPM 기준과 일치하지 않습니다. 이는 UEFI 시작 기관, DBX 변수, 디버그 플래그 또는 사용자 지정 보안 부팅 정책이 새 하드웨어 또는 소프트웨어를 설치하여 변경되는 경우에 발생할 수 있습니다. 이 컴퓨터의 현재 하드웨어, 펌웨어 및 소프트웨어 구성을 신뢰하는 경우 새 TPM 기준을 캡처 하고 HGS에 등록할 수 있습니다. |
TcgLogVerification | TCG 로그(TPM 기준)를 가져오거나 확인할 수 없습니다. 이는 호스트의 펌웨어, TPM 또는 기타 하드웨어 구성 요소에 문제가 있음을 나타낼 수 있습니다. 호스트가 Windows를 부팅하기 전에 PXE 부팅을 시도하도록 구성된 경우 오래된 NBP(Net Boot Program)로 인해 이 오류가 발생할 수도 있습니다. PXE 부팅이 사용하도록 설정된 경우 모든 NBP가 최신 상태인지 확인합니다. |
VirtualSecureMode | 가상화 기반 보안 기능이 호스트에서 실행되고 있지 않습니다. VBS를 사용하도록 설정하고 시스템이 구성된 플랫폼 보안 기능을 충족하는지 확인합니다. VBS 요구 사항에 대한 자세한 내용은 Device Guard 설명서를 참조하세요. |
최신 TLS
그룹 정책을 배포했거나 TLS 1.0을 사용하지 않도록 Hyper-V 호스트를 구성한 경우 보호된 VM을 시작하려고 할 때 "호스트 보호 서비스 클라이언트가 통화 프로세스를 대신하여 키 보호기를 래핑 해제하지 못했습니다." 오류가 발생할 수 있습니다. 이는 HGS 서버와 지원되는 TLS 버전을 협상할 때 시스템 기본 TLS 버전이 고려되지 않는 .NET 4.6의 기본 동작 때문입니다.
이 동작을 해결하려면 다음 두 명령을 실행하여 모든 .NET 앱에 시스템 기본 TLS 버전을 사용하도록 .NET을 구성합니다.
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
경고
시스템 기본 TLS 버전 설정은 컴퓨터의 모든 .NET 앱에 영향을 줍니다. 레지스트리 키를 프로덕션 머신에 배포하기 전에 격리된 환경에서 테스트해야 합니다.
.NET 4.6 및 TLS 1.0에 대한 자세한 내용은 TLS 1.0 문제 해결, 2차 버전을 참조하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기