Mit den neuen Funktionen Host Guardian Service und Shielded VM im Windows Server 2016 lassen sich Hyper-V-Umgebungen mit einem sehr hohen Sicherheitsniveau aufbauen. Der TPM-Trusted-Modus setzt aktuelle Server-Hardware voraus. Um Unternehmen den Übergang zu erleichtern, hat Microsoft zusätzlich einen Admin-Trusted-Modus implementiert, der keine spezielle Hardware erfordert.
Die starke Verbreitung der Server-Virtualisierung hat dazu geführt, dass die Anbieter entsprechender Plattformen in den vergangenen Jahren die Sicherheitsmechanismen der zugrunde liegenden Infrastruktur immer weiter ausgebaut haben. Zu nennen sind hier beispielsweise der Einsatz von schlanken Hypervisor-Betriebssystemen, VLAN-Techniken, virtuellen Switches und abgeschotteten virtuellen Netzwerken für Virtual Machines (VMs) mit hohen Sicherheitsanforderungen.
Die von vielen Unternehmen geschätzte Portabilität von VMs bringt das Problem mit sich, dass ein Angreifer die Daten einer VM lediglich kopieren muss, um auf die enthaltenen Informationen zugreifen zu können. Zwar ist es auch bisher schon möglich, VMs zu verschlüsseln: ein Administrator mit den entsprechenden Rechten kann die Daten jedoch jederzeit entschlüsseln.
Hier setzt Microsoft mit den in Windows Server 2016 neu eingeführten Funktionen Host Guardian Service (HGS) und Shielded VMs an. HGS überprüft zum einen, ob die von ihm überwachten Hyper-V-Hosts in einem vertrauenswürdigen, nicht kompromittierten Zustand sind. Zum anderen verwaltet er die Schlüssel, um Shielded VMs starten zu können.
Im TPM-Trusted-Modus (Trusted Platform Module) benötigen die überwachten Hyper-V-Server unter anderem ein TPM-2.0-Hardwaremodul und UEFI-2.3.1-Support. Server mit entsprechenden Motherboards sind erst seit etwa Anfang 2016 erhältlich. Um Unternehmen den Einstieg in die neue Sicherheitstechnik zu erleichtern, unterstützt HGS auch einen Admin-Trusted-Modus. Dieser überprüft lediglich, ob ein Hyper-V-Host Mitglied einer definierten AD-Gruppe ist, um ihn als vertrauenswürdig einzustufen.
Im Encryption-Supported-Modus müssen Shielded VMs nur verschlüsselt werden. Im deutlich sichereren Shielded-Modus lassen sich VMs nur starten, wenn der Hyper-V-Host vom HGS-Server die hierfür erforderlichen Schlüssel erhält. Der Shielded-Modus blockiert zudem Zugriffe auf die VM-Konsole, auf PowerShell Direct sowie auf Komponenten der VM-Integration-Services.
Dass Microsoft mit den neuen Sicherheitsfunktionen in WS 2016 vor allem größere Unternehmen und Service-Provider im Blick hat, lässt sich an der Lizenzierung ablesen: Um HGS und Shielded VMs nutzen zu können, ist für die Hyper-V-Hosts die Datacenter-Edition erforderlich. Die HGS-Server lassen sich auch mit der Standard-Edition betreiben.
Für HGS empfiehlt Microsoft eine Cluster-Konfiguration aus mindestens drei physischen WS-2016-Nodes, da es sich um eine hochkritische Komponente der Hyper-V-Infrastruktur handelt. Wenn der HGS-Dienst ausfällt, kann man die Hyper-V-Hosts nicht mehr überprüfen und VMs lassen sich nicht mehr neu starten. Prinzipiell unterstützt Microsoft auch HGS-Installationen auf virtuellen Servern. Für Testzwecke reicht es aus, HGS im Cluster-Modus auf nur einem Server zu installieren.
Die Shielded-VM-Funktion lässt sich nur mit VMs der Generation 2 (Gen 2) nutzen, die Microsoft mit WS 2012 R2 eingeführt hatte. Sie unterstützen Virtual TPM (vTPM), Virtual UEFI sowie Secure Boot. Das vTPM ist nicht vom physischen TPM-Modul abhängig. Shielded VMs lassen sich deshalb per Live-Migration auf andere Hyper-V-Hosts verschieben. Das Betriebssystem der VM muss mindestens Windows 8 beziehungsweise WS 2012 sein.
Shielded VMs benötigen eine sogenannte Shielding-Data-Datei, auch Provisioning-Data-Datei oder PDK-Datei genannt. Der Besitzer der VM, zum Bespiel der Kunde eines Service-Providers, erstellt sie selbst. Die Datei enthält unter anderem das Administrator-Passwort, die zum Active-Directory-Beitritt erforderlichen Benutzerangaben sowie die benötigten Zertifikate. Bei der Erstellung der VM werden die Informationen aus dieser Datei eingelesen. Für den Administrator des Service-Providers hingegen sind diese Daten nicht lesbar.
Auf den Hyper-V-Hosts einer mit HGS überwachten Infrastruktur können sowohl normale, nicht geschützte VMs als auch verschlüsselte VMs sowie Shielded VMs laufen. Es ist zudem möglich, bereits vorhandene normale Gen-2-VMs in Shielded VMs zu konvertieren. Die Bereitstellung von Shielded VMs ist in kleineren Umgebungen auch per PowerShell möglich. In größeren Unternehmen kommt hierfür der System Center Virtual Machine Manager 2016 (SCVMM) oder in hybriden Infrastrukturen Microsofts Azure Pack zum Einsatz.
Für den LANline-Test installierten wir eine HGS- und Hyper-V-Infrastruktur, die wir für den Admin-Trusted-Modus konfigurieren mussten, weil die genutzte Server-Hardware kein TPM 2.0 unterstützte. Den HGS-Cluster und das hierfür von Microsoft empfohlene eigene Active Directory richteten wir auf einem physischen Dell-Server ein. Für die zwei Hyper-V-Hosts kam ebenfalls Dell-Hardware zum Einsatz. Alle drei Server liefen mit WS 2016 in der Datacenter-Edition. Das Active Directory für die Hyper-V-Plattform stellte eine WS-2016-VM bereit, den SCVMM installierten wir ebenfalls auf einer WS-2016-VM.
Nach den Vorarbeiten ging es daran, den HGS-Cluster zu installieren. Im ersten Schritt fügt der Administrator auf dem Server die Windows-Rolle Host Guardian Service hinzu. Dann installiert er die HGS-Funktionen. Der HGS darf nicht Mitglied des Produktions-ADs sein, in dem die zu überwachenden Hyper-V-Hosts laufen. Wenn ein Unternehmen bereits über ein eigenes Active Directory in einer Hochsicherheitszone verfügt, kann man den HGS-Server zu dieser Domäne hinzufügen. Wir wählten die Option, bei der HGS-Installation ein neues Active Directory einzurichten.
Die Kommunikation zwischen dem HGS-Cluster und den Hyper-V-Hosts wird mithilfe von Zertifikaten verschlüsselt. Kommen die Zertifikate ausschließlich innerhalb eines Unternehmens zum Einsatz, kann man sie mit einer Enterprise Certificate Authority (CA) verwalten. Bei einer über die Firmengrenzen hinausgehenden Nutzung muss das Unternehmen sie von einer vertrauenswürdigen öffentlichen CA erwerben. In Testumgebungen lässt sich die HGS-Infrastruktur auch mit selbstsignierten Zertifikaten betreiben. Wir wählten diesen Weg.
Damit die HGS-Server und die Hyper-V-Hosts per Namensauflösung miteinander kommunizieren können, ist in beiden Domänen ein DNS-Forwarder zum DNS-Server der anderen Seite einzurichten. Der Admin-Trusted-Mode benötigt zudem einen Trust zwischen HGS- und Produktionsdomäne.
Um HGS und Shielded VMs im TPM-Trusted-Modus zu nutzen, muss der Administrator zunächst den TPM-Plattform-Identifikator in eine Datei extrahieren und diese auf den HGS-Server kopieren. Dann erstellt er eine Hardware-Baseline, die unter anderem die UEFI-Keys und die Logs des UEFI-Boots enthält. Wenn alle Hosts genau dieselbe Hardwareausstattung haben, reicht eine Baseline aus. Schließlich muss der Administrator noch eine Code Integrity Policy erstellen. Diese stellt sicher, das nur die einmal definierte Software (Treiber, DLLs, EXE-Dateien) auf dem Host ausgeführt werden darf.
Ein Audit-Modus hilft dabei, die passenden Policy-Settings zu finden und dann per Enforced Mode scharf zu schalten. HGS überprüft im TPM-Trusted-Modus jeden Hyper-V-Hosts darauf, ob er mit allen per Policy vorgegebenen Hardware- und Softwarekonfigurationen vollständig übereinstimmt. Ist dies nicht der Fall, sperrt HGS den Hyper-V-Host für Shielded VMs.
Der Admin-Trusted-Modus bietet Unternehmen einen sanften Migrationspfad, bis alle Hyper-V-Server auf Hardware mit TPM-2.0-Support laufen. Anschließend lässt sich die HGS-Infrastruktur auf den TPM-Trusted-Modus umstellen. Dabei verifiziert HGS jeden Hyper-V-Host erneut. Die bereits vorhandenen Shielded VMs beeinträchtigt dies nicht.
Um für den LANline-Test den Admin-Trusted-Modus zu aktivieren, führten wir zur Grundkonfiguration des HGS-Clusters die PowerShell-Kommandos aus, die in der Microsoft-Dokumentation genannt sind. Anschließend erstellten wir im Produktions-AD eine neue Global Security Group mit dem Namen "Guarded Hosts" und fügten die zwei Hyper-V-Hosts hinzu. Im Admin-Trusted-Mode prüft HGS, ob die überwachten Hyper-V-Hosts Mitglied dieser Gruppe sind.
Damit HGS die Hyper-V-Hosts überwachen kann, muss der Administrator zudem auf den Hosts die Funktion Host Guardian Hyper-V Support installieren. Anschließend lässt sich der Hyper-V-Server als Guarded Host konfigurieren, der gegenüber dem HGS seine Integrität nachweisen und Schlüssel für Shielded VMs anfordern darf. Dies kann auf jedem Host per PowerShell-Kommando erfolgen, oder der Administrator konfiguriert im VMM die "Host Guardian Service"-Einstellungen, um sie auf alle Guarded Hosts zu übertragen. Wir wählten die zweite Methode. Anschließend aktivierten wir ebenfalls im SCVMM im Eigenschaftenmenü der beiden Hyper-V-Hosts die HGS-Funktion.
Anschließend prüften wir, ob sich die zwei Hyper-V-Hosts von HGS verifizieren lassen. Die Verifizierung schlug zunächst fehl. Nach einem Blick in die Microsoft-Dokumentation fanden wir das fehlende Puzzleteilchen: Auf dem HGS-Server muss die SID-Nummer (Security Identifier) der zuvor im Produktions-AD neu angelegten Gruppe Guarded Hosts autorisiert werden. Danach erhielten beide Hyper-V-Host bei der HGS-Prüfung den Status IsHostGuarded = True. Damit war das Setup unserer Guarded Fabric komplett, und wir konnten die erste Shielded VM installieren.
Für die Bereitstellung einer Shielded VM erzeugt zunächst der Service-Provider mit dem Shielded Template Disk Creation Wizard eine signierte virtuelle Template-Disk. Die Signatur stellt sicher, dass das Template nicht nachträglich verändert werden kann. Der Besitzer der VM konfiguriert anschließend mit dem Shielding Data File Wizard die für die Provisionierung erforderlichen Daten und speichert sie in einer PDK-Datei. Beide Wizards sind in den aktuellen Remote Server Administration Tools (RSAT) für Windows 10 enthalten. Der Create-VM-Assistent übernimmt nun die PDK-Daten in die Shielded-VM. Mit dem SCVMM ist es zudem möglich, ein signiertes VM-Template für die Provisionierung zu erzeugen.
Im Test führten wir mit einer Gen-2-VM zunächst einen Sysprep durch und erstellten eine Unattend-Datei. Anschließend fuhren wir die VM herunter und starteten den Disk Creation Wizard. Der Wizard benötigt ein Zertifikat des HGS-Servers und verschlüsselt die VM-Disk bei der Umwandlung in ein Template. Die fertige Template Disk kopierten wir in die VMM-Bibliothek.
Als nächsten Schritt erstellten wir mit dem Data File Wizard die PDK-Datei, die beim Anlegen einer Shielded VM eingelesen wird. Die Datei enthält unter anderem Informationen zu den Eigentümern der VM und den zugelassenen Guarded Hosts. Im letzten Schritt legten wir im VMM eine neue Shielded VM an und gaben die zuvor erstellte PDK-Datei an. Der Create-VM-Wizard erzeugte die neue VM. Wir konnten sie nun starten und per Live-Migration zwischen den zwei Guarded-Hyper-V-Hosts der Testumgebung hin und her verschieben.
Die mit WS 2016 neu eingeführten Shielded VMs sind eine interessante Lösung für Unternehmen mit hohen Sicherheitsanforderungen sowie für Service-Provider, die ihren Kunden VMs auf Basis der Hyper-V-Plattform bereitstellen. Im TPM-Trusted-Modus stellt der Host Guardian Service sicher, dass sich VMs nur auf Hosts starten lassen, deren Integrität HGS überprüft hat. Zudem können nur die VM-Besitzer die Daten der VM einsehen. Die Anforderungen an eine HGS- und Shielded-VM-Infrastruktur mit physischem Drei-Node-HGS-Cluster, CA-Infrastruktur sowie Hyper-V-Hardware mit TPM-2.0- und UEFI-2.3.1-Support sind allerdings nicht zu unterschätzen. Mit dem Admin-Trusted-Modus bietet Microsoft immerhin einen sanften Migrationspfad.