Diese Sicherheitskontrollen stellen einen Baseline-Satz von Best Practices für die Sicherheit virtueller Maschinen bereit. Sie sind dahingehend gegliedert, dass die Vor- und Nachteile der Implementierung der Kontrolle verdeutlicht werden. Erweiterte Systemeinstellungen können Sie entweder über die bereitgestellte PowerCLI ändern oder unter vSphere Client ( ).
Verwendete Variable
Die in diesem Abschnitt vorgestellten PowerCLI-Befehle verwenden folgende Variable:
- $VM = "virtual_machine_name"
mks.enable3d
Deaktiviert 3D-Grafikfunktionen auf virtuellen Maschinen, die nicht benötigt werden, um potenzielle Angriffsvektoren zu reduzieren und so die allgemeine Systemsicherheit zu verbessern.
ethernet*.filter*.name
Beschränkt den Zugriff auf virtuelle Maschinen über die Netzwerk-API „dvFilter“.
Die Schnittstelle „dvFilter“ wird von Tools wie NSX zum Filtern und Überprüfen des Netzwerkdatenverkehrs verwendet. Sie kann auch von anderen Tools verwendet werden. Stellen Sie sicher, dass diese Tools autorisiert sind.
Verhindern, dass virtuelle Maschinen von nicht autorisierten Quellen gestartet werden
Virtuelle Maschinen müssen das Starten von nicht autorisierten Quellen verhindern.
Ein nicht autorisierter Zugriff auf eine virtuelle Maschine kann auftreten, wenn das primäre Startvolume nicht verfügbar ist und die EFI-Firmware alternative Startquellen sucht, etwa den Netzwerkstart. Dies kann durch Netzwerksteuerungen sowie durch die erweiterten Parameter bios.bootDeviceClasses, bios.bootOrder und bios.hddOrder verringert werden.
bios.bootDeviceClasses hat das Format „allow:XXXX“ oder „deny:XXXX“, wobei XXXX eine kommagetrennte Liste von Startklassen ist. Zu den Startklassen zählen „net“ (Netzwerk-PXE-Start), „usb“ (von angehängten USB-Geräten), „pcmcia“ (PCMCIA-Erweiterungskarten, derzeit nicht verwendet), „cd“ (von angehängten virtuellen CD-/DVD-Geräten), „hd“ (von angehängten virtuellen Festplatten), „fd“ (von virtuellen Diskettenlaufwerken), „reserved“ (von unbekannten Geräten), efishell (in die EFI-Shell) und „all“ oder „any“ (mit „all“ identisch).
- „deny:all“ verbietet alle Startklassen.
- „deny:net“ lässt den Netzwerkstart nicht zu, lässt aber alle anderen zu.
- „allow:hd“ lässt nur den Festplattenstart zu und verweigert alle anderen.
- „allow:hd,cd“ lässt den Festplattenstart und dann den Start des CD-Geräts zu und verweigert alle anderen.
Es kann sein, dass für neue virtuelle Maschinen ein CD-/DVD-Start erforderlich ist. Zudem kann es sein, dass einige dynamische Umgebungen, etwa Labs, den Netzwerkstart verwenden. Legen Sie diese Umgebungen entsprechend fest, und dokumentieren Sie Ihre Begründung.
- Mögliche funktionale Auswirkungen einer Änderung des Standardwerts
- Die virtuelle Maschine kann nicht mehr von nicht spezifizierten Quellen gestartet werden, was sich negativ auf Situationen auswirken kann, in denen PXE-Start- oder Wiederherstellungsmedien erforderlich sind. Der Parameter kann jedoch problemlos über PowerCLI skaliert werden. Ein alternativer Ansatz besteht darin, verweigerte Methoden wie „deny:net“ anzugeben.
RemoteDisplay.maxConnections
Beschränkt die Anzahl der Konsolenverbindungen mit einer virtuellen Maschine.
Die Begrenzung der gemeinsamen Nutzung der Konsole für die virtuelle Maschine auf einen Benutzer verhindert mehrere Beobachter und erhöht so die Sicherheit. Dies kann jedoch versehentlich dazu führen, dass Dienste abgelehnt werden.
- Mögliche funktionale Auswirkungen einer Änderung des Standardwerts
- Es kann zu einer Denial-of-Service-Bedingung kommen, bei der die Konsole nicht verwendet werden kann, weil der eine Benutzer verbunden ist oder eine getrennte Konsolensitzung weiterhin besteht. Für andere Produkte, etwa VMware Cloud Director, kann es sein, dass diese Option auf einen höheren Wert festgelegt werden muss.
Begrenzen der Passthrough-Funktionalität des PCI-Geräts
Virtuelle Maschinen müssen die Passthrough-Funktionalität des PCI-Geräts begrenzen.
DirectPath E/A-Funktionen ermöglichen virtuellen Maschinen den direkten Zugriff auf Systemhardware, was sich auf Tools zur Risikominderung wie vMotion, DRS und Hochverfügbarkeit auswirkt. DirectPath E/A-Funktionen bieten Angreifern möglicherweise auch privilegierten Hardwarezugriff. Stellen Sie sicher, dass nur erforderliche virtuelle Maschinen über dieses Recht verfügen, was durch Gastbetriebssystem-Sicherheitskontrollen kompensiert wird.
Entfernen unnötiger virtueller Hardwaregeräte für virtuelle Maschinen
Virtuelle Maschinen müssen unnötige virtuelle Hardware entfernen.
Vermeiden Sie unnötige virtuelle Hardware von virtuellen Maschinen, um potenzielle Angriffsflächen zu reduzieren. Selten verwendete Ports, temporäre CD-/DVD-Laufwerke und Hardware, die durch Migrationen eingeführt werden, könnten anfällig sein. Wenn Sie diese entfernen, verringert sich das Risiko, dass Software eingeführt wird oder Daten aus einer geschützten Umgebung herausgeschleust werden.
- Mögliche funktionale Auswirkungen einer Änderung des Standardwerts
- Das Entfernen des CD-ROM-Geräts kann sich auf die Installation und Wartung von VMware Tools auswirken. Das Entfernen von XHCI-Controllern kann sich für einige Gastbetriebssysteme auswirken auf die Konnektivität von Tastatur und Maus der Konsole.
- PowerCLI-Befehlsbeurteilung
-
$VMview = Get-VM -Name $VM | Get-View $UnnecessaryHardware = "VirtualUSBController|VirtualUSBXHCIController|VirtualParallelPort|VirtualFloppy|VirtualSerialPort|VirtualHdAudioCard|VirtualAHCIController|VirtualEnsoniq1371|VirtualCdrom" $VMview.Config.Hardware.Device | Where-Object {$_.GetType().Name -match $UnnecessaryHardware} | Foreach-Object { $devname = $_.GetType().Name Write-Host "$VM`: [WARNING] VM has a $devname device. Please evaluate and consider removing." -ForegroundColor Yellow }
tools.guestlib.enableHostInfo
Verhindert, dass virtuelle Maschinen Hostinformationen über den Hypervisor abrufen.
Indem verhindert wird, dass virtuelle Maschinen Hostinformationen über den Hypervisor abrufen, verringert sich das Risiko erweiterter Angriffe, da Angreifern wichtige Details zum physischen Host verweigert werden.
Festlegen der Verschlüsselung für Fault Tolerance
Virtuelle Maschinen müssen für Fault Tolerance eine Verschlüsselung anfordern.
Die Anforderung einer Verschlüsselung für Fault Tolerance in virtuellen Maschinen gewährleistet eine sichere Datenübertragung. Während die standardmäßige „opportunistische“ Verschlüsselung wahrscheinlich aufgrund der allgegenwärtigen AES-NI-Unterstützung in vSphere-kompatibler Hardware zu einer Verschlüsselung führt, garantiert das Erzwingen der „erforderlichen“ Verschlüsselung keine unverschlüsselten Vorgänge.
- Beispiel für PowerCLI-Befehlsstandardisierung
-
$VMview = Get-VM -Name $VM | Get-View $ConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec $ConfigSpec.FtEncryptionMode = New-object VMware.Vim.VirtualMachineConfigSpecEncryptedFtModes $ConfigSpec.FtEncryptionMode = "ftEncryptionRequired" $VMview.ReconfigVM_Task($ConfigSpec)
isolation.tools.copy.disable
Deaktiviert Konsolenkopiervorgänge auf virtuellen Maschinen.
Durch das Deaktivieren von Konsolenkopiervorgängen auf virtuellen Maschinen wird das Kopieren von Daten zwischen der virtuellen Maschine und dem lokalen Client verhindert, unabhängig davon, ob der Benutzer über die Web-Konsole, VMRC oder eine andere Methode auf zugreift.
- Werte
- Standardwert der Installation: True.
- Aktion erforderlich
- Überprüfen Sie den Standardwert der Installation.
- Mögliche funktionale Auswirkungen einer Änderung des Standardwerts
- Keine
- PowerCLI-Befehlsbeurteilung
-
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable
isolation.tools.paste.disable
Deaktiviert Konsolen-Einfügevorgänge auf virtuellen Maschinen.
Durch Deaktivieren von Konsolen-Einfügevorgängen auf virtuellen Maschinen wird die Datenübertragung vom lokalen Client zur virtuellen Maschine blockiert, unabhängig davon, ob der Benutzer die Web-Konsole, VMRC oder eine andere Konsole verwendet.
isolation.tools.diskShrink.disable
Deaktiviert das Verkleinern virtueller Festplatten auf virtuellen Maschinen.
Durch das Deaktivieren der Verkleinerung von virtuellen Festplatten auf virtuellen Maschinen werden Probleme in Bezug auf die Nichtverfügbarkeit von Festplatten vermieden. Benutzer ohne administrative Rechte können diesen Vorgang in der Gastumgebung in der Regel nur eingeschränkt durchführen.
isolation.tools.diskWiper.disable
Deaktiviert Vorgänge zum Löschen virtueller Festplatten auf virtuellen Maschinen.
Durch das Deaktivieren des Löschens von virtuellen Festplatten auf virtuellen Maschinen werden Probleme in Bezug auf die Nichtverfügbarkeit von Festplatten vermieden. Benutzer ohne administrative Rechte können diesen Vorgang in der Gastumgebung in der Regel nur eingeschränkt durchführen.
isolation.device.connectable.disable
Verhindert, dass virtuelle Maschinen unbefugt entfernt, verbunden und Geräte geändert werden.
Durch das Verhindern nicht autorisierter Geräteänderungen auf virtuellen Maschinen wird verhindert, dass nicht administrative Benutzer oder Prozesse Geräteeinstellungen verbinden, trennen oder anpassen können. Diese Maßnahme dämmt unbefugte Zugriffe und Betriebsunterbrechungen ein, reduziert Denial-of-Service-Risiken sowie einige Möglichkeiten zum Herausschleusen von Daten.
isolation.tools.dnd.disable
Deaktiviert Drag-and-Drop-Vorgänge auf Konsolen für die virtuelle Maschine.
Durch das Deaktivieren von Drag-and-Drop-Vorgängen in der Konsole einer virtuellen Maschine wird verhindert, dass Benutzer Daten zwischen der virtuellen Maschine und dem lokalen Client übertragen, unabhängig vom Konsolentyp, was wiederum die Datensicherheit erhöht.
tools.setInfo.sizeLimit
Begrenzt die von der virtuellen Maschine auf die VMX-Datei übergebenen Informationsmeldungen.
Durch die Begrenzung der Informationsmeldungen der virtuellen Maschine auf die VMX-Datei wird verhindert, dass die Standardgröße von 1 MB überschritten wird. Diese Option verhindert potenzielle Denial-of-Service-Situationen, die auftreten können, wenn der Datenspeicher voll ist.
Aktivieren der Protokollierung
Virtuelle Maschinen müssen die Diagnoseprotokollierung aktivieren.
Die Diagnoseprotokollierung für virtuelle Maschinen hilft bei der Diagnose und Fehlerbehebung.
log.keepOld
Begrenzt die Anzahl der aufbewahrten Diagnoseprotokolle der virtuellen Maschine.
Indem Sie die Anzahl der aufbewahrten Diagnoseprotokolle einschränken, vermeiden Sie, dass Datenspeicher gefüllt wird, ohne dass Sie dabei die Diagnosefunktionalität beeinträchtigen.
log.rotateSize
Begrenzt die Größe der Diagnoseprotokolle der virtuellen Maschine.
Durch die Begrenzung der Größe von Diagnoseprotokollen auf virtuellen Maschinen wird ein übermäßiger Speicherplatzverbrauch verhindert, insbesondere bei virtuellen Maschinen mit langer Ausführungsdauer. Der empfohlene Mindestgrenzwert beträgt 2 MB.
tools.guestlib.enableHostInfo
Deaktiviert die Funktion zum Senden von Hostinformationen an Gäste.
Durch die Konfiguration einer virtuellen Maschine zum Abrufen detaillierter Informationen über den physischen Host könnte ein Angreifer diese Informationen möglicherweise verwenden, um weitere Angriffe auf dem Host durchzuführen. Da der Standardzustand der gewünschte Zustand ist, können Sie die Überwachung vornehmen, indem Sie überprüfen, ob diese Einstellung nicht oder auf „False“ festgelegt ist.
tools.guest.desktop.autolock
Sperrt die Gastsitzung der virtuellen Maschine, wenn die Remote-Konsole getrennt wird.
Durch das Sperren virtueller Maschinen beim Schließen der letzten Konsolenverbindung kann ein potenzieller nicht autorisierter Zugriff durch Angreifer verhindert werden, die angemeldete Konsolensitzungen ausnutzen.
Aktivieren der Verschlüsselung für vMotion
Virtuelle Maschinen müssen für vMotion eine Verschlüsselung anfordern.
Die Anforderung einer Verschlüsselung für vMotion auf virtuellen Maschinen gewährleistet eine sichere Datenübertragung. Die standardmäßige „opportunistische“ Verschlüsselung führt wahrscheinlich zu einer Verschlüsselung aufgrund der weit verbreiteten AES-NI-Unterstützung in vSphere-kompatibler Hardware. Durch das Erzwingen der „erforderlichen“ Verschlüsselung werden jedoch unverschlüsselte Vorgänge verhindert.
- Beispiel für PowerCLI-Befehlsstandardisierung
-
$VMview = Get-VM -Name $VM | Get-View $ConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec $ConfigSpec.MigrateEncryption = New-Object VMware.Vim.VirtualMachineConfigSpecEncryptedVMotionModes $ConfigSpec.MigrateEncryption = "required" $VMview.ReconfigVM_Task($ConfigSpec)