Ces contrôles de sécurité fournissent un ensemble de lignes de base de meilleures pratiques en matière de sécurité des machines virtuelles. Ils sont structurés de manière à expliquer les avantages et les contreparties de la mise en œuvre du contrôle. Pour modifier les paramètres système avancés, vous pouvez utiliser l'instance de PowerCLI fournie ou le vSphere Client (Hôte > Configurer > Système > Paramètres système supplémentaires).

Variable utilisée

Les commandes PowerCLI de cette section utilisent la variable suivante :

  • $VM = « virtual_machine_name »

mks.enable3d

Désactive les fonctions graphiques 3D sur les machines virtuelles qui n'en ont pas besoin pour réduire les vecteurs d'attaque potentiels, améliorant ainsi la sécurité globale du système.

Valeurs
Valeur par défaut de l'installation : False
Valeur suggérée pour la ligne de base : False
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d | Set-AdvancedSetting -Value FALSE

ethernet*.filter*.name

Limite l'accès aux machines virtuelles via l'API réseau « dvFilter ».

L'interface dvFilter est utilisée par des outils tels que NSX pour filtrer et inspecter le trafic réseau. D'autres outils peuvent également l'utiliser. Assurez-vous que ces outils sont autorisés.

Valeurs
Valeur d'installation par défaut : Absente
Valeur suggérée de la ligne de base : Absente
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Les outils réseau légitimes, y compris NSX, peuvent nécessiter cette fonctionnalité.
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*"
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*" | Remove-AdvancedSetting

Empêcher les machines virtuelles de démarrer à partir de sources non autorisées

Les machines virtuelles doivent empêcher le démarrage à partir de sources non autorisées.

Un accès non autorisé à une machine virtuelle peut se produire lorsque son volume de démarrage principal n'est pas disponible et que le microprogramme EFI recherche d'autres sources de démarrage, telles que le démarrage réseau. Ce problème peut être atténué par des contrôles réseau, ainsi qu'avec les paramètres avancés bios.bootDeviceClasses, bios.bootOrder et bios.hddOrder.

bios.bootDeviceClasses a le format « allow XXXX » ou « deny:XXXX », où XXXX est une liste de classes de démarrage séparées par des virgules. Les classes de démarrage sont net (démarrage PXE réseau), usb (à partir de périphériques USB connectés), pcmcia (cartes d'extension PCMCIA, non utilisées actuellement), cd (à partir de périphériques CD/DVD virtuels connectés), hd (à partir de disques durs virtuels attachés), fd (à partir de lecteurs de disquettes virtuels connectés), réservé (à partir de périphériques inconnus), efishell (dans le shell EFI) et toutes, ou n'importe laquelle de ces classes (identiques à tous).

Les règles allow ou deny indiquent implicitement le contraire. Par exemple :
  • deny:all interdit toutes les classes de démarrage
  • deny:net interdit le démarrage réseau, mais autorise tous les autres
  • allow:hd autorise uniquement le démarrage hd et refuse tous les autres
  • allow:hd, cd autorise le démarrage de périphérique hd puis cd et refuse tous les autres

Les nouvelles machines virtuelles peuvent nécessiter un démarrage sur CD/DVD, et certains environnements dynamiques, tels que les laboratoires, peuvent utiliser le démarrage réseau. Définissez ces environnements en conséquence et documentez votre justification.

Valeurs
Valeur d'installation par défaut : allow:all
Valeur suggérée de la ligne de base : allow:hd (une fois que le système d'exploitation invité est installé)
Action nécessaire
Modifiez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
La machine virtuelle ne peut plus démarrer à partir de sources non spécifiées, ce qui peut avoir un impact négatif sur les situations où un support de démarrage ou de récupération PXE est requis. Cependant, le paramètre est facilement modifié à l'échelle via PowerCLI. Une autre approche consiste à spécifier des méthodes bloquées, telles que « deny:net ».
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses | Set-AdvancedSetting -Value "allow:hd"

RemoteDisplay.maxConnections

Limite le nombre de connexions de consoles à une machine virtuelle.

La limitation du partage de console de machine virtuelle à un seul utilisateur empêche plusieurs observateurs, améliorant ainsi la sécurité. Toutefois, cela peut créer par inadvertance une voie potentielle de déni de service.

Valeurs
Valeur d'installation par défaut : -1
Valeur suggérée pour la ligne de base : 1
Action nécessaire
Modifiez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Peut créer une condition de déni de service dans laquelle la console est inutilisable, car un utilisateur est connecté ou une session de console déconnectée persiste. D'autres produits, tels que VMware Cloud Director, peuvent nécessiter que vous définissiez cette option sur une valeur supérieure.
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections | Set-AdvancedSetting -Value 1

Limiter la fonctionnalité de relais de périphérique PCI

Les machines virtuelles doivent limiter la fonctionnalité de relais de périphérique PCI.

Les fonctionnalités d'E/S DirectPath permettent aux machines virtuelles d'accéder directement au matériel système, ce qui affecte les outils d'atténuation des risques tels que vMotion, DRS et High Availability. Les fonctionnalités d'E/S DirectPath offrent également aux pirates un accès privilégié au matériel. Assurez-vous que seules les machines virtuelles nécessaires disposent de ce privilège, en compensant les contrôles de sécurité du système d'exploitation invité.

Valeurs
Valeur d'installation par défaut : Absente
Valeur suggérée de la ligne de base : Absente
Action nécessaire
Audit
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Les périphériques de relais, tels que les GPU, sont affectés négativement s'ils sont déconnectés. Auditez et documentez les besoins de l'entreprise pour ces machines virtuelles.
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-PassthroughDevice
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-PassthroughDevice | Remove-PassthroughDevice

Supprimer les périphériques de matériel virtuel inutiles des machines virtuelles

Les machines virtuelles doivent supprimer le matériel virtuel inutile.

Pour réduire les surfaces d'attaque potentielles, éliminez le matériel virtuel inutile des machines virtuelles. Les ports rarement utilisés, les lecteurs de CD/DVD temporaires et le matériel introduit par les migrations peuvent être vulnérables. Leur suppression diminue le risque d'introduction de logiciels ou d'exfiltration de données à partir d'un environnement protégé.

Valeurs
Valeur d'installation par défaut : Configurée
Valeur suggérée de la ligne de base : Absente
Action nécessaire
Modifiez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
La suppression du lecteur de CD-ROM peut avoir un impact sur l'installation et la maintenance de VMware Tools. La suppression des contrôleurs XHCI peut affecter la connectivité du clavier et de la souris de la console pour certains systèmes d'exploitation invités.
Évaluation de la commande 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
}
Exemple de correction de la commande PowerCLI
S.O.
Emplacement du paramètre dans vSphere Client
Machine virtuelle > Modifier les paramètres > Matériel virtuel

tools.guestlib.enableHostInfo

Empêche les machines virtuelles d'obtenir des informations sur l'hôte concernant l'hyperviseur.

Empêcher les machines virtuelles d'obtenir des informations sur l'hôte concernant l'hyperviseur réduit le risque d'attaques avancées, car cela permet de refuser aux adversaires des détails cruciaux sur l'hôte physique.

Valeurs
Valeur par défaut de l'installation : False
Valeur suggérée de la ligne de base : False ou non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting
Emplacement du paramètre dans vSphere Client
S/O. Il s'agit d'un paramètre de fichier VMX.

Définir le chiffrement pour Fault Tolerance

Les machines virtuelles doivent nécessiter un chiffrement pour Fault Tolerance.

L'exigence du chiffrement pour la tolérance aux pannes dans les machines virtuelles garantit la sécurité de la transmission des données. Alors que le chiffrement « opportuniste » par défaut entraîne probablement un chiffrement en raison de la prise en charge omniprésente d'AES-NI dans le matériel compatible avec vSphere, l'application d'un chiffrement « requis » garantit qu'aucune opération non chiffrée n'est garantie.

Valeurs
Valeur d'installation par défaut : ftEncryptionOpportunistic
Valeur suggérée de la ligne de base : ftEncryptionRequired
Action nécessaire
Modifiez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
(Get-VM -Name $VM).ExtensionData.Config.FtEncryptionMode
Exemple de correction de la commande 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)
Emplacement du paramètre dans vSphere Client
Machine virtuelle > Modifier les paramètres > Options de VM > Chiffrement

isolation.tools.copy.disable

Désactive les opérations de copie de console sur les machines virtuelles.

La désactivation des opérations de copie de console sur les machines virtuelles empêche la copie des données entre la machine virtuelle et le client local, que l'utilisateur accède ou non via la console Web, VMRC ou une autre méthode.

Valeurs
Valeur par défaut de l'installation : True
Valeur suggérée de la ligne de base : True ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable | Remove-AdvancedSetting

isolation.tools.paste.disable

Désactive les opérations de collage de la console sur les machines virtuelles.

En désactivant les opérations de collage de console sur les machines virtuelles, le transfert de données du client local vers la machine virtuelle est bloqué, que l'utilisateur utilise la console Web, VMRC ou une autre console.

Valeurs
Valeur par défaut de l'installation : True
Valeur suggérée de la ligne de base : True ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable | Remove-AdvancedSetting

isolation.tools.diskShrink.disable

Désactive la réduction de disque virtuel sur les machines virtuelles.

La désactivation de la réduction de disque virtuel sur les machines virtuelles permet d'éviter les problèmes d'indisponibilité du disque. La capacité d'effectuer cette opération est généralement limitée pour les utilisateurs non administratifs dans l'environnement invité.

Valeurs
Valeur par défaut de l'installation : True
Valeur suggérée de la ligne de base : True ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable | Remove-AdvancedSetting

isolation.tools.diskWiper.disable

Désactive les opérations d'effacement de disque virtuel sur les machines virtuelles.

La désactivation de l'effacement du disque virtuel sur les machines virtuelles permet d'éviter les problèmes d'indisponibilité du disque. La capacité d'effectuer cette opération est généralement limitée pour les utilisateurs non administratifs dans l'environnement invité.

Valeurs
Valeur par défaut de l'installation : True
Valeur suggérée de la ligne de base : True ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable | Remove-AdvancedSetting

isolation.device.connectable.disable

Empêche les machines virtuelles de supprimer, de connecter et de modifier des périphériques non autorisés.

La prévention des modifications non autorisées des périphériques dans des blocs de machines virtuelles empêche les utilisateurs ou les processus non administratifs de se connecter, de se déconnecter ou d'ajuster les paramètres des périphériques. Cette mesure limite l'accès non autorisé et les interruptions de fonctionnement, ce qui réduit les risques de déni de service, ainsi que certaines possibilités d'exfiltrage des données.

Valeurs
Valeur par défaut de l'installation : True
Valeur suggérée de la ligne de base : True ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable | Remove-AdvancedSetting

isolation.tools.dnd.disable

Désactive les opérations de glisser-déposer sur les consoles de machine virtuelle.

La désactivation des opérations de glisser-déposer dans la console d'une machine virtuelle empêche les utilisateurs de transférer des données entre la machine virtuelle et le client local, quel que soit le type de console, améliorant ainsi la sécurité des données.

Valeurs
Valeur par défaut de l'installation : True
Valeur suggérée de la ligne de base : True ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable | Remove-AdvancedSetting

tools.setInfo.sizeLimit

Limite les messages d'information transmis de la machine virtuelle au fichier VMX.

Limiter les messages d'information d'une machine virtuelle au fichier VMX l'empêche de dépasser sa taille par défaut de 1 Mo. Cette option empêche d'éventuelles situations de déni de service qui peuvent se produire si la banque de données est saturée.

Valeurs
Valeur d'installation par défaut : 1048576
Valeur de ligne de base suggérée : 1048576 ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit | Remove-AdvancedSetting

Activer la journalisation

Les machines virtuelles doivent activer la journalisation de diagnostic.

La journalisation des diagnostics pour les machines virtuelles facilite les analyses et le dépannage.

Valeurs
Valeur par défaut de l'installation : True
Valeur suggérée pour la ligne de base : True
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Where {$_.ExtensionData.Config.Flags.EnableLogging -ne "True"}
Exemple de correction de la commande 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

Limite le nombre de journaux de diagnostic de machine virtuelle conservés.

En limitant la quantité de journaux de diagnostic conservés, vous évitez de remplir la banque de données sans compromettre la fonctionnalité de diagnostic.

Valeurs
Valeur d'installation par défaut : 10
Valeur suggérée de la ligne de base : 10 ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld | Remove-AdvancedSetting

log.rotateSize

Limite la taille des journaux de diagnostic de machine virtuelle.

La limitation de la taille des journaux de diagnostics sur les machines virtuelles empêche une consommation excessive d'espace, en particulier sur les machines virtuelles au long cours. La limite minimale recommandée est de 2 Mo.

Valeurs
Valeur d'installation par défaut : 2048000
Valeur suggérée de la ligne de base : 2048000 ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize | Remove-AdvancedSetting

tools.guestlib.enableHostInfo

Désactive la possibilité d'envoyer des informations sur l'hôte aux invités.

En configurant une machine virtuelle pour obtenir des informations détaillées sur l'hôte physique, un adversaire pourrait potentiellement utiliser ces informations pour signaler d'autres attaques sur l'hôte. Comme la valeur par défaut est l'état souhaité, vous pouvez effectuer un audit en vérifiant que ce paramètre n'est pas défini ou, s'il est défini, qu'il est défini sur False.

Valeurs
Valeur par défaut de l'installation : False
Valeur suggérée de la ligne de base : False ou Non défini
Action nécessaire
Contrôlez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
L'impossibilité de récupérer les informations de performance sur l'hôte à l'intérieur du système d'exploitation invité peut entraver le dépannage.
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting

tools.guest.desktop.autolock

Verrouille la session d'invité de la machine virtuelle lorsque la console distante est déconnectée.

Le verrouillage de machines virtuelles à la fermeture de la dernière connexion de la console peut empêcher un accès non autorisé potentiel des pirates exploitant des sessions de console connectées.

Valeurs
Valeur par défaut de l'installation : False
Valeur suggérée pour la ligne de base : True
Action nécessaire
Modifiez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock
Exemple de correction de la commande PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock | Remove-AdvancedSetting

Activer le chiffrement pour vMotion

Les machines virtuelles doivent nécessiter un chiffrement pour vMotion.

L'exigence du chiffrement pour vMotion dans les machines virtuelles garantit un transfert de données sécurisé. Le chiffrement « opportuniste » par défaut entraîne probablement un chiffrement en raison de la prise en charge étendue d'AES-NI dans le matériel compatible avec vSphere. Toutefois, l'application d'un chiffrement « requis » empêche toute opération non chiffrée.

Valeurs
Valeur d'installation par défaut : Opportuniste
Valeur suggérée de la ligne de base : Requis
Action nécessaire
Modifiez la valeur par défaut de l'installation.
Incidence fonctionnelle potentielle si la valeur par défaut est modifiée
Aucun
Évaluation de la commande PowerCLI
(Get-VM -Name $VM).ExtensionData.Config.MigrateEncryption
Exemple de correction de la commande 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)