Problemen met de Host Guardian-service oplossen
In dit artikel worden oplossingen beschreven voor veelvoorkomende problemen die optreden bij het implementeren of gebruiken van een HGS-server (Host Guardian Service) in een beveiligde infrastructuur.
Van toepassing op: Windows Server 2022, Windows Server 2019, Windows Server 2016
Als u niet zeker weet wat de aard van uw probleem is, voert u eerst de diagnostische gegevens van beveiligde infrastructuur uit op uw HGS-servers en Hyper-V-hosts om de mogelijke oorzaken te beperken.
Certificaten
HGS vereist verschillende certificaten om te kunnen werken, waaronder het door de beheerder geconfigureerde versleutelings- en handtekeningcertificaat, evenals een attestation-certificaat dat wordt beheerd door HGS zelf. Als deze certificaten onjuist zijn geconfigureerd, kan HGS geen aanvragen verwerken van Hyper-V-hosts die sleutelbeveiligingen willen attesteren of ontgrendelen voor afgeschermde VM's. De volgende secties hebben betrekking op veelvoorkomende problemen met betrekking tot certificaten die zijn geconfigureerd in HGS.
Certificaatmachtigingen
HGS moet toegang hebben tot zowel de openbare als de persoonlijke sleutels van de versleutelings- en ondertekeningscertificaten die zijn toegevoegd aan HGS door de vingerafdruk van het certificaat. Met name het door de groep beheerde serviceaccount (gMSA) waarmee de HGS-service wordt uitgevoerd, heeft toegang nodig tot de sleutels. Als u de gMSA wilt vinden die door HGS wordt gebruikt, voert u de volgende opdracht uit in een PowerShell-prompt met verhoogde bevoegdheid op uw HGS-server:
(Get-IISAppPool -Name KeyProtection).ProcessModel.UserName
Hoe u het gMSA-account toegang verleent om de persoonlijke sleutel te gebruiken, is afhankelijk van waar de sleutel wordt opgeslagen: op de computer als een lokaal certificaatbestand, op een hardwarebeveiligingsmodule (HSM) of met een aangepaste externe sleutelopslagprovider.
Toegang verlenen tot persoonlijke sleutels die door software worden ondersteund
Als u een zelfondertekend certificaat of een certificaat gebruikt dat is uitgegeven door een certificeringsinstantie die niet is opgeslagen in een hardwarebeveiligingsmodule of aangepaste sleutelopslagprovider, kunt u de machtigingen voor persoonlijke sleutels wijzigen door de volgende stappen uit te voeren:
- Open lokaal certificaatbeheer (certlm.msc).
- Vouw persoonlijke>certificaten uit en zoek het handtekening- of versleutelingscertificaat dat u wilt bijwerken.
- Klik met de rechtermuisknop op het certificaat en selecteer Alle taken>persoonlijke sleutels beheren.
- Selecteer Toevoegen om een nieuwe gebruiker toegang te verlenen tot de persoonlijke sleutel van het certificaat.
- Voer in de objectkiezer de gMSA-accountnaam in voor HGS die u eerder hebt gevonden en selecteer VERVOLGENS OK.
- Zorg ervoor dat de gMSA leestoegang tot het certificaat heeft.
- Selecteer OK om het machtigingsvenster te sluiten.
Als u HGS uitvoert op Server Core of de server extern beheert, kunt u geen persoonlijke sleutels beheren met behulp van de lokale certificaatbeheerder. In plaats daarvan moet u de PowerShell-module Guarded Fabric Tools downloaden, waarmee u de machtigingen in PowerShell kunt beheren.
- Open een PowerShell-console met verhoogde bevoegdheden op de Server Core-computer of gebruik externe communicatie met PowerShell met een account met lokale beheerdersmachtigingen voor HGS.
- Voer de volgende opdrachten uit om de PowerShell-module Guarded Fabric Tools te installeren en het gMSA-account toegang te verlenen tot de persoonlijke sleutel.
$certificateThumbprint = '<ENTER CERTIFICATE THUMBPRINT HERE>'
# Install the Guarded Fabric Tools module, if necessary
Install-Module -Name GuardedFabricTools -Repository PSGallery
# Import the module into the current session
Import-Module -Name GuardedFabricTools
# Get the certificate object
$cert = Get-Item "Cert:\LocalMachine\My\$certificateThumbprint"
# Get the gMSA account name
$gMSA = (Get-IISAppPool -Name KeyProtection).ProcessModel.UserName
# Grant the gMSA read access to the certificate
$cert.Acl = $cert.Acl | Add-AccessRule $gMSA Read Allow
Toegang verlenen tot HSM of door een aangepaste provider ondersteunde persoonlijke sleutels
Als de persoonlijke sleutels van uw certificaat worden ondersteund door een hardwarebeveiligingsmodule (HSM) of een aangepaste sleutelopslagprovider (KSP), is het machtigingsmodel afhankelijk van uw specifieke softwareleverancier. Raadpleeg de documentatie of ondersteuningssite van uw leverancier voor informatie over hoe machtigingen voor persoonlijke sleutels worden verwerkt voor uw specifieke apparaat/software voor de beste resultaten. In alle gevallen vereist de gMSA die door HGS wordt gebruikt leesmachtigingen voor de persoonlijke sleutels voor versleuteling, ondertekening en communicatiecertificaat, zodat deze ondertekenings- en versleutelingsbewerkingen kan uitvoeren.
Sommige hardwarebeveiligingsmodules bieden geen ondersteuning voor het verlenen van specifieke gebruikersaccounts toegang tot een persoonlijke sleutel; In plaats daarvan kunnen ze het computeraccount toegang geven tot alle sleutels in een specifieke sleutelset. Voor dergelijke apparaten is het meestal voldoende om de computer toegang te geven tot uw sleutels en HGS kan die verbinding gebruiken.
Tips voor HSM's
Hieronder vindt u voorgestelde configuratieopties om u te helpen met HSM-ondersteunde sleutels met HGS te gebruiken op basis van Microsoft en de ervaringen van partners. Deze tips worden verstrekt voor uw gemak en zijn niet gegarandeerd correct op het moment van lezen, noch worden ze goedgekeurd door de HSM-fabrikanten. Neem contact op met uw HSM-fabrikant voor nauwkeurige informatie over uw specifieke apparaat als u meer vragen hebt.
HSM Brand/Series | Suggestie |
---|---|
Gemalto SafeNet | Zorg ervoor dat de eigenschap Sleutelgebruik in het certificaataanvraagbestand is ingesteld op 0xa0, zodat het certificaat kan worden gebruikt voor ondertekening en versleuteling. Daarnaast moet u het gMSA-account leestoegang verlenen tot de persoonlijke sleutel met behulp van het lokale hulpprogramma voor certificaatbeheer (zie de bovenstaande stappen). |
nCipher nShield | Zorg ervoor dat elk HGS-knooppunt toegang heeft tot de beveiligingswereld met de ondertekenings- en versleutelingssleutels. Mogelijk moet u de gMSA-leestoegang verlenen tot de persoonlijke sleutel met behulp van de lokale certificaatbeheerder (zie de bovenstaande stappen). |
Utimaco CryptoServers | Zorg ervoor dat de eigenschap Sleutelgebruik in het certificaataanvraagbestand is ingesteld op 0x13, zodat het certificaat kan worden gebruikt voor versleuteling, ontsleuteling en ondertekening. |
Certificaataanvragen
Als u een certificeringsinstantie gebruikt om uw certificaten uit te geven in een PKI-omgeving (Public Key Infrastructure), moet u ervoor zorgen dat uw certificaataanvraag de minimale vereisten bevat voor het gebruik van deze sleutels van HGS.
Handtekeningcertificaten
CSR-eigenschap | Vereiste waarde |
---|---|
Algoritme | RSA |
Key size | Ten minste 2048 bits |
Sleutelgebruik | Handtekening/teken/DigitalSignature |
Versleutelingscertificaten
CSR-eigenschap | Vereiste waarde |
---|---|
Algoritme | RSA |
Key size | Ten minste 2048 bits |
Sleutelgebruik | Versleuteling/Versleutelen/DataEncipherment |
Active Directory Certificate Services-sjablonen
Als u ADCS-certificaatsjablonen (Active Directory Certificate Services) gebruikt om de certificaten te maken, raden we u aan een sjabloon te gebruiken met de volgende instellingen:
ADCS-sjablooneigenschap | Vereiste waarde |
---|---|
Providercategorie | Sleutelopslagprovider |
Algoritmenaam | RSA |
Minimale sleutelgrootte | 2048 |
Doel | Handtekening en versleuteling |
Extensie voor sleutelgebruik | Digitale handtekening, sleutelcodering, gegevenscodering ('Versleuteling van gebruikersgegevens toestaan') |
Tijdsdrift
Als de tijd van uw server aanzienlijk is afgelopen van die van andere HGS-knooppunten of Hyper-V-hosts in uw beveiligde infrastructuur, kunt u problemen ondervinden met de geldigheid van het attestation-ondertekenaarcertificaat. Het attestation-ondertekenaarcertificaat wordt gemaakt en vernieuwd achter de schermen op HGS en wordt gebruikt om statuscertificaten te ondertekenen die zijn uitgegeven aan beveiligde hosts door de Attestation-service.
Als u het attestation-ondertekenaarcertificaat wilt vernieuwen, voert u de volgende opdracht uit in een PowerShell-prompt met verhoogde bevoegdheid.
Start-ScheduledTask -TaskPath \Microsoft\Windows\HGSServer -TaskName
AttestationSignerCertRenewalTask
U kunt de geplande taak ook handmatig uitvoeren door Task Scheduler (taskschd.msc) te openen, te navigeren naar de Task Scheduler Library>Microsoft>Windows>HGSServer en de taak met de naam AttestationSignerCertRenewalTask uit te voeren.
Schakelen tussen attestation-modi
Als u HGS van TPM-modus overschakelt naar de Active Directory-modus of omgekeerd met behulp van de cmdlet Set-HgsServer , kan het tot 10 minuten duren voordat elk knooppunt in uw HGS-cluster de nieuwe attestation-modus afdwingt.
Dit gedrag is normaal.
Het wordt aangeraden geen beleid te verwijderen dat hosts uit de vorige attestation-modus toestaat totdat u hebt gecontroleerd of alle hosts met succes worden attesteren met behulp van de nieuwe attestation-modus.
Bekend probleem bij het overschakelen van TPM naar AD-modus
Als u uw HGS-cluster in de TPM-modus hebt geïnitialiseerd en later overschakelt naar de Active Directory-modus, is er een bekend probleem dat voorkomt dat andere knooppunten in uw HGS-cluster overschakelen naar de nieuwe attestation-modus.
Voer op elk knooppunt van uw HGS-cluster uit om ervoor te zorgen dat alle HGS-servers de juiste attestation-modus Set-HgsServer -TrustActiveDirectory
afdwingen.
Dit probleem is niet van toepassing als u overschakelt van TPM-modus naar AD-modus en het cluster oorspronkelijk is ingesteld in de AD-modus.
U kunt de attestation-modus van uw HGS-server controleren door Get-HgsServer uit te voeren.
Beleid voor geheugendumpversleuteling
Als u beleid voor geheugendumpversleuteling probeert te configureren en de standaard-HGS-dumpbeleidsregels (Hgs_NoDumps, Hgs_DumpEncryption en Hgs_DumpEncryptionKey) of de dumpbeleids-cmdlet () niet ziet staan,Add-HgsAttestationDumpPolicy
is de meest recente cumulatieve update waarschijnlijk niet geïnstalleerd.
U lost dit op door uw HGS-server bij te werken naar de meest recente cumulatieve Windows-update en het nieuwe attestation-beleid te activeren.
Zorg ervoor dat u uw Hyper-V-hosts bijwerkt naar dezelfde cumulatieve update voordat u het nieuwe attestation-beleid activeert, omdat hosts waarop de nieuwe dumpversleutelingsmogelijkheden niet zijn geïnstalleerd, waarschijnlijk mislukken attestation zodra het HGS-beleid is geactiveerd.
Foutberichten voor goedkeuringssleutelcertificaat
Wanneer u een host registreert met de cmdlet Add-HgsAttestationTpmHost , worden twee TPM-id's geëxtraheerd uit het opgegeven platform-id-bestand: het goedkeuringssleutelcertificaat (EKcert) en de openbare goedkeuringssleutel (EKpub). Het EKcert identificeert de fabrikant van de TPM en zorgt ervoor dat de TPM authentiek is en wordt vervaardigd via de normale toeleveringsketen. De EKpub identificeert op unieke wijze dat specifieke TPM en is een van de metingen die HGS gebruikt om een hosttoegang te verlenen om afgeschermde VM's uit te voeren.
Er wordt een foutbericht weergegeven wanneer u een TPM-host registreert als aan een van de twee voorwaarden wordt voldaan:
- Het platform-id-bestand bevat geen goedkeuringssleutelcertificaat.
- Het platform-id-bestand bevat een goedkeuringssleutelcertificaat, maar dat certificaat wordt niet vertrouwd op uw systeem.
Bepaalde TPM-fabrikanten bevatten geen EKcerts in hun TPM's.
Als u vermoedt dat dit het geval is met uw TPM, bevestigt u bij uw OEM dat uw TPM's geen EKcert mogen hebben en de vlag gebruiken -Force
om de host handmatig te registreren bij HGS.
Als uw TPM een EKcert moet hebben, maar er geen is gevonden in het platform-id-bestand, moet u ervoor zorgen dat u een PowerShell-console met beheerdersrechten (verhoogde bevoegdheden) gebruikt bij het uitvoeren van Get-PlatformIdentifier op de host.
Als u de foutmelding krijgt dat uw EKcert niet wordt vertrouwd, controleert u of u het pakket met vertrouwde TPM-basiscertificaten op elke HGS-server hebt geïnstalleerd en of het basiscertificaat voor uw TPM-leverancier aanwezig is in het archief 'TrustedTPM_RootCA' van de lokale computer. Alle toepasselijke tussenliggende certificaten moeten ook worden geïnstalleerd in het archief 'TrustedTPM_IntermediateCA' op de lokale computer.
Nadat u de basis- en tussencertificaten hebt geïnstalleerd, kunt u deze Add-HgsAttestationTpmHost
uitvoeren.
GMSA-bevoegdheden (Managed Service Account) groeperen
Het HGS-serviceaccount (gMSA dat wordt gebruikt voor de groep key protection-servicetoepassingen in IIS) moet worden verleend aan het genereren van beveiligingscontrolesbevoegdheden , ook wel bekend als SeAuditPrivilege
. Als deze bevoegdheid ontbreekt, slaagt de eerste HGS-configuratie en wordt IIS gestart, maar de Sleutelbeveiligingsservice is niet functioneel en retourneert HTTP-fout 500 ('Serverfout in /KeyProtection-toepassing'). U kunt ook de volgende waarschuwingsberichten bekijken in het gebeurtenislogboek van de toepassing.
System.ComponentModel.Win32Exception (0x80004005): A required privilege is not held by the client
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.NativeUtility.RegisterAuditSource(String pszSourceName, SafeAuditProviderHandle& phAuditProvider)
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)
or
Failed to register the security event source.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
Failed to register the security event source.
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.ReportAudit(EventLogEntryType eventType, UInt32 eventId, Object[] os)
at Microsoft.Windows.KpsServer.KpsServerHttpApplication.Application_Start()
A required privilege is not held by the client
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.NativeUtility.RegisterAuditSource(String pszSourceName, SafeAuditProviderHandle& phAuditProvider)
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)
Bovendien ziet u mogelijk dat geen van de Key Protection Service-cmdlets (bijvoorbeeld Get-HgsKeyProtectionCertificate) werkt en in plaats daarvan fouten retourneert.
Om dit probleem op te lossen, moet u gMSA de 'Beveiligingscontroles genereren' (SeAuditPrivilege
) verlenen. Hiervoor kunt u SecPol.msc voor lokaal beveiligingsbeleid gebruiken op elk knooppunt van het HGS-cluster of groepsbeleid. U kunt ook SecEdit.exe hulpprogramma gebruiken om het huidige beveiligingsbeleid te exporteren, de benodigde wijzigingen aan te brengen in het configuratiebestand (een tekst zonder opmaak) en het vervolgens weer te importeren.
Notitie
Wanneer u deze instelling configureert, overschrijft de lijst met beveiligingsprincipes die zijn gedefinieerd voor een bevoegdheid de standaardwaarden volledig (deze worden niet samengevoegd). Zorg er dus voor dat u bij het definiëren van deze beleidsinstelling naast de gMSA die u toevoegt zowel standaardhouders van deze bevoegdheid (netwerkservice als lokale service) opneemt.