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 ( ).
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.
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.
- Impacto funcional potencial si se cambia el valor predeterminado
- Es posible que las herramientas de red legítimas, incluyendo NSX, requieran esta funcionalidad.
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").
- 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.
- 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".
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.
- 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.
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.
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.
- 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 }
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.
- Evaluación mediante comandos de PowerCLI
-
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
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.
- 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)
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
- 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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
- 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.
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.
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.
- 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)