Estos controles de seguridad proporcionan un conjunto de líneas base de prácticas recomendadas de seguridad para máquinas virtuales. Están estructurados de manera tal que se explican los beneficios y las compensaciones de la implementación del control. Para cambiar la configuración avanzada del sistema, puede utilizar la instancia de PowerCLI proporcionada o vSphere Client (Host > Configurar > Sistema > Configuración avanzada del sistema).

Variable utilizada

Los comandos de PowerCLI de esta sección utilizan la siguiente variable:

  • $VM = "virtual_machine_name"

mks.enable3d

Desactiva las funciones de gráficos 3D en máquinas virtuales que no las necesitan para reducir los vectores de ataque potenciales, lo que mejora la seguridad general del sistema.

Valores
Valor predeterminado de instalación: False
Valor sugerido de línea base: False
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d | Set-AdvancedSetting -Value FALSE

ethernet*.filter*.name

Limita el acceso a las máquinas virtuales a través de la API de red "dvFilter".

Herramientas como NSX utilizan la interfaz dvFilter para filtrar e inspeccionar el tráfico de red. Es posible que otras herramientas también la utilicen. Asegúrese de que esas herramientas estén autorizadas.

Valores
Valor predeterminado de instalación: no presente
Valor sugerido de línea base: no presente
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Es posible que las herramientas de red legítimas, incluyendo NSX, requieran esta funcionalidad.
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*"
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*" | Remove-AdvancedSetting

Evitar que las máquinas virtuales arranquen desde orígenes no autorizados

Las máquinas virtuales deben evitar el arranque desde orígenes no autorizados.

Puede producirse un acceso no autorizado a una máquina virtual cuando su volumen de arranque principal no está disponible y el firmware EFI busca orígenes de arranque alternativos, como el arranque de red. Esto se puede mitigar mediante controles de red, así como con los parámetros avanzados bios.bootDeviceClasses, bios.bootOrder y bios.hddOrder.

bios.bootDeviceClasses tiene el formato "allow:XXXX" o "deny:XXXX", donde XXXX es una lista de clases de arranque delimitada por comas. Las clases de arranque son: net (arranque PXE de red), USB (desde dispositivos USB conectados); pcmcia (tarjetas de expansión PCMCIA, no utilizadas actualmente); cd (desde dispositivos virtuales de CD/DVD conectados); HD (desde discos duros virtuales conectados); fd (desde dispositivos de disquete virtuales conectados); reservado (desde dispositivos desconocidos); efishell (en el shell de EFI); y all (todos), o any (cualquiera) (igual que "all").

El uso de permitir o denegar también establece implícitamente lo contrario. Por ejemplo:
  • deny:all no permite ninguna clase de arranque
  • deny:net no permite el arranque de red, pero permite el resto
  • allow:hd solo permite el arranque hd y niega el resto
  • allow:hd,cd permite el arranque del dispositivo desde hd y después desde cd, y niega el resto

Las máquinas virtuales nuevas podrían requerir el arranque desde CD/DVD. Algunos entornos dinámicos, como labs, podrían usar el arranque desde red. Configure esos entornos según corresponda y documente sus razones.

Valores
Valor predeterminado de instalación: allow:all
Valor sugerido de línea base: allow:hd (una vez instalado el sistema operativo invitado)
Acción necesaria
Modifique el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
La máquina virtual ya no puede arrancar desde orígenes no especificados, lo que puede afectar negativamente a situaciones en las que se requieren medios de recuperación o arranque desde PXE. No obstante, el parámetro puede cambiarse fácilmente a escala mediante PowerCLI. Un enfoque alternativo consiste en especificar métodos denegando, como "deny:net".
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses | Set-AdvancedSetting -Value "allow:hd"

RemoteDisplay.maxConnections

Limita la cantidad de conexiones de consola a una máquina virtual.

Limitar el uso compartido de la consola de la máquina virtual a un usuario evita que haya varios observadores, lo que mejora la seguridad. Sin embargo, esto podría crear inadvertidamente una vía potencial para la denegación de servicio.

Valores
Valor predeterminado de instalación: -1
Valor sugerido de línea base: 1
Acción necesaria
Modifique el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Podría crear una condición de denegación de servicio donde la consola es inutilizable porque el único usuario está conectado, o persiste una sesión de consola desconectada. Otros productos, como VMware Cloud Director, pueden requerir que establezca esta opción en un valor mayor.
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections | Set-AdvancedSetting -Value 1

Limitar la funcionalidad de acceso directo de dispositivos PCI

Las máquinas virtuales deben limitar la funcionalidad de acceso directo del dispositivo PCI.

Las características de E/S de DirectPath permiten que las máquinas virtuales accedan directamente al hardware del sistema, lo que afecta a las herramientas de mitigación de riesgos, como vMotion, DRS y High Availability. Las funciones de E/S de DirectPath también ofrecen potencialmente a los atacantes acceso privilegiado al hardware. Asegúrese de que solo las máquinas virtuales necesarias tengan este privilegio, compensándolo con controles de seguridad del sistema operativo invitado.

Valores
Valor predeterminado de instalación: no presente
Valor sugerido de línea base: no presente
Acción necesaria
Auditoría
Impacto funcional potencial si se cambia el valor predeterminado
Los dispositivos de acceso directo, como las GPU, se verían afectados de forma negativa si se desconectan. Audite y documente la necesidad empresarial de estas máquinas virtuales.
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-PassthroughDevice
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-PassthroughDevice | Remove-PassthroughDevice

Quitar dispositivos de hardware virtual de máquina virtual innecesarios

Las máquinas virtuales deben eliminar el hardware virtual innecesario.

Para reducir las posibles fuentes de ataque, elimine el hardware virtual innecesario de las máquinas virtuales. Los puertos poco utilizados, las unidades de CD/DVD temporales y el hardware introducido por las migraciones podrían ser vulnerables. Si se eliminan, disminuye el riesgo de introducción de software o de exfiltración de datos de un entorno protegido.

Valores
Valor predeterminado de instalación: configurado
Valor sugerido de línea base: no presente
Acción necesaria
Modifique el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
La eliminación del dispositivo de CD-ROM puede afectar a la instalación y el mantenimiento de VMware Tools. La eliminación de las controladoras XHCI puede afectar a la conectividad de teclado y mouse de la consola en algunos sistemas operativos invitados.
Evaluación mediante comandos de 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
}
Ejemplo de corrección mediante un comando de PowerCLI
N/C
Establecer la ubicación en vSphere Client
Máquina virtual > Editar configuración > Hardware virtual

tools.guestlib.enableHostInfo

Impide que las máquinas virtuales obtengan información del host acerca del hipervisor.

Evitar que las máquinas virtuales obtengan información del host acerca del hipervisor reduce el riesgo de ataques avanzados, ya que niega a los adversarios detalles cruciales sobre el host físico.

Valores
Valor predeterminado de instalación: False
Valor sugerido de línea base: Falso o no definido
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting
Establecer la ubicación en vSphere Client
N/A. Este es un ajuste de archivo VMX.

Establecer cifrado para Fault Tolerance

Las máquinas virtuales deben requerir cifrado para Fault Tolerance.

Requerir cifrado para Fault Tolerance en las máquinas virtuales garantiza una transmisión de datos segura. Si bien el cifrado "oportunista" predeterminado probablemente da como resultado el cifrado debido a la compatibilidad omnipresente de AES-NI en el hardware compatible con vSphere, forzar cifrado "requerido" garantiza que no haya operaciones sin cifrar.

Valores
Valor predeterminado de instalación: ftEncryptionOpportunistic
Valor sugerido de línea base: ftEncryptionRequired
Acción necesaria
Modifique el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
(Get-VM -Name $VM).ExtensionData.Config.FtEncryptionMode
Ejemplo de corrección mediante un comando de 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)
Establecer la ubicación en vSphere Client
Máquina virtual > Editar ajustes > Opciones de máquina virtual > Cifrado

isolation.tools.copy.disable

Desactiva las operaciones de copia de la consola en las máquinas virtuales.

Desactivar las operaciones de copia de la consola en las máquinas virtuales impide la copia de datos entre la máquina virtual y el cliente local, independientemente de si el usuario accede a través de Web Console, VMRC u otro método.

Valores
Valor predeterminado de instalación: True
Valor sugerido de línea base: True o Undefined
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable | Remove-AdvancedSetting

isolation.tools.paste.disable

Desactiva las operaciones de pegado de la consola en las máquinas virtuales.

Al deshabilitar las operaciones de pegado de la consola en las máquinas virtuales, se bloquea la transferencia de datos del cliente local a la máquina virtual, independientemente de si el usuario utiliza la consola web, VMRC u otra consola.

Valores
Valor predeterminado de instalación: True
Valor sugerido de línea base: True o Undefined
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable | Remove-AdvancedSetting

isolation.tools.diskShrink.disable

Desactiva la reducción de discos virtuales en las máquinas virtuales.

Deshabilitar la reducción de discos virtuales en máquinas virtuales ayuda a evitar problemas de falta de disponibilidad de los discos. La capacidad de realizar esta operación suele estar limitada para los usuarios no administrativos en el entorno invitado.

Valores
Valor predeterminado de instalación: True
Valor sugerido de línea base: True o Undefined
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable | Remove-AdvancedSetting

isolation.tools.diskWiper.disable

Desactiva las operaciones de borrado de discos virtuales en las máquinas virtuales.

Deshabilitar el borrado de discos virtuales en las máquinas virtuales ayuda a evitar problemas de falta de disponibilidad de los discos. La capacidad de realizar esta operación suele estar limitada para los usuarios no administrativos en el entorno invitado.

Valores
Valor predeterminado de instalación: True
Valor sugerido de línea base: True o Undefined
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable | Remove-AdvancedSetting

isolation.device.connectable.disable

Evita que las máquinas virtuales eliminen, conecten y modifiquen dispositivos sin autorización.

Evitar las modificaciones de dispositivos no autorizadas en máquinas virtuales impide que los usuarios o procesos que no sean administrativos conecten o desconecten dispositivos o cambien su configuración. Esta medida limita el acceso no autorizado y la interrupción de las operaciones, lo que reduce los riesgos de denegación de servicio, así como algunas vías para exfiltrar datos.

Valores
Valor predeterminado de instalación: True
Valor sugerido de línea base: True o Undefined
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable | Remove-AdvancedSetting

isolation.tools.dnd.disable

Desactiva las operaciones de arrastrar y soltar en las consolas de máquinas virtuales.

La desactivación de las operaciones de arrastrar y soltar en la consola de una máquina virtual impide que los usuarios transfieran datos entre la máquina virtual y el cliente local, independientemente del tipo de consola, lo que mejora la seguridad de los datos.

Valores
Valor predeterminado de instalación: True
Valor sugerido de línea base: True o Undefined
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable | Remove-AdvancedSetting

tools.setInfo.sizeLimit

Limita los mensajes informativos que se transmiten de la máquina virtual al archivo VMX.

La limitación de los mensajes informativos de la máquina virtual al archivo VMX evita que se supere el tamaño predeterminado de 1 MB. Esta opción evita posibles situaciones de denegación de servicio que podrían surgir si el almacén de datos se llena.

Valores
Valor predeterminado de instalación: 1048576
Valor sugerido de línea base: 1048576 o no definido
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit | Remove-AdvancedSetting

Activar el registro

Las máquinas virtuales deben activar el registro de diagnóstico.

El registro de diagnóstico de las máquinas virtuales sirve de ayuda para los análisis forenses y la solución de problemas.

Valores
Valor predeterminado de instalación: True
Valor sugerido de línea base: true
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Where {$_.ExtensionData.Config.Flags.EnableLogging -ne "True"}
Ejemplo de corrección mediante un comando de 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 la cantidad de registros de diagnóstico de máquinas virtuales retenidos.

Al restringir la cantidad de registros de diagnóstico retenidos, se evita llenar el almacén de datos sin comprometer la funcionalidad de diagnóstico.

Valores
Valor predeterminado de instalación: 10
Valor sugerido de línea base: 10 o no definido
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld | Remove-AdvancedSetting

log.rotateSize

Limita el tamaño de los registros de diagnóstico de las máquinas virtuales.

Limitar el tamaño de los registros de diagnóstico en las máquinas virtuales evita un consumo de espacio excesivo, particularmente en máquinas virtuales de larga ejecución. El límite mínimo recomendado es de 2 MB.

Valores
Valor predeterminado de instalación: 2048000
Valor sugerido de línea base: 2048000 o no definido
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize | Remove-AdvancedSetting

tools.guestlib.enableHostInfo

Desactiva la capacidad de enviar información del host a los invitados.

Al configurar una máquina virtual para obtener información detallada sobre el host físico, un atacante podría utilizar esta información para perpetrar futuros ataques contra el host. Dado que el valor predeterminado es el estado deseado, puede realizar una auditoría comprobando que esta opción no esté establecida o bien, si lo está, que está establecida en False.

Valores
Valor predeterminado de instalación: False
Valor sugerido de línea base: Falso o No definido
Acción necesaria
Audite el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
La imposibilidad de recuperar información de rendimiento sobre el host desde el sistema operativo invitado podría dificultar la solución de problemas.
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting

tools.guest.desktop.autolock

Bloquea la sesión de invitado de la máquina virtual cuando se desconecta la consola remota.

Bloquear las máquinas virtuales cuando se cierra la última conexión de la consola puede impedir el acceso no autorizado de atacantes que aprovechan las sesiones iniciadas de la consola.

Valores
Valor predeterminado de instalación: False
Valor sugerido de línea base: true
Acción necesaria
Modifique el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock
Ejemplo de corrección mediante un comando de PowerCLI
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock | Remove-AdvancedSetting

Activar el cifrado para vMotion

Las máquinas virtuales deben requerir cifrado para vMotion.

Requerir cifrado para vMotion en las máquinas virtuales garantiza una transferencia de datos segura. El cifrado "oportunista" predeterminado probablemente da como resultado el cifrado debido a la compatibilidad generalizada de AES-NI en el hardware compatible con vSphere. No obstante, forzar el cifrado "obligatorio" evita las operaciones sin cifrar.

Valores
Valor predeterminado de instalación: Oportunista
Valor sugerido de línea base: Obligatorio
Acción necesaria
Modifique el valor predeterminado de la instalación.
Impacto funcional potencial si se cambia el valor predeterminado
Ninguno
Evaluación mediante comandos de PowerCLI
(Get-VM -Name $VM).ExtensionData.Config.MigrateEncryption
Ejemplo de corrección mediante un comando de 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)