Questi controlli di sicurezza forniscono un set di basi di confronto delle procedure consigliate per la sicurezza delle macchine virtuali. Sono strutturati in modo da spiegare i vantaggi e i compromessi dell'implementazione del controllo. Per modificare le impostazioni di sistema avanzate, è possibile utilizzare l'istanza di PowerCLI fornita oppure vSphere Client (Host > Configura > Sistema > Impostazioni di sistema avanzate).

Variabili utilizzate

I comandi di PowerCLI in questa sezione utilizzano la variabile seguente:

  • $VM = "virtual_machine_name"

mks.enable3d

Disattiva le funzionalità Grafica 3D nelle macchine virtuali che non ne hanno bisogno per ridurre potenziali vettori di attacco, migliorando la sicurezza generale del sistema.

Valori
Valore predefinito dell'installazione: False
Valore suggerito per la base di confronto: False
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d | Set-AdvancedSetting -Value FALSE

ethernet*.filter*.name

Limita l'accesso alle macchine virtuali tramite l'API di rete "dvFilter".

L'interfaccia dvFilter viene utilizzata da strumenti come NSX per filtrare e ispezionare il traffico di rete. Anche altri strumenti potrebbero utilizzarlo. Assicurarsi che tali strumenti siano autorizzati.

Valori
Valore predefinito installazione: Non presente
Valore base di confronto suggerito: Non presente
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Strumenti di rete legittimi, incluso NSX, potrebbero richiedere questa funzionalità.
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*"
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*" | Remove-AdvancedSetting

Impedire l'avvio di macchine virtuali da origini non autorizzate

Le macchine virtuali devono impedire l'avvio da origini non autorizzate.

È possibile che si verifichi un accesso non autorizzato a una macchina virtuale quando il relativo volume di avvio primario non è disponibile e il firmware EFI cerca origini di avvio alternative, come l'avvio di rete. Ciò può essere ridotto tramite i controlli di rete, nonché con i parametri avanzati bios.bootDeviceClasses, bios.bootOrder e bios.hddOrder.

bios.bootDeviceClasses ha il formato "allow:XXXX" o "deny:XXXX", dove XXXX è un elenco delimitato da virgole di classi di avvio. Le classi di avvio sono net (avvio PXE di rete), USB (da dispositivi USB collegati); pcmcia (schede di espansione PCMCIA, non utilizzate attualmente); cd (da dispositivi CD/DVD virtuali collegati); hd (da dischi rigidi virtuali collegati), fd (da dispositivi floppy virtuali collegati), riservato (da dispositivi sconosciuti), efishell (nella shell EFI), e all o any (uguale a all).

L'uso del permesso o della negazione indica implicitamente anche il contrario. Ad esempio:
  • deny:all non consente alcuna classe di avvio
  • deny:net non consente l'avvio della rete ma consente tutti gli altri
  • allow:hd consente solo l'avvio hd e nega tutti gli altri
  • allow:hd,cd consente l'avvio unità hd poi cd e nega tutti gli altri

Le nuove macchine virtuali potrebbero richiedere l'avvio da CD/DVD e alcuni ambienti dinamici, come i laboratori potrebbero utilizzare l'avvio di rete. Impostare tali ambienti di conseguenza e documentare il ragionamento.

Valori
Valore predefinito di installazione: allow:all
Valore base di confronto suggerito: allow:hd (una volta installato il sistema operativo guest)
Azione necessaria
Modificare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
La macchina virtuale non può più essere avviata da origini non specificate. Ciò potrebbe influire negativamente su situazioni in cui sono necessari supporti di avvio PXE o di ripristino. Tuttavia, il parametro può essere facilmente modificato su larga scala mediante PowerCLI. Un approccio alternativo consiste nello specificare i metodi vietati, ad esempio "deny:net".
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses | Set-AdvancedSetting -Value "allow:hd"

RemoteDisplay.maxConnections

Limita il numero di connessioni della console a una macchina virtuale.

La limitazione della condivisione delle console delle macchine virtuali a un utente impedisce l'utilizzo di più osservatori, migliorando così la sicurezza. Tuttavia, ciò potrebbe inavvertitamente creare un potenziale percorso per la negazione del servizio.

Valori
Valore predefinito installazione: -1
Valore suggerito per la base di confronto: 1
Azione necessaria
Modificare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Potrebbe creare una condizione di Denial Of Service in cui la console non è utilizzabile perché l'utente è connesso o una sessione della console disconnessa persiste. Altri prodotti, come VMware Cloud Director, potrebbero richiedere l'impostazione di questa opzione su un valore maggiore.
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections | Set-AdvancedSetting -Value 1

Limitazione della funzionalità Passthrough dispositivo PCI

Le macchine virtuali devono limitare la funzionalità passthrough del dispositivo PCI.

Le funzionalità DirectPath I/O consentono alle macchine virtuali di accedere direttamente all'hardware del sistema, con un impatto sugli strumenti di attenuazione dei rischi come vMotion, DRS e High Availability. Le funzionalità DirectPath I/O possono anche potenzialmente fornire agli utenti malintenzionati di un acceso privilegiato all'hardware. Assicurarsi che solo le macchine virtuali necessarie dispongano di questo privilegio, compensando con i controlli di sicurezza del sistema operativo guest.

Valori
Valore predefinito installazione: Non presente
Valore base di confronto suggerito: Non presente
Azione necessaria
Controllo
Potenziale impatto funzionale se il valore predefinito viene modificato
I dispositivi passthrough, come le GPU, ne risentirebbero negativamente se disconnessi. Controllare e documentare le necessità aziendali per queste macchine virtuali.
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-PassthroughDevice
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-PassthroughDevice | Remove-PassthroughDevice

Rimozione di dispositivi hardware virtuali della macchina virtuale non necessari

Le macchine virtuali devono rimuovere l'hardware virtuale non necessario.

Per ridurre potenziali superfici di attacco, eliminare l'hardware virtuale non necessario dalle macchine virtuali. Le porte utilizzate raramente, le unità CD/DVD temporanee e l'hardware introdotto dalle migrazioni potrebbero essere vulnerabili. La loro rimozione riduce il rischio di introduzione del software o di esfiltrazione di dati da un ambiente protetto.

Valori
Valore predefinito installazione: Configurato
Valore base di confronto suggerito: Non presente
Azione necessaria
Modificare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
La rimozione del dispositivo CD-ROM potrebbe influire sull'installazione e sulla manutenzione di VMware Tools. La rimozione dei controller XHCI potrebbe influire sulla connettività della tastiera e del mouse della console per alcuni sistemi operativi guest.
Valutazione del comando tramite PowerCLI
$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
}
Esempio di correzione del comando tramite PowerCLI
N/D
Impostazione della posizione in vSphere Client
Macchina virtuale > Modifica impostazioni > Hardware virtuale

tools.guestlib.enableHostInfo

Impedisce alle macchine virtuali di ottenere informazioni dell'host relative all'hypervisor.

Se si impedisce alle macchine virtuali di ottenere informazioni dell'host sull'hypervisor, si riduce il rischio di attacchi avanzati, poiché nega agli avversari i dettagli cruciali sull'host fisico.

Valori
Valore predefinito dell'installazione: False
Valore base di confronto suggerito: False o non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting
Impostazione della posizione in vSphere Client
N/D. Si tratta di un'impostazione file VMX.

Impostazione della crittografia per Fault Tolerance

Le macchine virtuali devono richiedere la crittografia per Fault Tolerance.

La richiesta della crittografia per Fault Tolerance nelle macchine virtuali garantisce la trasmissione sicura dei dati. Sebbene la crittografia predefinita "opportunistica" comporti probabilmente la crittografia a causa del supporto AES-NI onnipresente in hardware compatibile con vSphere, l'applicazione della crittografia "obbligatoria" garantisce operazioni non crittografate.

Valori
Valore predefinito di installazione: ftEncryptionOpportunistic
Valore base di confronto suggerito: ftEncryptionRequired
Azione necessaria
Modificare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
(Get-VM -Name $VM).ExtensionData.Config.FtEncryptionMode
Esempio di correzione del comando tramite PowerCLI
$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)
Impostazione della posizione in vSphere Client
Macchina virtuale > Modifica impostazioni > Opzioni macchina virtuale > Crittografia

isolation.tools.copy.disable

Disattiva le operazioni di copia della console nelle macchine virtuali.

La disattivazione delle operazioni di copia della console nelle macchine virtuali impedisce la copia dei dati tra la macchina virtuale e il client locale, indipendentemente dal fatto che l'utente acceda tramite Web Console, VMRC o un altro metodo.

Valori
Valore predefinito dell'installazione: True
Valore base di confronto suggerito: True o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable | Remove-AdvancedSetting

isolation.tools.paste.disable

Disattiva le operazioni incolla della console nelle macchine virtuali.

Disabilitando le operazioni incolla della console sulle macchine virtuali, il trasferimento di dati dal client locale alla macchina virtuale viene bloccato, indipendentemente dal fatto che l'utente utilizzi Web Console, VMRC o un'altra console.

Valori
Valore predefinito dell'installazione: True
Valore base di confronto suggerito: True o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable | Remove-AdvancedSetting

isolation.tools.diskShrink.disable

Disattiva il compattamento del disco virtuale nelle macchine virtuali.

La disabilitazione del compattamento del disco virtuale sulle macchine virtuali consente di evitare problemi di indisponibilità del disco. La possibilità di eseguire questa operazione è in genere limitata per gli utenti non amministrativi nell'ambiente guest.

Valori
Valore predefinito dell'installazione: True
Valore base di confronto suggerito: True o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable | Remove-AdvancedSetting

isolation.tools.diskWiper.disable

Disattiva le operazioni di cancellazione del disco virtuale nelle macchine virtuali.

La disabilitazione della cancellazione del disco virtuale sulle macchine virtuali consente di evitare problemi di indisponibilità del disco. La possibilità di eseguire questa operazione è in genere limitata per gli utenti non amministrativi nell'ambiente guest.

Valori
Valore predefinito dell'installazione: True
Valore base di confronto suggerito: True o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable | Remove-AdvancedSetting

isolation.device.connectable.disable

Impedisce la rimozione, la connessione e la modifica non autorizzate dei dispositivi da parte delle macchine virtuali.

La prevenzione di modifiche non autorizzate del dispositivo nelle macchine virtuali impedisce agli utenti o ai processi non amministrativi di connettere, disconnettere o modificare le impostazioni del dispositivo. Questa misura limita l'accesso non autorizzato e l'interruzione delle operazioni, riducendo i rischi di negazione del servizio e alcune modalità di esfiltrazione dei dati.

Valori
Valore predefinito dell'installazione: True
Valore base di confronto suggerito: True o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable | Remove-AdvancedSetting

isolation.tools.dnd.disable

Disattiva le operazioni di trascinamento e rilascio nelle console delle macchine virtuali.

La disattivazione delle operazioni di trascinamento e rilascio nella console di una macchina virtuale impedisce agli utenti di trasferire dati tra la macchina virtuale e il client locale, indipendentemente dal tipo di console, migliorando così la sicurezza dei dati.

Valori
Valore predefinito dell'installazione: True
Valore base di confronto suggerito: True o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable | Remove-AdvancedSetting

tools.setInfo.sizeLimit

Limita i messaggi informativi passati dalla macchina virtuale al file VMX.

La limitazione dei messaggi informativi della macchina virtuale al file VMX impedisce il superamento delle dimensioni predefinite di 1 MB. Questa opzione impedisce potenziali situazioni di tipo Denial of Service che potrebbero verificarsi se il datastore diventa pieno.

Valori
Valore predefinito di installazione: 1048576
Valore base di confronto suggerito: 1048576 o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit | Remove-AdvancedSetting

Attivazione della registrazione

Le macchine virtuali devono attivare la registrazione diagnostica.

La registrazione diagnostica per le macchine virtuali consente l'analisi forense e la risoluzione dei problemi.

Valori
Valore predefinito dell'installazione: True
Valore suggerito per la base di confronto: True
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Where {$_.ExtensionData.Config.Flags.EnableLogging -ne "True"}
Esempio di correzione del comando tramite PowerCLI
$VMview = Get-VM -Name $VM | Get-View 
$ConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$ConfigSpec.Flags = New-Object VMware.Vim.VirtualMachineFlagInfo
$ConfigSpec.Flags.EnableLogging = $true
$VMview.ReconfigVM_Task($ConfigSpec)

log.keepOld

Limita il numero di registri diagnostici delle macchine virtuali conservate.

Limitando la quantità di registri diagnostici conservati, è possibile evitare il riempimento del datastore senza compromettere la funzionalità diagnostica.

Valori
Valore predefinito installazione: 10
Valore base di confronto suggerito: 10 o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld | Remove-AdvancedSetting

log.rotateSize

Limita la dimensione dei registri diagnostici delle macchine virtuali.

Limitando la dimensione dei registri diagnostici nelle macchine virtuali si impedisce un consumo eccessivo di spazio, in particolare nelle macchine virtuali con esecuzione prolungata. Il limite minimo consigliato è di 2 MB.

Valori
Valore predefinito installazione: 2048000
Valore base di confronto suggerito: 2048000 o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize | Remove-AdvancedSetting

tools.guestlib.enableHostInfo

Disattiva la possibilità di inviare informazioni sull'host ai guest.

Configurando una macchina virtuale per ottenere informazioni dettagliate sull'host fisico, un avversario potrebbe potenzialmente utilizzare queste informazioni per informare ulteriori attacchi all'host. Poiché il valore predefinito è lo stato desiderato, è possibile eseguire il controllo verificando che questa impostazione non sia impostata o, se impostata, che sia impostata su False.

Valori
Valore predefinito dell'installazione: False
Valore base di confronto suggerito: False o Non definito
Azione necessaria
Controllare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
L'impossibilità di recuperare informazioni sulle prestazioni dell'host dall'interno del sistema operativo guest può impedire la risoluzione dei problemi.
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting

tools.guest.desktop.autolock

Blocca la sessione guest della macchina virtuale quando la console remota è disconnessa.

Il blocco delle macchine virtuali alla chiusura dell'ultima connessione alla console può impedire potenziali accessi non autorizzati da parte di utenti malintenzionati sfruttando sessioni di accesso alla console.

Valori
Valore predefinito dell'installazione: False
Valore suggerito per la base di confronto: True
Azione necessaria
Modificare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock
Esempio di correzione del comando tramite PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock | Remove-AdvancedSetting

Attivazione della crittografia per vMotion

Le macchine virtuali devono richiedere la crittografia per vMotion.

La richiesta di crittografia per vMotion nelle macchine virtuali garantisce il trasferimento sicuro dei dati. La crittografia predefinita "opportunistica" probabilmente comporta la crittografia a causa del supporto diffuso di AES-NI nell'hardware compatibile con vSphere. Tuttavia, l'applicazione della crittografia "obbligatoria" impedisce qualsiasi operazione non crittografata.

Valori
Valore predefinito di installazione: Opportunistica
Valore base di confronto suggerito: Obbligatorio
Azione necessaria
Modificare il valore predefinito dell'installazione.
Potenziale impatto funzionale se il valore predefinito viene modificato
Nessuno
Valutazione del comando tramite PowerCLI
(Get-VM -Name $VM).ExtensionData.Config.MigrateEncryption
Esempio di correzione del comando tramite PowerCLI
$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)