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 ( ).
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.
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.
- Potenziale impatto funzionale se il valore predefinito viene modificato
- Strumenti di rete legittimi, incluso NSX, potrebbero richiedere questa funzionalità.
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).
- 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.
- 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".
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.
- 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.
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.
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.
- 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 }
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.
- Valutazione del comando tramite PowerCLI
-
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
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.
- 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)
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
- 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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
- 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.
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.
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.
- 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)