這些安全性控制提供了一組基礎的虛擬機器安全性最佳做法。它們的結構化方式說明了實作控制的優勢和權衡。若要變更進階系統設定,您可以使用提供的 PowerCLI 或 vSphere Client (主機 > 設定 > 系統 > 進階系統設定)。

使用的變數

本節中的 PowerCLI 命令使用以下變數:

  • $VM = "virtual_machine_name"

mks.enable3d

在不需要 3D 圖形功能的虛擬機器上停用這些功能以減少潛在攻擊向量,從而增強整體系統安全性。

安裝預設值:False
基準建議值:False
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting mks.enable3d | Set-AdvancedSetting -Value FALSE

ethernet*.filter*.name

限制透過「dvFilter」網路 API 存取虛擬機器。

NSX 等工具使用 dvFilter 介面篩選和檢查網路流量。其他工具也可能使用該介面。確保這些工具已獲得授權。

安裝預設值:不存在
基準建議值:不存在
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
包括 NSX 在內的合法網路工具可能需要此功能。
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*"
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting "ethernet*.filter*.name*" | Remove-AdvancedSetting

防止虛擬機器從未經授權的來源開機

虛擬機器必須防止從未經授權的來源開機。

如果虛擬機器的主要開機磁碟區不可用,並且 EFI 韌體會尋求備用開機來源 (例如網路開機),則可能會對虛擬機器進行未經授權的存取。可以透過網路控制以及進階參數 bios.bootDeviceClassesbios.bootOrderbios.hddOrder 緩解此問題。

bios.bootDeviceClasses 的格式為「allow:XXXX」或「deny:XXXX」,其中 XXXX 是開機類別的逗號分隔清單。開機類別包括 net (網路 PXE 開機)、usb (從連結的 USB 裝置);pcmcia (PCMCIA 擴充卡,目前未使用);cd (從連結的虛擬 CD/DVD 裝置);hd (從連結的虛擬硬碟);fd (從連結的虛擬軟碟機裝置);reserved (來自未知裝置);efishell (進入 EFI shell);以及 all 或 any (與 all 相同)。

使用 allow 或 deny 也會隱式表示相反。例如:
  • deny:all 不允許所有開機類別
  • deny:net 不允許網路開機,但允許所有其他開機
  • allow:hd 僅允許 hd 開機,並拒絕所有其他開機
  • allow:hd,cd 允許 hd 然後 cd 裝置開機,並拒絕所有其他開機

新虛擬機器可能需要 CD/DVD 開機,而某些動態環境 (例如實驗室) 可能會使用網路開機。相應地設定這些環境並記錄您的理由。

安裝預設值:allow:all
基準建議值:allow:hd (安裝客體作業系統後)
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
虛擬機器無法再從未指定的來源開機,這可能會對需要 PXE 開機或復原媒體的情況產生負面影響。但是,可以透過 PowerCLI 輕鬆地大規模變更參數。另一種方法是指定拒絕的方法,例如「deny:net」。
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting bios.bootDeviceClasses | Set-AdvancedSetting -Value "allow:hd"

RemoteDisplay.maxConnections

限制主控台與虛擬機器的連線數。

將虛擬機器主控台共用限制為一個使用者可防止多個觀測器,從而提高安全性。但是,這可能會無意中為服務拒絕帶來潛在途徑。

安裝預設值:-1
基準建議值:1
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
可能會造成由於連線了一個使用者或持續存在中斷連線的主控台工作階段而導致主控台不可用的拒絕服務狀況。其他產品 (例如 VMware Cloud Director) 可能需要將此選項設定為更大的值。
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting RemoteDisplay.maxConnections | Set-AdvancedSetting -Value 1

限制 PCI 裝置傳遞功能

虛擬機器必須限制 PCI 裝置傳遞功能。

DirectPath I/O 功能使虛擬機器可以直接存取系統硬體,從而影響 vMotion、DRS 和 High Availability 等風險緩解工具。DirectPath I/O 功能還可能會為攻擊者授與具有特殊權限的硬體存取。確保只有必要的虛擬機器才具有此權限,從而透過客體作業系統安全性控制進行補償。

安裝預設值:不存在
基準建議值:不存在
需要執行的動作
稽核
預設值已變更時的潛在功能影響
如果傳遞裝置 (例如 GPU) 中斷連線,這些裝置將受到負面影響。稽核並記錄這些虛擬機器的業務需求。
PowerCLI 命令評估
Get-VM -Name $VM | Get-PassthroughDevice
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-PassthroughDevice | Remove-PassthroughDevice

移除不必要的虛擬機器虛擬硬體裝置

虛擬機器必須移除不必要的虛擬硬體。

若要縮小潛在受攻擊面,請從虛擬機器中消除不必要的虛擬硬體。移轉引入的很少使用的連接埠、臨時 CD/DVD 光碟機和硬體可能易受攻擊。移除它們可降低從受保護環境中引入軟體或資料外流風險。

安裝預設值:已設定
基準建議值:不存在
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
移除 CD-ROM 裝置可能會影響 VMware Tools 安裝和維護。移除 XHCI 控制器可能會影響某些客體作業系統的主控台鍵盤和滑鼠連線。
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
}
PowerCLI 命令修復範例
不適用
vSphere Client 中設定位置
虛擬機器 > 編輯設定 > 虛擬硬體

tools.guestlib.enableHostInfo

防止虛擬機器取得有關 Hypervisor 的主機資訊。

防止虛擬機器取得有關 Hypervisor 的主機資訊可降低進階攻擊風險,因為它會拒絕對手有關實體主機的關鍵詳細資料。

安裝預設值:False
基準建議值:False 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting
vSphere Client 中設定位置
不適用。這是 VMX 檔案設定。

設定 Fault Tolerance 加密

虛擬機器必須要求對 Fault Tolerance 進行加密。

要求對虛擬機器中的 Fault Tolerance 進行加密可確保資料傳輸安全。雖然預設的「隨機」加密可能會由於 vSphere 相容硬體中無處不在的 AES-NI 支援而導致加密,但強制執行「必要」加密可確保不會執行未加密作業。

安裝預設值:ftEncryptionOpportunistic
基準建議值:ftEncryptionRequired
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
(Get-VM -Name $VM).ExtensionData.Config.FtEncryptionMode
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)
vSphere Client 中設定位置
虛擬機器 > 編輯設定 > 虛擬機器選項 > 加密

isolation.tools.copy.disable

在虛擬機器上停用主控台複製作業。

在虛擬機器上停用主控台複製作業可防止在虛擬機器和本機用戶端之間複製資料,而無論使用者是透過 Web 主控台、VMRC 還是其他方法進行存取。

安裝預設值:True
基準建議值:True 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.copy.disable | Remove-AdvancedSetting

isolation.tools.paste.disable

在虛擬機器上停用主控台貼上作業。

透過在虛擬機器上停用主控台貼上作業,將阻止執行從本機用戶端到虛擬機器的資料傳輸,而無論使用者使用的是 Web 主控台、VMRC 還是其他主控台。

安裝預設值:True
基準建議值:True 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.paste.disable | Remove-AdvancedSetting

isolation.tools.diskShrink.disable

在虛擬機器上停用虛擬磁碟壓縮。

在虛擬機器上停用虛擬磁碟壓縮有助於避免出現磁碟不可用問題。對於客體環境中的非管理使用者,執行此作業的能力通常會受限。

安裝預設值:True
基準建議值:True 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskShrink.disable | Remove-AdvancedSetting

isolation.tools.diskWiper.disable

在虛擬機器上停用虛擬磁碟抹除作業。

在虛擬機器上停用虛擬磁碟抹除有助於避免出現磁碟不可用問題。對於客體環境中的非管理使用者,執行此作業的能力通常會受限。

安裝預設值:True
基準建議值:True 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.diskWiper.disable | Remove-AdvancedSetting

isolation.device.connectable.disable

防止虛擬機器未經授權移除、連線和修改裝置。

防止虛擬機器中未經授權的裝置修改會阻止非管理使用者或程序連線、中斷連線或調整裝置設定。該措施可抑制未經授權的存取和作業中斷,從而降低拒絕服務風險,並減少一些資料外流的途徑。

安裝預設值:True
基準建議值:True 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting isolation.device.connectable.disable | Remove-AdvancedSetting

isolation.tools.dnd.disable

在虛擬機器主控台上停用拖放作業。

無論主控台類型為何,在虛擬機器主控台中停用拖放作業都會阻止使用者在虛擬機器和本機用戶端之間傳輸資料,從而增強資料安全性。

安裝預設值:True
基準建議值:True 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting isolation.tools.dnd.disable | Remove-AdvancedSetting

tools.setInfo.sizeLimit

限制從虛擬機器傳遞到 VMX 檔案的資訊訊息。

將虛擬機器資訊訊息限制到 VMX 檔案可防止其超過其預設大小 1 MB。此選項可防止在資料存放區變滿時可能出現的潛在拒絕服務情況。

安裝預設值:1048576
基準建議值:1048576 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting tools.setInfo.sizeLimit | Remove-AdvancedSetting

啟用記錄

虛擬機器必須啟用診斷記錄。

虛擬機器的診斷記錄有助於鑑識和疑難排解。

安裝預設值:True
基準建議值:True
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Where {$_.ExtensionData.Config.Flags.EnableLogging -ne "True"}
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

限制保留的虛擬機器診斷記錄數目。

透過限制保留的診斷記錄數目,可以避免在不影響診斷功能的情況下填滿資料存放區。

安裝預設值:10
基準建議值:10 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting log.keepOld | Remove-AdvancedSetting

log.rotateSize

限制虛擬機器診斷記錄的大小。

限制虛擬機器上的診斷記錄大小可防止空間耗用量過大,尤其是在長時間執行的虛擬機器上。建議的最小限制為 2 MB。

安裝預設值:2048000
基準建議值:2048000 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting log.rotateSize | Remove-AdvancedSetting

tools.guestlib.enableHostInfo

停用向客體傳送主機資訊的功能。

透過將虛擬機器設定為取得有關實體主機的詳細資訊,對手可能會利用該資訊來通知對主機的進一步攻擊。由於預設值是所需狀態,您可以透過以下方法進行稽核:確認此設定未設定,或者如果已設定,則其設定為 False。

安裝預設值:False
基準建議值:False 或未定義
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
無法從客體作業系統內部擷取有關主機的效能資訊可能會妨礙疑難排解。
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting tools.guestlib.enableHostInfo | Remove-AdvancedSetting

tools.guest.desktop.autolock

在遠端主控台中斷連線時鎖定虛擬機器客體工作階段。

在上次主控台連線關閉時鎖定虛擬機器可防止攻擊者利用已登入的主控台工作階段進行潛在的未授權存取。

安裝預設值:False
基準建議值:True
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock
PowerCLI 命令修復範例
Get-VM -Name $VM | Get-AdvancedSetting tools.guest.desktop.autolock | Remove-AdvancedSetting

對 vMotion 啟用加密

虛擬機器必須要求對 vMotion 進行加密。

要求對虛擬機器中的 vMotion 進行加密可保證資料傳輸安全。預設的「隨機」加密可能會導致加密,因為 vSphere 相容硬體中廣泛支援 AES-NI。但是,強制執行「必要」加密可防止任何未加密作業。

安裝預設值:隨機
基準建議值:必要
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
(Get-VM -Name $VM).ExtensionData.Config.MigrateEncryption
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)