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

使用的變數

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

  • $ESXi = "host_name"
  • $vmkernel_interface = "vmkernel_adapter"

確保 DCUI 帳戶被拒絕存取

ESXi 主機必須拒絕對 dcui 使用者帳戶的 shell 存取。

dcui 使用者帳戶用於 DCUI 自身的程序隔離。若要減少攻擊面,請對 dcui 使用者帳戶停用 shell 存取。

安裝預設值:True
基準建議值:False
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.account.list.Invoke() | Where-Object { $_.UserID -eq 'dcui' } | Select-Object -ExpandProperty Shellaccess
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.account.set.CreateArgs()
$arguments.id = "dcui"
$arguments.shellaccess = "false"
$ESXcli.system.account.set.Invoke($arguments)

Annotations.WelcomeMessage

設定 VMware Host Client 和 DCUI 上顯示的登入訊息文字。

ESXi 提供了顯示登入訊息的功能。登入訊息的用途包括通知侵入者他們的活動是非法的,以及向授權使用者傳達在使用系統期間必須滿足且同意的期望和義務。

安裝預設值:未定義
基準建議值:如需適用於您環境的文字,請諮詢您組織的法律顧問。

範例訊息文字:僅限授權使用者。禁止實際或試圖未經授權使用此系統,否則可能會導致刑事、民事、安全或行政程序和/或處罰。使用此資訊系統即表示同意其在未通知您或未取得您許可的情況下進行監控和記錄。使用者不能期望在使用此系統期間能夠得到隱私保護。儲存在此系統上、傳輸到此系統或透過監控和/或記錄取得的任何資訊,均可根據聯邦法律、州法規和組織政策披露給執法機構和/或使用。如果您不是此系統的授權使用者,請立即退出系統。

需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
在 DCUI 上遮罩「F2/F12」和 IP 位址資訊。可能還需要針對您的環境提供說明文件和訓練。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Annotations.WelcomeMessage
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Annotations.WelcomeMessage | Set-AdvancedSetting -Value "your_message"

Config.HostAgent.vmacore.soap.sessionTimeout

為 vSphere API 設定工作階段逾時。

此做法有助於確保自動工作階段 (可能會被未經授權的使用者或惡意軟體利用) 不會無限期處於開啟狀態,從而降低潛在的安全性風險。

安裝預設值:30
基準建議值:30
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.vmacore.soap.sessionTimeout
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.vmacore.soap.sessionTimeout | Set-AdvancedSetting -Value 30

Config.Etc.issue

設定當使用者使用 SSH 連線到 ESXi 主機時顯示的橫幅文字。

ESXi 提供了針對 SSH 連線顯示橫幅的功能。橫幅的用途包括通知侵入者他們的活動是非法的,以及向授權使用者傳達在使用系統期間必須滿足且同意的期望和義務。除非您要執行疑難排解作業,否則請將 SSH 服務保持停用狀態。ESXivCenter Server 之間的實作不一致要求 Config.Etc.issue 中的「issue」為小寫,才能在這兩種情況下都起作用。

安裝預設值:未定義
基準建議值:如需適用於您環境的文字,請諮詢您組織的法律顧問。

範例訊息文字:僅限授權使用者。禁止實際或試圖未經授權使用此系統,否則可能會導致刑事、民事、安全或行政程序和/或處罰。使用此資訊系統即表示同意其在未通知您或未取得您許可的情況下進行監控和記錄。使用者不能期望在使用此系統期間能夠得到隱私保護。儲存在此系統上、傳輸到此系統或透過監控和/或記錄取得的任何資訊,均可根據聯邦法律、州法規和組織政策披露給執法機構和/或使用。如果您不是此系統的授權使用者,請立即退出系統。

需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.Etc.issue
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.Etc.issue | Set-AdvancedSetting -Value "****************************************************************************`n* Authorized users only. Actual or attempted unauthorized use of this      *`n* system is prohibited and may result in criminal, civil, security, or     *`n* administrative proceedings and/or penalties. Use of this information     *`n* system indicates consent to monitoring and recording, without notice     *`n* or permission. Users have no expectation of privacy. Any information     *`n* stored on or transiting this system, or obtained by monitoring and/or    *`n* recording, may be disclosed to law enforcement and/or used in accordance *`n* with Federal law, State statute, and organization policy. If you are not *`n* an authorized user of this system, exit the system at this time.         *`n****************************************************************************`n"

停用對 vpxuser 的 Shell 存取

ESXi 主機必須拒絕對 vpxuser 帳戶的 shell 存取。

首次連結 vCenter Server 主機時,ESXi 會建立 vpxuser 帳戶。vpxuser 帳戶隨後用於向 ESXi 進行權限驗證。雖然 vCenter Server 會按 VirtualCenter.VimPasswordExpirationInDays 選項管理的時間間隔自動輪替 vpxuser 帳戶的密碼,但 vpxuser 帳戶也具有 shell 存取權。請停用 vpxuser 帳戶以減少攻擊面。

安裝預設值:True
基準建議值:False
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
沒有 shell 存取權的使用者帳戶無論其擁有哪種權限層級,都無法重新設定其他使用者的 shell 存取權。由於 vCenter Server 做為 vpxuser 帳戶連線到 ESXi 主機,因此停用對 vpxuser 的 shell 存取後,將無法再使用該帳戶來變更其他帳戶的這些帳戶設定。必須使用授權帳戶逐個主機地進行進一步的重新設定。
ESXi 8.0 及更新版本不再支援傳統的密碼或帳戶復原作業,例如從媒體開機或在開機時將 init 變更為 shell。
確保 ESXi 主機保留至少一個完全權限使用者帳戶,並且您相應地保護此帳戶。
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.account.list.Invoke() | Where-Object { $_.UserID -eq 'vpxuser' } | Select-Object -ExpandProperty Shellaccess
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.account.set.CreateArgs()
$arguments.id = "vpxuser"
$arguments.shellaccess = "false"
$ESXcli.system.account.set.Invoke($arguments)

vCenter Server 必須使用 vSphere Authentication Proxy 以避免儲存 Active Directory 認證

vSphere Authentication Proxy 使 vCenter Server 無需直接儲存 Active Directory 認證即可連線和管理 Active Directory 實體,從而降低了認證曝露或誤用的風險。

安裝預設值:未設定
基準建議值:如果使用該功能,請進行設定
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-VMHostAuthentication | Select-Object VMHost,Domain,DomainMembershipStatus
PowerCLI 命令修復範例
不適用

DCUI.Access

ESXi 主機必須具有精確的 DCUI.Access 清單。

將 [鎖定模式例外使用者] 清單設定為包含準確的使用者清單,並確保啟用鎖定模式後,只有授權使用者才能透過 Direct Console 使用者介面 (DCUI) 存取 ESXi 主機。

無法從清單中移除根使用者。

若要控制 ESXi Shell 和 SSH 存取,請使用鎖定模式例外使用者清單。請參閱確保 ESXi 主機具有準確的例外使用者清單

安裝預設值:根
基準建議值:根
需要執行的動作
稽核清單。
預設值已變更時的潛在功能影響
可能失去對主機的管理存取權。確保將 ESXi 主機連結到 vCenter Server,並在設定鎖定模式之前設定存取清單和例外狀況清單。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting DCUI.Access
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting DCUI.Access | Set-AdvancedSetting -Value root

確保 ESXi 主機具有準確的例外使用者清單

ESXi 主機必須具有準確的 [例外使用者] 清單。

主機進入鎖定模式時,[鎖定模式例外使用者] 清單中的使用者不會失去其權限。這種情況可能會破壞鎖定模式的目的。

安裝預設值:Null
基準建議值:Null
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
可能會失去對 ESXi 主機的管理存取權。確保將 ESXi 主機連結到 vCenter Server,並在設定鎖定模式之前設定存取清單和例外狀況清單。
PowerCLI 命令評估
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).QueryLockdownExceptions()
PowerCLI 命令修復範例
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).UpdateLockdownExceptions($NULL)

啟用正常鎖定模式以限制對 ESXi 的存取

啟用鎖定模式會停用對 ESXi 主機的直接存取。鎖定模式要求 vCenter Server 直接管理 ESXi 主機。

以這種方式限制存取可確保 vCenter Server 強制執行角色和權限。此外,使用者無法透過直接登入 ESXi 主機來略過這些角色和權限。要求透過 vCenter Server 進行所有互動,這樣可以降低使用者意外獲得提升權限或執行未經適當稽核的工作的風險。

允許每個 ESXi 主機的 [例外使用者] 清單中列出的使用者們覆寫鎖定模式並登入。依預設,[例外使用者] 清單中不存在任何使用者。

鎖定模式設定包括 [已停用]、[正常] 和 [嚴格]。當鎖定模式設定為 [嚴格] 時,如果 ESXi 主機與 vCenter Server 中斷連線,則無法管理該主機,直到連線還原為止。如果無法還原連線,則必須重建 ESXi 主機。通常,[嚴格] 鎖定模式超出大多數部署的需求。因此,設定 [正常] 鎖定模式通常就足夠了。

安裝預設值:lockdownDisabled
基準建議值:lockdownNormal
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
可能失去對主機的管理存取權。確保將 ESXi 主機連結到 vCenter Server,並在設定鎖定模式之前設定存取清單和例外狀況清單。
某些作業 (例如備份和疑難排解) 需要直接存取 ESXi 主機。在這些情況下,可以暫時對特定主機停用鎖定模式,然後在完成這些作業後重新啟用鎖定模式。
PowerCLI 命令評估
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).LockdownMode
PowerCLI 命令修復範例
(Get-View (Get-VMHost -Name $ESXi | Get-View).ConfigManager.HostAccessManager).ChangeLockdownMode('lockdownNormal')

Syslog.global.auditRecord.storageEnable

ESXi 主機設定為在本機儲存稽核記錄。

您必須在 ESXi 主機上啟用稽核記錄。

安裝預設值:False
基準建議值:True
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
記錄會耗用額外的儲存空間。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageEnable
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageEnable | Set-AdvancedSetting -Value TRUE

Syslog.global.auditRecord.storageCapacity

您必須在 ESXi 主機上啟用足夠保存一周稽核記錄的儲存區容量。

如果有遠端稽核記錄儲存區設施可用,請務必確保本機儲存區容量足夠,能夠保存在將記錄向設施傳送程序中發生的預期中斷期間累積的稽核記錄。這樣可以確保在遠端儲存區不可用期間,稽核記錄不會丟失或被覆寫,從而確保稽核軌跡和合規性要求的無縫連續性。

安裝預設值:4
基準建議值:100
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
記錄會耗用額外的儲存空間。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageCapacity
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageCapacity | Set-AdvancedSetting -Value 100

ScratchConfig.CurrentScratchLocation 和 Syslog.global.auditRecord.storageDirectory

ESXi 主機上本機儲存的所有稽核記錄設定持續性記錄位置。

可以對 ESXi 進行設定,使其將稽核記錄儲存於記憶體中的檔案系統中。當主機的「/scratch」目錄連結到「/tmp/scratch」時,會出現這種情況。完成此作業後,在任何時候都只會儲存一天的記錄。此外,稽核記錄會在每次重新開機時重新初始化。這會帶來安全性風險,因為在主機上記錄的使用者活動只會暫時儲存,重新開機後便不復存在。這還會使稽核複雜化,並加大監控事件和診斷問題的難度。一律將 ESXi 主機稽核記錄設定為記錄到持續性資料存放區。

您可以透過查詢 ScratchConfig.CurrentScratchLocation 進階設定來偵測暫存磁碟區是臨時磁碟區還是持續性磁碟區。如果查詢時傳回「/tmp/scratch」,則表明該磁碟區是臨時磁碟區,您應將稽核記錄儲存區重新對應到持續性裝置。

儲存區不能是 vSAN 資料存放區。如果您本機唯一的非 vSAN 儲存區是 SD 或 USB 媒體 (此類媒體由於記錄重複寫入可能變得不可靠),請考慮將記錄保留在 ramdisk 中,並確保設定了遠端記錄主機。記錄決定和理由,以備將來稽核之用。

安裝預設值:

ScratchConfig.CurrentScratchLocation:取決於開機裝置

Syslog.global.auditRecord.storageDirectory/scratch/auditLog

基準建議值:持續性儲存區位置
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
記錄會耗用額外的儲存空間。
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.syslog.config.get.Invoke() | Select LocalLogOutput,LocalLogOutputIsPersistent

# If your LocalLogOutput is set to a directory in /scratch, and LocalLogOutputIsPersistent is true, that means your boot device is of a type and size that makes /scratch persistent. Verify that your audit storage is also on /scratch, and that /scratch points to a VMFS datastore:

Get-VMHost -Name $ESXi | Get-AdvancedSetting ScratchConfig.CurrentScratchLocation
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageDirectory
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.storageDirectory | Set-AdvancedSetting -Value "/vmfs/volumes/$Datastore/audit"

Syslog.global.auditRecord.remoteEnable

設定 ESXi 主機以將稽核記錄傳輸到遠端主機。

安裝預設值:False
基準建議值:True
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.remoteEnable
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.auditRecord.remoteEnable | Set-AdvancedSetting -Value TRUE

Syslog.global.logFiltersEnable

ESXi 主機上啟用記錄篩選。

您可以建立記錄篩選器來減少重複項目的數量,並安全拒絕特定的記錄事件。

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

LocalLogOutputIsPersistent、ScratchConfig.CurrentScratchLocation 和 Syslog.global.logDir

ESXi 主機上本機儲存的所有記錄設定持續性記錄。

可以對 ESXi 進行設定,使其將記錄檔儲存於記憶體中的檔案系統中。當主機的「/scratch」目錄連結到「/tmp/scratch」時,會出現這種情況。完成此作業後,在任何時候都只會儲存一天的記錄。此外,記錄檔會在每次重新開機時重新初始化。這會帶來安全性風險,因為在主機上記錄的使用者活動只會暫時儲存,重新開機後便不復存在。這還會使稽核複雜化,並加大監控事件和診斷問題的難度。一律將 ESXi 主機記錄設定為記錄到持續性資料存放區。

您可以透過查詢 ScratchConfig.CurrentScratchLocation 進階參數來偵測暫存磁碟區是臨時磁碟區還是持續性磁碟區。如果查詢時傳回「/tmp/scratch」,則表明該磁碟區是臨時磁碟區,您應將稽核記錄儲存區重新對應到持續性裝置。

儲存區不能是 vSAN 資料存放區,除非您設定了 Syslog.global.vsanBacking,這有其特定的注意須知和相依性。如果您本機唯一的非 vSAN 儲存區是 SD 或 USB 媒體 (此類媒體由於記錄重複寫入可能變得不可靠),請考慮將記錄保留在 ramdisk 中,並確保設定了遠端記錄主機。記錄決定和理由,以備將來稽核之用。

安裝預設值:ScratchConfig.CurrentScratchLocation:取決於開機裝置

Syslog.global.logDir/scratch/log

基準建議值:持續性儲存區位置
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.syslog.config.get.Invoke() | Select LocalLogOutput,LocalLogOutputIsPersistent

# If your LocalLogOutput is set to a directory in /scratch, and LocalLogOutputIsPersistent is true, that means your boot device is of a type and size that makes /scratch persistent. Verify that your log storage is also on /scratch, , and that /scratch points to a VMFS datastore:

Get-VMHost -Name $ESXi | Get-AdvancedSetting ScratchConfig.CurrentScratchLocation
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logDir
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logDir | Set-AdvancedSetting -Value "/vmfs/volumes/$Datastore/logs"

Syslog.global.logHost

設定遠端記錄。

如果設定遠端記錄到中央記錄主機,則是為 ESXi 記錄提供了安全的集中式存放區。透過將主機記錄檔收集到中央主機上,您可以使用單一工具來監控所有主機。您還可以執行彙總分析和搜尋項目,例如對多個主機發起的協調攻擊。記錄到安全的中央記錄伺服器,有助於防止記錄遭篡改,並能提供長期稽核記錄。

安裝預設值:未定義
基準建議值:站台專屬
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logHost
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logHost | Set-AdvancedSetting -Value "log_collector"

Syslog.global.certificate.checkSSLCerts

確認 TLS 的憑證。

ESXi 主機必須驗證 TLS 遠端記錄端點的憑證。TLS 憑證有助於確保端點是真實可信的。

安裝預設值:True
基準建議值:True
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.checkSSLCerts
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.checkSSLCerts | Set-AdvancedSetting -Value TRUE

Syslog.global.certificate.strictX509Compliance

對已啟用 TLS 的遠端紀錄端點執行嚴格的 x509 驗證。

ESXi 主機必須對已啟用 TLS 的遠端紀錄端點使用嚴格的 x509 驗證。Syslog.global.certificate.strictX509Compliance 設定會在驗證期間對 CA 根憑證執行額外的有效性檢查。

安裝預設值:False
基準建議值:True
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.strictX509Compliance
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.certificate.strictX509Compliance | Set-AdvancedSetting -Value TRUE

Mem.MemEagerZero

啟用揮發性金鑰銷毀。

依預設,ESXi 在為虛擬機器、使用者空間應用程式和核心執行緒配置分頁時,會將這些配置的分頁歸零。這可確保不會向虛擬機器或使用者空間應用程式公開非零分頁。實施此措施可防止將虛擬機器或使用者空間中的密碼編譯金鑰曝露給其他用戶端。

但是,如果未重複使用記憶體,這些金鑰可能會長時間保留在主機記憶體中。為了解決此問題,您可以設定 MemEagerZero 設定,强制在使用者空間程序或客體退出時清零使用者空間和客體記憶體分頁。對於核心執行緒,一旦不再需要密碼,持有金鑰的記憶體空間就會立即歸零。

安裝預設值:0
基準建議值:1
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
虛擬機器需要額外的關機時間,這與配置的記憶體量相對應。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Mem.MemEagerZero
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Mem.MemEagerZero | Set-AdvancedSetting -Value 1

檢查 ESXi 版本的作用中維護情況。

確保 ESXi 版本未達到 VMware 終止一般支援狀態。

安裝預設值:不適用
基準建議值:不適用
需要執行的動作
定期稽核 ESXi 版本。
預設值已變更時的潛在功能影響
始終閱讀版本資訊,並以分階段方式進行新軟體版本的測試和部署。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Select-Object Name,Version,Build
PowerCLI 命令修復範例
不適用

啟用時間同步來源

ESXi 主機必須啟用並執行時間同步服務。

密碼編譯、稽核記錄、叢集作業、事件回應和鑑識都依賴同步的時間。為確保各服務和作業的時間同步,啟動主機時啟用 NTP 和/或 PTP 服務,並確保這些服務正在執行。

安裝預設值:已停止、手動啟動和停止
基準建議值:執行中、隨主機一起停止和啟動
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHostService -VMHost $ESXi | Where-Object{$_.Key -eq "ntpd"}
PowerCLI 命令修復範例
Get-VMHostService -VMHost $ESXi -ErrorAction:Stop | Where-Object{$_.Key -eq "ntpd"} | Set-VMHostService -policy "on" -Confirm:$false
Get-VMHostService -VMHost $ESXi -ErrorAction:Stop | Where-Object{$_.Key -eq "ntpd"} | Restart-VMHostService -Confirm:$false

設定可靠的時間同步來源

ESXi 主機必須設定可靠的時間同步來源。

密碼編譯、稽核記錄、叢集作業、事件回應和鑑識都取決於同步的時間。網路時間通訊協定 (NTP) 必須具有至少四個來源。如果必須在兩個來源和一個來源之間進行選擇,則最好選擇一個來源。

精確時間通訊協定 (PTP) 是替代 NTP 的通訊協定,可提供亞毫秒層級的時間準確性。PTP 的架構與 NTP 不同,對主要伺服器故障的恢復能力也不相同。即使準確性較低,也請考慮將 NTP 設定為 PTP 的備用來源以確保時間來源持續可用。

安裝預設值:未定義
基準建議值:

站台專屬,或者:

0.vmware.pool.ntp.org、

1.vmware.pool.ntp.org、

2.vmware.pool.ntp.org、

3.Vmware.pool.ntp.org

需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHostNtpServer -VMHost $ESXi
PowerCLI 命令修復範例
$ntp0 = "0.vmware.pool.ntp.org"
$ntp1 = "1.vmware.pool.ntp.org"
$ntp2 = "2.vmware.pool.ntp.org"
$ntp3 = "3.vmware.pool.ntp.org"

Add-VMHostNTPServer -NtpServer $ntp0 , $ntp1 , $ntp2 , $ntp3 -VMHost $ESXi -Confirm:$false

使用 TLS 加密

ESXi 主機必須透過啟用現代 TLS 加密來維護傳輸的保密性和完整性。

ESXi 8.0 Update 3 開始,TLS 設定檔將用戶端和伺服器 TLS 設定設定為僅使用強加密。可以使用下列命令來檢視整個加密清單和套件:

$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.tls.server.get.CreateArgs()
$arguments.showprofiledefaults = $true
$arguments.showcurrentbootprofile = $true
$ESXcli.system.tls.server.get.invoke($arguments)

變更 TLS 設定檔後,必須將 ESXi 主機重新開機。(在 vSphere Client 中,主機會顯示尾碼「需要重新開機。」)

安裝預設值:COMPATIBLE
基準建議值:NIST_2024
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
對加密套件的變更會影響與外部系統的連線。必須將主機重新開機,對此 TLS 設定檔所做的變更才能生效。
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.tls.server.get.invoke() | Select-Object -ExpandProperty Profile
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.tls.server.set.CreateArgs()
$arguments.profile = "NIST_2024"
$ESXcli.system.tls.server.set.invoke($arguments)

UserVars.ESXiVPsDisabledProtocols

ESXi 主機必須啟用受支援的最高 TLS 版本。

ESXi 8.0 預設為啟用 TLS 1.2,但在必要時可以啟用其他通訊協定。從 ESXi 8.0 Update 3 開始,預設為啟用 TLS 1.3。

安裝預設值:sslv3,tlsv1,tlsv1.1
基準建議值:sslv3,tlsv1,tlsv1.1
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiVPsDisabledProtocols
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiVPsDisabledProtocols | Set-AdvancedSetting -Value "sslv3,tlsv1,tlsv1.1"

設定以 TPM 為基礎的加密

ESXi 主機必須要求執行以 TPM 為基礎的組態加密。

ESXi 主機組態包括在主機上執行的每個服務的組態檔。組態檔通常位於 /etc 目錄中,但它們也可以位於其他命名空間中。組態檔包含有關服務狀態的執行階段資訊。隨著時間的推移,設定檔中的預設值可能會變更,例如,當 ESXi 主機上的設定已變更時。

cron 工作會定期備份 ESXi 組態檔、在 ESXi 正常關閉時備份或根據需要進行備份,並在開機區中建立已封存的組態檔。當 ESXi 重新開機後,系統會讀取已封存的組態檔,並重新建立 ESXi 在備份建立時所處的狀態。

在 vSphere 7.0 Update 2 之前,已封存的 ESXi 組態檔未加密。在 vSphere 7.0 Update 2 及更新版本中,將會加密已封存的組態檔。當 ESXi 主機設有信賴平台模組 (TPM) 時,會使用 TPM 將組態「封裝」到主機,從而提供了強大的安全保證,並增加了對離線攻擊的額外保護。

組態加密在安裝或升級時使用實體 TPM (如果可用且受支援)。如果後來新增或啟用了 TPM,則必須明確重新設定 ESXi 主機以使用最新可用的 TPM。啟用 TPM 組態加密後,無法將其停用。

安裝預設值:站台專屬
基準建議值:TPM
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
使用安全開機和 TPM 強制執行的組態加密會使傳統的根密碼復原方法無效。確保您不會失去對 ESXi 管理員帳戶的存取權。
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.settings.encryption.get.Invoke() | Select Mode
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.settings.encryption.set.CreateArgs()
$arguments.mode = "TPM"
$ESXcli.system.settings.encryption.set.Invoke($arguments)

檢查 ESXi 軟體是否為最新

ESXi 修補程式保持最新,可以減少 hypervisor 中的漏洞。

訓練有素的攻擊者在嘗試存取 ESXi 主機或提升在該主機上的權限時可以利用已知漏洞。始終先更新 vCenter Server (如果有可用更新),然後再更新 ESXi

安裝預設值:Downlevel
基準建議值:目前
需要執行的動作
定期稽核 ESXi 修補程序層級。
始終閱讀版本資訊,並以分階段方式進行新軟體版本的測試和部署。
預設值已變更時的潛在功能影響
vSphere Update 版本會新增和變更功能。修補程式版本僅用於解決問題。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Select-Object Name,Version,Build
PowerCLI 命令修復範例
不適用

VMkernel.Boot.execInstalledOnly

僅執行由 VIB 提供的二進位檔。

ESXi 會根據接受程度對 VIB 執行完整性檢查。指示 ESXi 僅執行來自主機上安裝的有效 VIB 的二進位檔,可使攻擊者在入侵期間更難使用預先構建的工具組,並提高偵測到攻擊者的幾率。

安裝預設值:False
基準建議值:True
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
第三方未簽署軟體可能無法安裝或執行。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting VMkernel.Boot.execInstalledOnly
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting VMkernel.Boot.execInstalledOnly | Set-AdvancedSetting -Value True

在 VMkernel 介面卡上停用管理服務

確保 vSAN、vMotion 和其他專用 VMkernel 介面卡未啟用管理服務。

可以為專用 VMkernel 網路介面設定管理功能,這可能會導致網路隔離和安全防護不起作用。僅在用於管理的 VMkernel 介面上啟用管理服務。

安裝預設值:站台專屬
基準建議值:站台專屬
需要執行的動作
稽核站台專屬值。
預設值已變更時的潛在功能影響
某些第三方受管解決方案可能要求您在 VMkernel 介面卡上啟用管理服務。
PowerCLI 命令評估
Get-VMHostNetworkAdapter -VMHost $ESXi -VMKernel | Select VMHost,Name,IP,ManagementTrafficEnabled
PowerCLI 命令修復範例
Get-VMHostNetworkAdapter -VMHost $ESXi -Name $vmkernel_interface | Set-VMHostNetworkAdapter -ManagementTrafficEnabled $false

ESXi 防火牆設定為封鎖流量

依預設,您必須將 ESXi 主機防火牆設定為封鎖網路流量。

確保封鎖所有傳入和傳出網路流量 (除非明確允許),從而減少攻擊面並防止對主機進行未經授權的存取。

安裝預設值:已啟用
基準建議值:已啟用
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
防火牆過於簡單化,類似於路由器 ACL。您可能需要重新設定反射規則。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-VMHostFirewallDefaultPolicy
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.network.firewall.set.CreateArgs()
$arguments.defaultaction = $FALSE
$arguments.enabled = $true
$ESXcli.network.firewall.set.Invoke($arguments)

為授權網路設定 ESXi 防火牆

ESXi 防火牆設定為僅允許來自授權網路的流量。

確保封鎖所有傳入和傳出出網路流量 (除非明確允許),從而減少攻擊面並防止對 ESXi 主機進行未經授權的存取。

從 vSphere 8.0 Update 2 開始,防火牆規則分類為「使用者」擁有的或「系統」擁有的,只有「使用者」擁有的規則是可設定的。在 vSphere 8 Update 2b 和 PowerCLI 13.2.1 中,還有其他可查詢參數可用於自動設定和檢查可設定的規則。

安裝預設值:允許來自任何 IP 位址的連線
基準建議值:僅允許來自授權基礎結構和管理工作站的連線
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
防火牆過於簡單化,類似於路由器 ACL。您可能需要重新設定反射規則。
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$list = $ESXcli.network.firewall.ruleset.list.Invoke() | Where {($_.AllowedIPconfigurable -eq $true) -and ($_.EnableDisableconfigurable -eq $true)} | Select -ExpandProperty Name

$arguments = $ESXcli.network.firewall.ruleset.allowedip.list.CreateArgs()
foreach ($rule in $list) {
    $arguments.rulesetid = $rule
    $ESXcli.network.firewall.ruleset.allowedip.list.Invoke($arguments) 
}
PowerCLI 命令修復範例
# Customize this example for your environment.
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
# Deactivate firewall temporarily so we don't lose connectivity
$arguments = $ESXcli.network.firewall.set.CreateArgs()
$arguments.enabled = $false
$ESXcli.network.firewall.set.Invoke($arguments)

# Unset the "allow all" flag
$arguments = $ESXcli.network.firewall.ruleset.set.CreateArgs()
$arguments.allowedall = $false
$arguments.rulesetid = "sshServer"
$ESXcli.network.firewall.ruleset.set.Invoke($arguments)

# Add an IP range
$arguments = $ESXcli.network.firewall.ruleset.allowedip.add.CreateArgs()
$arguments.ipaddress = "192.168.0.0/16"
$arguments.rulesetid = "sshServer"
$ESXcli.network.firewall.ruleset.allowedip.add.Invoke($arguments)

# Enable the firewall
$arguments = $ESXcli.network.firewall.set.CreateArgs()
$arguments.enabled = $true
$ESXcli.network.firewall.set.Invoke($arguments)

將 [偽造的傳輸] 原則設定為 [拒絕]

在 vSphere Standard Switch 及其連接埠群組上將 [偽造的傳輸] 原則設定為 [拒絕]。

如果虛擬機器作業系統變更了 MAC 位址,則作業系統隨時可能會傳送具有模擬來源 MAC 位址的畫面。MAC 位址模擬使作業系統可以透過模擬接收網路授權的網路介面卡,對網路中的裝置進行惡意攻擊。當 [偽造的傳輸] 原則設定為 [接受] 時,ESXi 不會比較來源 MAC 位址和有效 MAC 位址。若要防止 MAC 模擬,請將 [偽造的傳輸] 原則設定為 [拒絕]。這樣,主機便會將客體作業系統傳輸的來源 MAC 位址與其虛擬機器介面卡的有效 MAC 位址進行比較,以確認是否相符。如果位址不相符,ESXi 主機將捨棄封包。

安裝預設值:接受
基準建議值:拒絕
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
某些工作負載 (例如叢集應用程式、網路裝置和功能) 依賴這些技術來保持正常執行。如果需要,您可以設定單獨的連接埠群組來允許此行為,並僅將授權的虛擬機器連結到該連接埠群組。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | select VirtualSwitch,ForgedTransmits
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | select VirtualPortGroup,ForgedTransmits
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | Set-SecurityPolicy -ForgedTransmits $false 
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | Set-SecurityPolicy -ForgedTransmitsInherited $true

將 [MAC 位址變更] 原則設定為 [拒絕]

在 vSphere Standard Switch 及其連接埠群組上將 [MAC 位址變更] 原則設定為 [拒絕]。

如果虛擬機器作業系統變更了 MAC 位址,它可以傳送具有模擬來源 MAC 位址的畫面,這使得它能夠透過模擬接收網路授權的網路介面卡,對網路中的裝置進行惡意攻擊。為防止虛擬機器變更其有效 MAC 位址,應採取措施來強制執行 MAC 位址穩定性或限制修改 MAC 位址的能力。這有助於降低 MAC 模擬和潛在惡意活動的風險。

安裝預設值:接受
基準建議值:拒絕
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
某些工作負載 (例如叢集應用程式、網路裝置和功能、透過 MAC 位址授權的應用程式和 vCenter Server 縮短停機時間升級) 依賴這些技術來保持正常執行。如果需要,您可以設定單獨的連接埠群組來允許此行為,並僅將授權的虛擬機器連結到該連接埠群組。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | select VirtualSwitch,MacChanges
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | select VirtualPortGroup,MacChanges
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | Set-SecurityPolicy -MacChanges $false
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | Set-SecurityPolicy -MacChangesInherited $true

將 [混合模式] 原則設定為 [拒絕]

在 vSphere Standard Switch 及其連接埠群組上將 [混合模式] 原則設定為 [拒絕]。

為連接埠群組啟用混合模式後,連線到該連接埠群組的所有虛擬機器都可以讀取跨該連接埠群組傳輸的所有封包,無論封包的預期收件者是誰。在變更混合模式的預設值之前,請考慮潛在影響和設計考量。

安裝預設值:拒絕
基準建議值:拒絕
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
某些工作負載和工作類型 (例如 DHCP 伺服器、網路裝置和安全性監控) 納入了這些技術來保持正常執行。如果需要,您可以設定單獨的連接埠群組來允許此行為,並僅將授權的虛擬機器連結到該連接埠群組。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | select VirtualSwitch,AllowPromiscuous
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | select VirtualPortGroup,AllowPromiscuous
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-VirtualSwitch -Standard | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuous $false
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | Get-SecurityPolicy | Set-SecurityPolicy -AllowPromiscuousInherited $true

在標準交換器上限制虛擬客體標記

ESXi 主機必須限制在標準交換器上使用虛擬客體標記 (VGT)。

當連接埠群組設定為 VLAN 4095 時,vSwitch 會將所有網路畫面傳遞到連結的虛擬機器,而不修改 VLAN 標記。在 vSphere 中,這稱為 VGT。虛擬機器必須自行使用作業系統中的 802.1Q 驅動程式來處理 VLAN 資訊。

僅當連結的虛擬機器已明確取得授權且能夠自行管理 VLAN 標記時,才能實作 VLAN 4095。如果不當地啟用了 VLAN 4095,可能會導致拒絕服務或允許虛擬機器與未經授權的 VLAN 上的流量互動。

安裝預設值:非 VLAN 4095
基準建議值:非 VLAN 4095
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard | select Name,VlanID
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-VirtualPortGroup -Standard -Name $PG| Set-VirtualPortGroup -VlanID "new_VLAN"

安全開機強制執行

安全開機是 UEFI 韌體標準的一部分。啟用 UEFI 安全開機的情況下,除非作業系統開機載入器具有有效的數位簽章,否則 ESXi 主機將拒絕載入任何 UEFI 驅動程式或應用程式。ESXi 的安全開機需要韌體支援。ESXi 的安全開機還要求所有 ESXi 內核模組、驅動程式和 VIB 均由 VMware 或合作夥伴下層簽署。

安全開機可在 ESXi 實體伺服器的 BIOS 中啟用,並受 hypervisor 開機載入器支援。這個控制使得 ESXi 從僅僅支援安全開機變為要求必須安全開機。如果未啟用此設定和組態加密,ESXi 主機可能會受到離線攻擊。攻擊者只需將 ESXi 安裝磁碟機傳輸到非安全開機主機並進行開機即可。

安裝預設值:False
基準建議值:True
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
使用安全開機和 TPM 強制執行的組態加密會使傳統的根密碼復原方法無效。確保您不會失去對 ESXi 管理員帳戶的存取權。
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.settings.encryption.get.Invoke() | Select RequireSecureBoot
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.settings.encryption.set.CreateArgs()
$arguments.requiresecureboot = $true
$ESXcli.system.settings.encryption.set.Invoke($arguments)

停用 ESXi Shell

應停用 ESXi Shell

安裝預設值:已停止、手動啟動和停止
基準建議值:已停止、手動啟動和停止
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM' -and $_.Policy -eq 'On'}
PowerCLI 命令修復範例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM'} | Stop-VMHostService

UserVars.ESXiShellInteractiveTimeOut

設定逾時以自動終止閒置 ESXi Shell 和 SSH 工作階段。

如果使用者忘記登出其 SSH 工作階段,則閒置連線將無限期保持開啟狀態,從而提高其他使用者取得主機存取權的可能性。您可以將閒置 shell 工作階段設定為自動終止。

安裝預設值:0
基準建議值:900
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellInteractiveTimeOut
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellInteractiveTimeOut | Set-AdvancedSetting -Value 900

停用 SNMP 服務

如果未使用 SNMP 服務,請將其停用。

安裝預設值:已停止、隨主機一起啟動和停止
基準建議值:已停止、手動啟動和停止
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'snmpd' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'snmpd' -and $_.Policy -eq 'On'}
PowerCLI 命令修復範例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'snmpd'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'snmpd'} | Stop-VMHostService

停用 SSH 服務

停用 SSH,僅在進行疑難排解時才啟用。

ESXi 不是類似於 UNIX 的多使用者作業系統。ESXi 是專用 hypervisor,由 VMware Host ClientvSphere Client、CLI 和 API 進行管理。在 ESXi 上,SSH 是疑難排解和支援介面,依預設已有意停止並停用 SSH。啟用該介面會帶來風險。

安裝預設值:已停止、手動啟動和停止
基準建議值:已停止、手動啟動和停止
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM-SSH' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'TSM-SSH' -and $_.Policy -eq 'On'}
PowerCLI 命令修復範例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM-SSH'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'TSM-SSH'} | Stop-VMHostService

對加密作業使用熵

ESXi 主機必須使用足夠的熵進行加密作業。

在 vSphere 8.0 及更新版本中,ESXi 熵實作支援 FIPS 140-3 和 EAL4 憑證。核心開機選項可控制要在 ESXi 主機上啟用哪些熵來源。

安裝預設值:

disableHwrng = FALSE

entropySources = 0

基準建議值:

disableHwrng = FALSE

entropySources = 0

需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.settings.kernel.list.Invoke() | Where {$_.Name -eq "disableHwrng" -or $_.Name -eq "entropySources"}
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.settings.kernel.set.CreateArgs()
$arguments.setting = "disableHwrng"
$arguments.value = "FALSE"
$ESXcli.system.settings.kernel.set.invoke($arguments)
$arguments.setting = "entropySources"
$arguments.value = "0"
$ESXcli.system.settings.kernel.set.invoke($arguments)

確認映像設定檔和 VIB 接受層級

ESXi 主機映像設定檔接受層級必須為 PartnerSupported 或更高。

接受層級控制 ESXi 允許安裝的內容。如需 VIB 層級,請參閱 管理 ESXi 主機和 vSphere 安裝服務包的接受程度

VMware 和 VMware 合作夥伴均未測試 CommunitySupported VIB,VIB 也不包含數位簽章。由於這些原因,安裝 CommunitySupported VIB 時需謹慎。

安裝預設值:PartnerSupported
基準建議值:PartnerSupported 或更高
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
CommunitySupported 套件未簽署,且無法安裝。
PowerCLI 命令評估
(Get-EsxCli -VMHost $ESXi -V2).software.acceptance.get.Invoke()
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.software.acceptance.set.CreateArgs()
$arguments.level = "PartnerSupported" # VMwareCertified, VMwareAccepted, PartnerSupported, CommunitySupported
$ESXcli.software.acceptance.set.Invoke($arguments)

Security.AccountUnlockTime

ESXi 主機必須在指定的逾時期限後解除鎖定帳戶。

Security.AccountUnlockTime 可確保在定義的閒置期後自動解除鎖定 ESXi 主機上的使用者帳戶。透過強制執行帳戶自動解除鎖定,組織可以在安全性與可用性之間保持平衡,從而確保及時重新啟用閒置帳戶,同時盡量降低未經授權的存取的可能性。

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

Security.AccountLockFailures

設定鎖定帳戶之前的嘗試登入失敗的次數上限。

透過暫時停用受影響的帳戶,並在鎖定期限到期或管理員手動重設鎖定期限之前阻止進一步的登入嘗試,來防止暴力密碼破解攻擊和未經授權的存取嘗試。若要解除鎖定已鎖定的帳戶,需要執行管理動作或等待帳戶自動解除鎖定 (如果使用 Security.AccountUnlockTime 設定)。

安裝預設值:5
基準建議值:5
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
登入失敗的低臨界值可能會增加阻斷服務攻擊 (無論是有意還是無意) 的可能性,例如 SSH 連線重試。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.AccountLockFailures
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.AccountLockFailures | Set-AdvancedSetting -Value 5

Security.PasswordHistory

不允許重複使用密碼。

此設定可防止重複使用先前的密碼,從而減輕因舊的、已遭破解的認證而導致的潛在違規。

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

Security.PasswordMaxDays

設定兩次變更密碼之間的天數上限。

現代密碼最佳做法 (請參閱 NIST 800-63B 第 5.1.1.2 條及其他相關指引) 指出,當密碼已具有足夠的熵時,強制執行定期密碼變更並不能提高安全性。

安裝預設值:99999
基準建議值:99999
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordMaxDays
PowerCLI 命令
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordMaxDays | Set-AdvancedSetting -Value 99999

Security.PasswordQualityControl

強制執行密碼複雜性。

NIST 800-63B 第 5.1.1.2 條等建議指出,不應在系統上強制執行組合規則 (例如,強制使用混合字元類別),因為這些規則通常無法增強密碼安全性,並會阻礙使用者採用更安全的複雜密碼。

密碼強度和複雜性規則適用於所有 ESXi 使用者,包括根使用者。但是,當 ESXi 主機加入網域時,這些規則不適用於 Active Directory (AD) 使用者,因為 AD 系統對 AD 使用者強制執行密碼原則。

安裝預設值:3 min=disabled,disabled,disabled,7,7
基準建議值:retry=3 min=disabled,15,15,15,15 max=64 similar=deny passphrase=3
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
VMware 生態系統中的其他產品和服務可能不希望變更密碼複雜性需求,這可能會導致安裝失敗。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordQualityControl
PowerCLI 命令
Get-VMHost -Name $ESXi | Get-AdvancedSetting Security.PasswordQualityControl | Set-AdvancedSetting -Value "retry=3 min=disabled,15,15,15,15 max=64 similar=deny passphrase=3"

UserVars.SuppressHyperthreadWarning

取消針對潛在的超執行緒安全性漏洞的警告。

超執行緒安全性警告表示系統中存在未解決的 CPU 漏洞。忽略這些警告可能會掩蓋潛在的風險。確保硬體修復與組織可接受的風險保持一致。如果取消警告,請記錄決定和理由。

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

UserVars.DcuiTimeOut

設定逾時以自動終止閒置 DCUI 工作階段。

DCUI 允許直接登入 ESXi 主機以執行管理工作。若要防止在存留的登入工作階段中無意使用 DCUI,請終止閒置連線。

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

停用 CIM 服務

應停用 ESXi CIM 服務。

應停用未在使用中且對作業不重要的服務。

安裝預設值:已停止、隨主機一起啟動和停止
基準建議值:已停止、手動啟動和停止
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'sfcbd-watchdog' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'sfcbd-watchdog' -and $_.Policy -eq 'On'}
PowerCLI 命令修復範例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'sfcbd-watchdog'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'sfcbd-watchdog'} | Stop-VMHostService

Config.HostAgent.log.level

設定記錄資訊層級。

設定記錄層級時,請確保稽核記錄中有足夠的資訊來執行診斷和鑑識。

安裝預設值:資訊
基準建議值:資訊
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
記錄會耗用額外的儲存空間。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.log.level
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Config.HostAgent.log.level | Set-AdvancedSetting -Value info

Syslog.global.logLevel

足夠的記錄事件資訊。

沒有足夠的記錄資料,關鍵的危害指示器可能會被忽視,這會導致漏洞增加並可能無法有效應對網路安全事件。

安裝預設值:錯誤
基準建議值:資訊
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
記錄會耗用額外的儲存空間。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logLevel
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Syslog.global.logLevel | Set-AdvancedSetting -Value info

Config.HostAgent.plugins.solo.enableMob

停用受管理物件瀏覽器 (MOB)。

應停用未在使用中且對作業不重要的服務。

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

Net.BlockGuestBPDU

阻止客體作業系統橋接通訊協定資料單位 (BPDU) 傳輸。

BPDU 用於傳輸跨距樹狀目錄通訊協定 (STP) 資訊和偵測網路迴圈。通常,BPDU 防護和 Portfast 會在直接連線到 ESXi 主機的實體交換器上啟用,以降低跨距樹狀目錄聚合延遲。

但是,如果將 BPDU 封包從 ESXi 主機上的虛擬機器傳送到已設定的實體交換器,可能會導致源自 ESXi 主機的所有上行介面串聯鎖定。為防止出現此類鎖定,您可以在 ESXi 主機上啟用 BPDU 篩選器,以捨棄傳送到實體交換器的任何 BPDU 封包。

標準虛擬交換器和分散式虛擬交換器均不支援 STP,並且不會產生 BPDU。

安裝預設值:1
基準建議值:1
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
某些面向網路的工作負載可能會產生合法的 BPDU 封包。在啟用 BPDU 篩選器之前,請確認 ESXi 主機上的虛擬機器沒有產生合法的 BPDU 封包。如果在這種情況下啟用 BPDU 篩選器,在虛擬交換器連接埠群組上啟用 [偽造的傳輸] 可加大對跨距樹狀目錄迴圈的保護。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BlockGuestBPDU
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BlockGuestBPDU | Set-AdvancedSetting -Value 1

Net.DVFilterBindIpAddress

限制使用 dvFilter 網路 API。

如果不使用 VMware NSX 等利用 dvFilter 網路 API 的產品,請不要將 ESXi 主機設定為向 IP 位址傳送網路資訊。啟用該 API 並參考受到入侵的 IP 位址可能會允許對 ESXi 主機上其他虛擬機器的網路進行未經授權的存取。

如果使用依賴該 API 的產品,請務必確認已正確設定 ESXi 主機以確保網路通訊安全。

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

UserVars.ESXiShellTimeOut

設定逾時以限制允許 ESXi Shell 和 SSH 服務執行的時間長度。

此進階系統設定用於定義一個時間段,ESXi Shell 和 SSH 服務將在此時間段後自動終止。

安裝預設值:0
基準建議值:600
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellTimeOut
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting UserVars.ESXiShellTimeOut | Set-AdvancedSetting -Value 600

UserVars.SuppressShellWarning

隱藏針對支援介面和疑難排解介面的警告。

ESXi 主機不得隱藏指示 ESXi Shell 已啟用的警告。

指示 SSH 或 ESXi Shell 已啟用的警告可能表明攻擊正在進行中。請務必確保 SSH 和 ESXi Shell 處於停用狀態,並且未啟用此進階系統設定。

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

為 FIPS 設定 ESXi Secure Shell 精靈

必須將 ESXi 主機 Secure Shell (SSH) 精靈設定為僅使用經過 FIPS 140-2/140-3 驗證的加密。啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
基準建議值:[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'ciphers'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'ciphers'
$arguments.value = '[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

為 FIPS 設定 ESXi SSH 精靈

ESXi 主機 SSH 精靈必須使用經過 FIPS 140-2/140-3 驗證的密碼編譯模組。

ESXi 主機上的 OpenSSH 隨附經 FIPS 140-2/140-3 驗證的密碼編譯模組,該模組預設處於啟用狀態。基於回溯相容性考量,您可以停用此模組。稽核並進行必要的更正。

安裝預設值:True
基準建議值:True
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.security.fips140.ssh.get.Invoke()
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.security.fips140.ssh.set.CreateArgs()
$arguments.enable = $true
$ESXcli.system.security.fips140.ssh.set.Invoke($arguments)

ESXi Secure Shell 精靈定為不允許閘道連接埠

必須將 ESXi 主機 Secure Shell (SSH) 精靈設定為不允許閘道連接埠。

啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:否
基準建議值:否
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'gatewayports'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'gatewayports'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ESXi Secure Shell 精靈設定為不使用以主機為基礎的驗證

ESXi 主機 Secure Shell (SSH) 精靈不得允許以主機為基礎的驗證。

啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:否
基準建議值:否
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'hostbasedauthentication'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'hostbasedauthentication'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

設定 ESXi Secure Shell 精靈以設定逾時計數

ESXi 主機安全 Secure Shell (SSH) 精靈必須設定針對閒置工作階段的逾時計數。

啟用系統服務後,您必須強化並保護這些服務。逾時計數乘以閒置逾時時間間隔等於工作階段在中斷連線之前可以處於閒置狀態的總秒數。

安裝預設值:3
基準建議值:3
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'clientalivecountmax'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'clientalivecountmax'
$arguments.value = '3'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

設定 ESXi Secure Shell 精靈以設定逾時時間間隔

ESXi 主機安全 Secure Shell (SSH) 精靈必須設定針對閒置工作階段的逾時計數。

啟用系統服務後,您必須強化並保護這些服務。逾時計數乘以閒置逾時時間間隔等於工作階段在中斷連線之前可以處於閒置狀態的總秒數。

安裝預設值:200
基準建議值:200
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'clientaliveinterval'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'clientaliveinterval'
$arguments.value = '200'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ESXi Secure Shell 精靈設定為顯示登入橫幅

ESXi 主機 Secure Shell (SSH) 精靈必須顯示系統登入橫幅,然後才能授與對系統的存取權。

啟用系統服務後,您必須強化並保護這些服務。您還必須設定 Config.Etc.issue 設定,為此橫幅提供文字。

安裝預設值: /etc/issue
基準建議值: /etc/issue
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'banner'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'banner'
$arguments.value = '/etc/issue'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ESXi Secure Shell 精靈設定為忽略 .rhosts 檔案

ESXi 主機 Secure Shell (SSH) 精靈必須忽略 .rhosts 檔案。

啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:是
基準建議值:是
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'ignorerhosts'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'ignorerhosts'
$arguments.value = 'yes'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ESXi Secure Shell 精靈設定為停用流本機轉送

ESXi 主機 Secure Shell (SSH) 精靈必須停用串流本機轉送。

啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:否
基準建議值:否
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'allowstreamlocalforwarding'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'allowstreamlocalforwarding'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ESXi Secure Shell 精靈設定為停用 TCP 轉送

ESXi 主機 Secure Shell (SSH) 精靈必須停用 TCP 轉送。

啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:否
基準建議值:否
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'allowtcpforwarding'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'allowtcpforwarding'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ESXi Secure Shell 精靈設定為不允許使用通道

ESXi 主機 Secure Shell (SSH) 精靈不得允許使用通道。

啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:否
基準建議值:否
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'permittunnel'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'permittunnel'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

ESXi Secure Shell 精靈設定為不允許設定使用者環境

ESXi 主機 Secure Shell (SSH) 精靈不得允許設定使用者環境。

啟用系統服務後,您必須強化並保護這些服務。

安裝預設值:否
基準建議值:否
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.ssh.server.config.list.invoke() | Where-Object {$_.Key -eq 'permituserenvironment'} | Select-Object -ExpandProperty Value
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.ssh.server.config.set.CreateArgs()
$arguments.keyword = 'permituserenvironment'
$arguments.value = 'no'
$ESXcli.system.ssh.server.config.set.Invoke($arguments)

停用服務位置通訊協定服務

如果未使用服務位置通訊協定 (SLP) 服務,請將其停用。

安裝預設值:已停止、手動啟動和停止
基準建議值:已停止、手動啟動和停止
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'slpd' -and $_.Running -eq 'True'}
Get-VMHostService -VMHost $ESXi | Where-Object {$_.Key -eq 'slpd' -and $_.Policy -eq 'On'}
PowerCLI 命令修復範例
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'slpd'} | Set-VMHostService -Policy Off
Get-VMHostService -VMHost $ESXi | where {$_.Key -eq 'slpd'} | Stop-VMHostService

Mem.ShareForceSalting

限制只有設定了 sched.mem.pshare.salt 的虛擬機器可以使用透明分頁共用。

透明分頁共用 (TPS) 是一種用於減少虛擬機器記憶體使用量的方法。在高度受控的情況下,攻擊者可以使用 TPS 對相鄰虛擬機器上的資料進行未經授權的存取。未設定 sched.mem.pshare.salt 設定的虛擬機機器無法與其他虛擬機器共用記憶體。大型分頁大小可讓許多現代 CPU 上 hypervisor 實現效能最佳化,但與 TPS 不相容。

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

UserVars.HostClientSessionTimeout

設定逾時以自動終止閒置的 ESXi 主機用戶端工作階段。

ESXi 主機必須自動終止閒置的主機用戶端工作階段。此做法有助於確保自動工作階段 (可能會被未經授權的使用者或惡意軟體利用) 不會無限期處於開啟狀態,從而降低潛在的安全性風險。

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

Net.BMCNetworkEnable

停用虛擬硬體管理網路介面。

硬體管理控制器通常向 ESXi 主機提供虛擬 NIC 或 USB NIC。這些 NIC 可被用作後門,應同時在硬體組態和 ESXi 組態中停用。

安裝預設值:1
基準建議值:0
需要執行的動作
變更安裝預設值。
預設值已變更時的潛在功能影響
某些第三方受管理解決方案可能需要此功能。
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BMCNetworkEnable
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-AdvancedSetting Net.BMCNetworkEnable | Set-AdvancedSetting -Value 0

為 iSCSI 流量啟用雙向/相互 CHAP 驗證

將 iSCSI 儲存區介面卡驗證設定為「使用雙向 CHAP」並提供認證。

雙向 CHAP 透過要求啟用者 (用戶端) 和目標 (伺服器) 相互驗證其身分來提供額外一層保護,從而確保兩者之間傳輸的資料不被未經授權的實體攔截或變更。

安裝預設值:未設定
基準建議值:已啟用
需要執行的動作
如果使用此功能,請修改安裝預設值。
預設值已變更時的潛在功能影響
PowerCLI 命令評估
Get-VMHost -Name $ESXi | Get-VMHostHba | Where {$_.Type -eq "Iscsi"} | Select VMHost, Device, ChapType, @{N="CHAPName";E={$_.AuthenticationProperties.ChapName}}
PowerCLI 命令修復範例
Get-VMHost -Name $ESXi | Get-VMHostHba | Where {$_.Type -eq "Iscsi"} | Set-VMHostHba parameters

如需參數的相關資訊,請參閱ESXCLI 參考

不要將加密金鑰儲存在實際存取權沒有受到保護的 ESXi 主機上

如果對主機的實際存取權沒有受到保護,則 ESXi 主機不得將加密金鑰儲存在 ESXi 主機本身上。

金鑰持續性是一種機制,它使用本機信賴平台模組 (TPM) 來儲存標準金鑰提供者金鑰,通常只有外部金鑰管理系統 (KMS) 使用這種機制。雖然此設定可以改進相依性的管理,但使用金鑰持續性會變更加密風險。如果攻擊者竊取主機,他們可以繞過外部 KMS 的存取控制,從而存取該主機上資料的加密金鑰。因此,只有在可以確保主機的實體安全性時,才能使用金鑰持續性。如果實體主機不安全,並且攻擊者能夠竊取主機,則攻擊者還可以存取並使用加密的工作負載。

金鑰持續性通常與 vSphere Native Key Provider 混為一體,因為兩者都將加密資料儲存在主機上。但是 vSphere Native Key Provider 不使用金鑰持續性,因此停用金鑰持續性不會對其造成影響。與金鑰持續性機制一樣,vSphere Native Key Provider 也要求仔細考慮實體安全性。請參閱vSphere 系統設計安全性控制參考

安裝預設值:False
基準建議值:False
需要執行的動作
稽核安裝預設值。
預設值已變更時的潛在功能影響
預設行為是預期中的行為。如果變更預設值,可能會對攻擊者能夠進行實際存取的環境中的保密性產生負面影響。
PowerCLI 命令評估
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$ESXcli.system.security.keypersistence.get.invoke() | Select-Object -ExpandProperty Enabled
PowerCLI 命令修復範例
$ESXcli = Get-EsxCli -VMHost $ESXi -V2
$arguments = $ESXcli.system.security.keypersistence.disable.CreateArgs()
$arguments.removeallstoredkeys = $true
$ESXcli.system.security.keypersistence.disable.Invoke($arguments)