Tags: Hyper-V, Sicherheit, Active Directory
Damit Shielded Virtual Machines auf einem Guarded Hyper-V-Host starten können, muss er durch den Host Guardian Service (HGS) als vertrauenswürdig attestiert werden. Dieser Dienst arbeitet unter Windows Server 2016 in einem eigens dafür eingerichteten AD-Forest und verwaltet auch die Keys zum Start der VMs.
Wie ich sie im vorangegangen Beitrag beschrieben habe, lässt sich die Guarded Fabric auf unterschiedliche Arten installieren und initialisieren. Eine Möglichkeit der Attestierung von Hyper-V Hosts beruht auf der deren Mitgliedschaft in einer globalen Sicherheitsgruppe. Dabei spricht man vom Admin-trusted Mode.
Anders als der TPM-trusted Mode lässt sich diese Active Directory-basierte Variante relativ schnell implementieren und kann den ersten Schritt beim Schutz virtueller Maschinen bedeuten, wenn ein TPM 2.0 auf den Hosts noch fehlt. Der Host Guardian Service stellt dabei eine Kernkomponente dar, welche kritisch ist und daher hochverfügbar ausgelegt werden sollte. Diese Anleitung zeigt die Initialisierung des HGS jedoch in einem Cluster mit nur einem Knoten, der sich aber bei Bedarf einfach erweitern lässt.
Fahrplan für die Installation
Meine verschachtelte virtuelle Umgebung besteht aus zwei hyper-converged Hosts mit Storage Spaces Direct (S2D), welche als Guarded Hosts später Shielded VMs ausführen sollen. Auf einem benachbarten Server wurden die Active Directory Domain Services (AD DS) installiert und beide On-Premises-S2D-Knoten sind Mitglied in dieser Domäne. Eine solche Umgebung repräsentiert somit unsere Fabric Domain.
Die HGS-Domain wird im Labor auf einem einzigen Knoten installiert. Dabei halte ich auf der virtuellen Maschine mit einem durchgepatchten Windows Server 2016 Standard folgenden Fahrplan ein:
- Ausbringen der HGS-Rolle samt AD DS, Failover-Clustering, IIS und erforderlichen Tools
- Installieren des HGS mit eigenem Forest
- Ausstellen von selbstsignierten Zertifikaten für die Testumgebung
- Initialisierung des HGS im AD-Modus
- Konfiguration von DNS-Forwarder und Vertrauensstellung
- Erstellen der Sicherheitsgruppe in der Fabric Domain und Bekanntmachung beim HGS
- Manuelle HTTP-Konfiguration zwischen Hosts und HGS
Grün: Fabric Domain, Blau: HGS Domain, Gelb: spätere guarded Hosts in der Fabric Domain
Ausbringen der HGS Rolle
Nach Best Practice sollte die Rolle des Host Guardian Service möglichst Bare Metal, hochverfügbar und auf Server Core installiert werden. Um im Lab flexibel zu bleiben, verwende ich aber die Desktop Experience in einer VM, wobei jedoch bei allen Konfigurationsschritten PowerShell zum Einsatz kommt. Der HGS benötigt parallel weitere Rollen, welche automatisch huckepack mit ausgebracht werden:
Install-WindowsFeature -Name HostGuardianServiceRole -IncludeManagementTools
Sobald die Rolle des HGS und die davon abhängigen Rollen wie AD DS, IIS oder das Feature Failover-Clustering installiert wurden, muss der Server neugestartet werden.
Host Guardian Service einrichten
Nach dem Neustart wird der Host Guardian Service isoliert konfiguriert, indem ich jeden Node zum Domänen-Controller heraufstufe. Ein HGS-Server sollte somit zuvor kein Mitglied in einem AD sein.
Das hier verwendete PowerShell-Cmdlet erstellt standardmäßig und empfehlenswert einen neuen HGS-Forest, jedoch können diese Server auch einem bereits bestehenden beitreten. In die Variable schreibe ich das nötige Verzeichnisdienstwiederherstellungspasswort:
Auch hier ist nach erfolgreicher Konfiguration ein Neustart erforderlich.
Ausstellen von selbstsignierten Zertifikaten
Zertifikate werden später bei der Initialisierung benötigt und sind für den Key Protection Service (KPS) des HGS erforderlich. Dieser entschlüsselt damit die Keys der Shielded VMs. Kommt eine eigene CA zum Einsatz, dann lassen sich diese zur Signierung und Verschlüsselung genutzten Zertifikate hier ausstellen. In meinem Lab erzeuge ich die Zertifikate und PFX Dateien nach diesem Muster:
Initialisierung des HGS
Die eigentliche Initialisierung findet anschließend statt. Wie schon der Titel des Artikels ankündigt, verwenden wir den Admin-trusted Modus (-TrustActiveDirectory) und gebrauchen die eben ausgestellten Zertifikate im Cmdlet mit der zuvor schon festgelegten Variable für das Passwort:
Der Schalter für den HgsServiceName legt den HGS-Dienst-Namen fest und verankert das zugehörige Computerobjekt im entsprechenden Forest.
Konfiguration von DNS-Forwarder und Vertrauensstellung
Beim gebundenen AD-Modus ist eine bedingte DNS-Weiterleitung von der HGS-Domäne zur Fabric-Domäne erforderlich, sowie eine One-Way-Vertrauensstellung zur Fabric-Domäne. Erst danach ist der HGS in der Lage, die Gruppenmitgliedschaft der Hyper-V-Hosts zu attestieren. Für die Namensauflösung des HGS in der Fabric wird ein Forwarder so konfiguriert:
Add-DnsServerConditionalForwarderZone -Name "fabric.com" -ReplicationScope Forest -MasterServers <DNSserverIP>
Der ausgehende externe Trust von der HGS-Domäne zur Fabric-Domäne wird wie folgt festgelegt:
Erstellen einer Sicherheitsgruppe in der Fabric Domäne
Unsere benötigte globale Sicherheitsgruppe sollte vor Bekanntmachung beim HGS in der Fabric angelegt worden sein. Sie umfasst alle Mitglieder der späteren Guarded Hyper-V-Hosts (siehe Screenshot):
Die SID (Security Identifier) der Gruppe muss dem HGS-Administrator dann zur Verfügung gestellt werden. Daraus resultierend erhält der HGS auf dem entsprechenden Knoten mit folgendem Cmdlet die nötigen Informationen:
Add-HgsAttestationHostGroup -Name "GuardedHostSecGroup" -Identifier "S-1-5-21-2339916985-2111451438-3938192235-1110"
Ein hier festgelegter Name muss nicht mit der globalen Gruppe übereinstimmen. Bevor nun die Konfiguration abgeschlossen und auch validiert werden kann, sollten die URLs zum entfernten KPS und Attestation Service auf den guarded Hosts manuell eingetragen werden, wenn kein VMM zum Einsatz kommt. Nötig wird zuerst auch hier ein conditional Forwarder von der Fabric in die HGS Domäne:
Add-DnsServerConditionalForwarderZone -Name "hgs.com" -ReplicationScope Forest -MasterServers <DNSserverIP>
Set-HgsClientConfiguration -KeyProtectionServerUrl http://hgs.privatecloud.lab/KeyProtection -AttestationServerUrl http://hgs.privatecloud.lab/Attestation
Das Cmdlet Get-HgsClientConfiguration validiert dies auf den Hosts, auf dem HGS-Knoten hingegen kann Get-HgsTrace -RunDiagnostics -Detailed ein betriebsbereites Gesamtergebnis des Host Guardian Service bescheinigen. Shielded VMs dürfen nun erstellt und konfiguriert werden.
Täglich Know-how für IT-Pros mit unserem Newsletter
Marcel Küppers arbeitet seit über 25 Jahren in der IT, aktuell als Team Leader, zuvor als Consultant und Infrastructure Architect unter anderem für den japanischen Konzern JTEKT/TOYODA mit Verantwortung über die Europastandorte Krefeld und Paris.
Darüber hinaus wirkte er als Berater im EU-Projekt-Team für alle Lokationen des Konzerns mit und ist spezialisiert auf hochverfügbare virtualisierte Microsoft-Umgebungen plus Hybrid Cloud Solutions.
Zertifizierungen: MS Specialist und MCTS für Hyper-V/SCVMM, MCSE, MCITP, MCSA. Zusätzlich zertifiziert für PRINCE2 Projektmanagementmethode.
Ähnliche Beiträge
- KrbRelayUp: Domänen-Controller gegen Angriffe auf Resource-based constrained Delegation absichern
- Active Directory mit Microsoft Defender for Identity schützen
- AD-Zertifikatsdienste (AD CS) von SHA-1 auf SHA-2 migrieren: Gründe und Hindernisse
- Hysolate im Test: Potenziell gefährliche User-Aktivitäten in eine sichere Umgebung verlagern
- Netlogon: Domänen-Controller verweigern Verbindung zu unsicheren Geräten
Weitere Links