一些 VMware Tools 设置可能会带来安全风险。例如,通过 VMware Tools,您可以将虚拟设备(如串行端口和并行端口)连接到虚拟机。已连接的设备可能是一个潜在的攻击通道。为尽可能地保护虚拟机并降低安全风险,请禁用容易受到安全威胁的 VMware Tools 功能。

有关在生产环境中安全部署 VMware vSphere 的完整信息(包括主机、虚拟机、管理组件和网络基础架构的安全建议),请参见《vSphere 强化指南》。VMware Tools 设置仅与部署的虚拟机方面相关。

虚拟机封装在少数文件中。其中一个重要的文件是配置文件(.vmx 文件)。该文件管理虚拟硬件和其他设置的性能。可以使用多种方法查看和修改配置设置:

  • 在文本编辑器中直接打开 .vmx 文件。

  • 使用 vSphere Web Client 编辑虚拟机设置。在 vSphere Web Client 中,编辑这些配置参数是虚拟机编辑设置对话框中的高级选项。

  • 使用 vSphere Client 编辑虚拟机设置。在 vSphere Client 中,编辑这些配置参数是虚拟机编辑设置对话框中的高级选项。

  • 使用基于 vSphere API 的工具(如 Power CLI)查看和修改 .vmx 参数。

编辑设置后,重新启动虚拟机后更改才能生效。

在虚拟机的 .vmx 文件中查看以下潜在安全威胁列表和相应要设置的 VMware Tools 参数。其中许多参数的默认值都已设置为保护虚拟机免受这些威胁。

与非特权用户帐户关联的威胁

磁盘压缩功能

压缩虚拟磁盘将回收未使用的磁盘空间。不具有 root 或管理员权限的用户和进程可以调用此过程。由于磁盘压缩进程需要大量的时间才能完成,因此,重复调用磁盘压缩过程会导致拒绝服务故障。在压缩过程中虚拟磁盘不可用。使用以下 .vmx 设置禁用磁盘压缩:

isolation.tools.diskWiper.disable = "TRUE"
isolation.tools.diskShrink.disable = "TRUE"

复制和粘贴功能

默认情况下,禁用复制和粘贴文本、图形和文件的功能,同样禁用拖放文件的功能。启用该功能后,可以从剪贴板中复制格式文本、图形和文件,并将其粘贴到虚拟机中的客户机操作系统,具体取决于 VMware 产品。即只要虚拟机的控制台窗口获得焦点,虚拟机中运行的非特权用户和进程均可以访问运行控制台窗口的计算机上的剪贴板。要避免与此功能关联的风险,请保留以下 .vmx 设置,这些设置可以禁用复制和粘贴功能:

isolation.tools.copy.disable = "TRUE"
isolation.tools.paste.disable = "TRUE"

与虚拟设备关联的威胁

连接和修改设备

默认情况下,禁用连接和断开连接设备的功能。启用该功能后,不具有 root 或管理员权限的用户和进程可以连接设备(如网络适配器和 CD-ROM 驱动器),还可以修改设备设置。即用户可以连接已断开连接的 CD-ROM 驱动器并访问留在驱动器中的介质上的敏感信息。用户也可以断开网络适配器连接,将虚拟机与其网络隔离,这样可以拒绝服务。要避免与此功能关联的风险,请保留以下 .vmx 设置,这些设置可以禁用连接和断开连接设备或修改设备设置的功能:

isolation.device.connectable.disable = "TRUE"
isolation.device.edit.disable = "TRUE"

与虚拟机信息流关联的威胁

配置虚拟机日志数量

根据日志设置,每当旧文件超过 100KB 时,可能会创建新的日志文件。如果数据存储磁盘空间不足,则不受控制的日志记录可以导致拒绝服务故障。VMware 建议保存 10 个日志文件。默认情况下,日志文件的最大大小为 100KB,您不能在虚拟机级别更改该值。可使用以下 .vmx 设置来设置日志文件的数量:

vmx.log.keepOld = "10"

可通过编辑 /etc/vmware/config 文件,限制主机上所有虚拟机的日志文件数量。如果文件中未定义 vmx.log.keepOld 属性,可以添加该属性。例如,要为各个虚拟机保留十个日志文件,请向 /etc/vmware/config 添加以下内容:

vmx.log.keepOld = "10"

还可以使用 PowerCLI 脚本更改主机所有虚拟机上的此属性。

一个更极端的策略是完全禁用虚拟机的日志记录。禁用日志记录使得故障排除具有挑战性及技术支持变得困难。不要考虑禁用日志记录,除非日志文件轮换方法存在不足之处。使用以下 .vmx 设置完全禁用日志记录:

logging = "FALSE"

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"