보호된 호스트 문제 해결
이 문서에서는 보호된 패브릭에서 보호된 Hyper-V 호스트를 배포하거나 운영할 때 발생하는 일반적인 문제에 대한 해결 방법을 설명합니다.
적용 대상: 지원되는 모든 버전의 Windows Server
문제의 특성을 잘 모르는 경우 먼저 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 테이블을 참조하세요. |
NotConfigured | 호스트는 증명 및 키 보호를 위해 HGS를 사용하도록 구성되지 않았습니다. 대신 로컬 모드로 구성됩니다. 이 호스트가 보호된 패브릭에 있는 경우 Set-HgsClientConfiguration을 사용하여 HGS 서버에 대한 URL을 제공합니다. |
통과 | 호스트가 증명을 통과했습니다. |
TransientError | 마지막 증명 시도는 네트워킹, 서비스 또는 기타 일시적인 오류로 인해 실패했습니다. 마지막 작업을 다시 시도합니다. |
TpmError | TPM 오류로 인해 호스트가 마지막 증명 시도를 완료할 수 없습니다. 자세한 내용은 TPM 로그를 참조하세요. |
UnauthorizedHost | 호스트는 보호된 VM을 실행할 권한이 없기 때문에 증명을 통과하지 못했습니다. 호스트가 보호된 VM을 실행하기 위해 HGS에서 신뢰할 수 있는 보안 그룹에 속하는지 확인합니다. |
Unknown | 호스트는 아직 HGS로 확인하려고 시도하지 않았습니다. |
AttestationStatus가 InsecureHostConfiguration으로 보고되면 하나 이상의 이유가 AttestationSubStatus 필드에 채워집니다. 아래 표에서는 AttestationSubStatus에 대한 가능한 값과 문제를 해결하는 방법에 대한 팁을 설명합니다.
AttestationSubStatus | 무엇을 의미하며 어떻게 해야 |
---|---|
BitLocker | 호스트의 OS 볼륨은 BitLocker에 의해 암호화되지 않습니다. 이 문제를 해결하려면 OS 볼륨에서 BitLocker를 사용하도록 설정하거나 HGS에서 BitLocker 정책을 사용하지 않도록 설정합니다. |
CodeIntegrityPolicy | 호스트가 코드 무결성 정책을 사용하도록 구성되지 않았거나 HGS 서버에서 신뢰할 수 있는 정책을 사용하지 않습니다. 코드 무결성 정책이 구성되었는지, 호스트가 다시 시작되었는지, 정책이 HGS 서버에 등록되었는지 확인합니다. 자세한 내용은 코드 무결성 정책 생성 및 적용을 참조하세요. |
DumpsEnabled | 호스트는 HGS 정책에서 허용되지 않는 크래시 덤프 또는 라이브 메모리 덤프를 허용하도록 구성됩니다. 이 문제를 해결하려면 호스트에서 덤프를 사용하지 않도록 설정합니다. |
DumpEncryption | 호스트는 크래시 덤프 또는 라이브 메모리 덤프를 허용하도록 구성되지만 해당 덤프를 암호화하지는 않습니다. 호스트에서 덤프를 사용하지 않도록 설정하거나 덤프 암호화를 구성합니다. |
DumpEncryptionKey | 호스트는 덤프를 허용하고 암호화하도록 구성되지만 HGS에 알려진 인증서를 사용하여 암호화하지 않습니다. 이 문제를 해결하려면 호스트에서 덤프 암호화 키를 업데이트하거나 HGS에 키를 등록합니다. |
FullBoot | 호스트가 절전 상태 또는 최대 절전 모드에서 다시 시작되었습니다. 호스트를 다시 시작하여 깨끗한 전체 부팅을 허용합니다. |
HibernationEnabled | 호스트는 HGS 정책에서 허용되지 않는 최대 절전 모드 파일을 암호화하지 않고 최대 절전 모드를 허용하도록 구성됩니다. 최대 절전 모드를 사용하지 않도록 설정하고 호스트를 다시 시작하거나 덤프 암호화를 구성합니다. |
HypervisorEnforcedCodeIntegrityPolicy | 호스트는 하이퍼바이저 적용 코드 무결성 정책을 사용하도록 구성되지 않았습니다. 코드 무결성이 하이퍼바이저에서 사용하도록 설정, 구성 및 적용되는지 확인합니다. 자세한 내용은 Device Guard 배포 가이드를 참조 하세요. |
Iommu | 호스트의 가상화 기반 보안 기능은 HGS 정책에 필요한 대로 직접 메모리 액세스 공격 방지를 위해 IOMMU 디바이스를 요구하도록 구성되지 않습니다. 호스트에 IOMMU가 있는지, 사용하도록 설정되었는지, VBS를 시작할 때 DMA 보호가 필요하도록 Device Guard 가 구성되어 있는지 확인합니다 . |
PagefileEncryption | 호스트에서 페이지 파일 암호화를 사용할 수 없습니다. 이 문제를 해결하려면 페이지 파일 암호화를 사용하도록 fsutil behavior set encryptpagingfile 1 을 실행합니다. 자세한 내용은 fsutil 동작을 참조하세요. |
SecureBoot | 보안 부팅은 이 호스트에서 사용하도록 설정되지 않았거나 Microsoft 보안 부팅 템플릿을 사용하지 않습니다. Microsoft 보안 부팅 템플릿을 사용하여 보안 부팅을 사용하도록 설정하여 이 문제를 해결합니다. |
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
Warning
시스템 기본 TLS 버전 설정은 컴퓨터의 모든 .NET 앱에 영향을 줍니다. 프로덕션 머신에 배포하기 전에 격리된 환경에서 레지스트리 키를 테스트해야 합니다.
.NET 4.6 및 TLS 1.0에 대한 자세한 내용은 TLS 1.0 문제 해결, 2차 버전을 참조하세요.