Bents Blog

 

Ein IT Blog mit Themen aus dem Windows Server Umfeld.

PowerCLI: Virtual Based Security mit VMware vSphere 6.7

Virtual Based Security (VBS) ist ein Sicherheitsfeature von VMware, welches seit VMware vSphere 6.7 für die Gastbetriebssysteme Windows 10 und Windows Server 2016 aktiviert werden kann. 

Dazu sind zunächst auf Seiten der Virtual Machine Configuration ein paar notwendige Einstellungen zu treffen. Im zweiten Schritt müssen dann auch die nachfolgenden Gruppenrichtlinieneinstellungen innerhalb des Betriebssystems angewendet werden.

Problem

Bei meiner Recherche im Internet fand ich zwar eine Menge Seiten, die die Aktivierung von VBS über das grafische Menü im vSphere Client beschreiben, allerdings werden in großen Umgebungen mit hohem Automatisierungsgrad häufig Skripte verwendet.

VBS Aktivierung in den VM Optionen

Daher war ich auf der Suche nach den richtigen Kommando für die Aktivierung von VBS über vSphere PowerCLI (Command Line Interface für Windows Powershell).

Lösung

Für die Aktivierung von VBS werden mehrere virtuelle „Hardware“-Voraussetzungen für die virtuelle Maschine benötigt:

  • Firmware UEFI
  • SecureBoot
  • Nested Hardware Virtualization
  • Intel Virtualization Technology for Directed I/O (VVTD)

Außerdem muss als Gastbetriebssystem entweder 

  • Windows 10 (64 Bit)
  • Windows Server 2016

eingesetzt werden. Um die oben aufgeführten Einstellungen via PowerCLI zu konfigurieren, muss zunächst das Objekt der virtuellen Maschine in eine Variable geladen werden:

$VM = Get-VM -Name <VM-Name>

Im Anschluss wird eine neue Konfiguration aus mehreren Unterobjekten erstellt:

If ($VM.GuestId -match "^windows9(_|Server)64Guest$") {
$Spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$Spec.Firmware = [VMware.Vim.GuestOsDescriptorFirmwareType]::efi
$Bootoptions = New-Object VMware.Vim.VirtualMachineBootOptions
$Bootoptions.EfiSecureBootEnabled = $true
$Spec.Bootoptions = $Bootoptions
$VM.ExtensionData.ReconfigVM($Spec)
}

Diese Konfiguration muss zunächst abgeschlossen werden. Nach der Aktivierung von UEFI und SecureBoot kann letztendlich VBS aktiviert werden:

If ($VM.GuestId -match "^windows9(_|Server)64Guest$") {
$Spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$Flags = New-Object VMware.Vim.VirtualMachineFlaginfo
$Flags.VvtdEnabled = $true
$Flags.VbsEnabled = $true
$Spec.Flags = $Flags
$Spec.NestedHVEnabled = $true
$VM.ExtensionData.ReconfigVM($Spec)
}

Im Anschluss ist für die virtuelle Maschine die Funktion Virtual Based Security aktiv. Dies kann im vSphere Client kontrolliert werden:

Virtuelle Maschine mit aktivierter Virtual Based Security

Im Anschluss kann das Betriebssystem installiert und die Virtual Based Security per Gruppenrichtlinie konfiguriert werden:

  • Select Platform Security level: Secure Boot and DMA Protection
  • Virtualization Based Protection of Code Integrity: Enabled with UEFI lock
  • Credential Guard Configuration: Enabled with UEFI lock

Danach kann die Hyper-V-Rolle aktiviert und die virtuelle Maschine neu gestartet werden.

Fazit

Es ist zwar sinnvoller und durchaus möglich, die obigen Konfigurationseinstellungen über eine Vorlage (Template) zu konfigurieren und darüber Maschinen bereitzustellen. In bestimmten Fällen (bspw. Testszenarien) werden aber auch leere virtuelle Maschinen mit den vorbereiteten Sicherheitseinstellungen benötigt. Mit den obigen Kommandos lässt sich das einfach und schnell automatisieren.

Einen Blog am Leben zu erhalten kostet Zeit und Geld. Da ich auf meiner Seite weder Werbung einbinde, noch andersweitige Zuwendungen erhalte, freue ich mich über jede kleine Spende. Einfach und unkompliziert geht das über PayPalMe. Du unterstützt damit diesen Blog. Vielen Dank.