一些 VMware Tools 设置可能会带来安全风险。例如,通过 VMware Tools,您可以将虚拟设备(如串行端口和并行端口)连接到虚拟机。已连接的设备可能是一个潜在的攻击通道。为尽可能地保护虚拟机并降低安全风险,请禁用容易受到安全威胁的 VMware Tools 功能。
有关在生产环境中安全部署 VMware vSphere 的完整信息(包括主机、虚拟机、管理组件和网络连接基础架构的安全建议),请参见《vSphere 强化指南》。VMware Tools 设置仅与部署的虚拟机方面相关。
虚拟机封装在少数文件中。其中,配置文件(.vmx 文件)控制虚拟硬件的性能及其他设置。可以使用多种方法查看和修改配置设置:
使用 vSphere Web Client 编辑虚拟机设置。在 vSphere Web Client 中,编辑这些配置参数是虚拟机编辑设置对话框中的高级选项。
使用 vSphere Host Client 编辑虚拟机设置。在 vSphere Host Client 中,编辑这些配置参数是虚拟机编辑设置对话框中的高级选项。
使用基于 vSphere API 的工具(如 Power CLI)查看和修改 .vmx 参数。
编辑设置后,需要重新启动虚拟机,更改才能生效。
通过对要在虚拟机的 .vmx 文件中设置的相应 VMware Tools 参数进行适当的参数设置,可以消除多种潜在威胁。其中许多参数的默认值都已设置为保护虚拟机免受这些威胁。
与非特权用户帐户关联的威胁
与虚拟设备关联的威胁
-
连接和修改设备
-
默认情况下,禁用连接和断开连接设备的功能。启用该功能后,不具有 root 或管理员权限的用户和进程可以连接设备(如网络适配器和 CD-ROM 驱动器),还可以修改设备设置。也就是说,用户可以连接已断开连接的 CD-ROM 驱动器并访问该驱动器中的介质上的敏感信息。用户也可以断开网络适配器连接,将虚拟机与其网络隔离,这样可以拒绝服务。要避免与此功能关联的风险,请保留以下 .vmx 设置,这些设置可以禁用连接和断开连接设备或修改设备设置的功能:
isolation.device.connectable.disable = "TRUE" isolation.device.edit.disable = "TRUE"
与虚拟机信息流关联的威胁
-
VMX 文件大小
-
默认情况下,配置文件的大小限制为 1 MB,因为当数据存储磁盘空间不足时,不受控制的文件大小会导致拒绝服务故障。有时将信息性消息从虚拟机发送到 .vmx 文件。这些 setinfo 消息通过将名称-值对写入文件来定义虚拟机特性或标识符。如果文件中必须存储大量的自定义信息,则您可能需要增加文件大小。属性名称为 tools.setInfo.sizeLimit,可以指定其值(以千字节为单位)。保留以下 .vmx 设置:
tools.setInfo.sizeLimit = "1048576"
-
将性能计数器发送到 PerfMon
-
可以将 CPU 和内存的虚拟机性能计数器集成到 Linux 和 Microsoft Windows 客户机操作系统的 PerfMon 中。通过此功能,可以向客户机操作系统提供有关物理主机的详细信息。恶意用户可能会利用此信息对主机发起进一步的攻击。默认情况下禁用此功能。保留以下 .vmx 设置以阻止将主机信息发送到虚拟机:
tools.guestlib.enableHostInfo = "FALSE"
此设置阻止部分衡量指标,但非全部。如果将此属性设置为
FALSE,则会阻止以下衡量指标:GUESTLIB_HOST_CPU_NUM_CORES
GUESTLIB_HOST_CPU_USED_MS
GUESTLIB_HOST_MEM_SWAPPED_MB
GUESTLIB_HOST_MEM_SHARED_MB
GUESTLIB_HOST_MEM_USED_MB
GUESTLIB_HOST_MEM_PHYS_MB
GUESTLIB_HOST_MEM_PHYS_FREE_MB
GUESTLIB_HOST_MEM_KERN_OVHD_MB
GUESTLIB_HOST_MEM_MAPPED_MB
GUESTLIB_HOST_MEM_UNMAPPED_MB
-
vSphere 中未公开的可导致漏洞的功能
-
除 vSphere 以外,VMware 虚拟机还在多个 VMware 产品中运行,因此一些虚拟机参数不应用于 vSphere 环境中。虽然这些功能不显示在 vSphere 用户界面上,但禁用它们可减少客户机操作系统访问主机的途径。使用以下 .vmx 设置禁用这些功能:
isolation.tools.unity.push.update.disable = "TRUE" isolation.tools.ghi.launchmenu.change = "TRUE" isolation.tools.ghi.autologon.disable = "TRUE" isolation.tools.hgfsServerSet.disable = "TRUE" isolation.tools.memSchedFakeSampleStats.disable = "TRUE" isolation.tools.getCreds.disable = "TRUE"