這些安全性控制提供了一組 vCenter Server 基準安全性最佳做法。它們的結構化方式說明了實作控制的優勢和權衡。若要進行變更,可以使用 vSphere Client、PowerCLI 或 vCenter Server 管理介面,具體取決於控制項。
PowerCLI 和使用的變數
此處使用的一些 PowerCLI 範例要求安裝 VMware.vSphere.SsoAdmin 模組。
本節中的 PowerCLI 命令使用以下變數:
- $VC="vcenter_server_name"
- $VDS="vsphere_distributed_switch_name"
- $VDPG="vsphere_distributed_port_group"
設定 vSphere Client 非作用中狀態逾時
vCenter Server 必須在 vSphere Client 工作階段處於非作用中狀態達到 15 分鐘後將其終止。
如果使用者忘記登出,閒置的 vSphere Client 工作階段可能會無限期保持開啟狀態,從而增加了未經授權的特殊權限存取的風險。
設定失敗登入嘗試時間間隔
vCenter Server 必須將統計失敗登入嘗試次數的時間間隔設定為 15 分鐘或更長時間。
透過限制失敗登入嘗試次數,可以降低利用使用者密碼猜測進行未經授權的存取 (也稱為暴力密碼破解攻擊) 的風險。
設定 vSphere SSO 鎖定原則最大嘗試次數
vCenter Server 必須在經過指定次數的失敗登入嘗試後鎖定帳戶。
帳戶反覆登入失敗可能表明存在安全性問題。若要限制暴力密碼破解攻擊嘗試,可在達到特定臨界值後鎖定帳戶,並在避免自動連線重試和潛在的拒絕服務攻擊之間實現平衡。
設定 vSphere SSO 鎖定原則解除鎖定時間
vCenter Server 必須在指定的逾時期間後解除鎖定帳戶。
反覆登入失敗可能表明存在安全性威脅。vCenter Server 帳戶由於多次登入失敗而被鎖定時,不應自動解除鎖定。確保您擁有 [email protected] 資訊,且資訊有效。
- 值
- 安裝預設值:300
- 建議的動作
- 變更安裝預設值。
- 預設值已變更時的潛在功能影響
- 當帳戶未自動解除鎖定時,可能會出現拒絕服務。
- 在 vSphere Client 中設定位置
強制執行密碼複雜性
vCenter Server 必須強制執行密碼複雜性。
現代密碼最佳做法 (請參閱 NIST 800-63B 第 5.1.1.2 條及其他指引) 指出,如果密碼熵充足,則任意要求使用者按特定時間間隔變更其密碼並不能提高安全性。許多自動化安全性工具和法規合規性架構並未反映此指引,因此可能會導致此建議不起作用。
密碼強度和複雜性規則適用於在 vSphere SSO 中建立的帳戶,包括 [email protected] (或在安裝期間指定的其他網域,例如 administrator@mydomain)。當 vCenter Server 加入網域時,這些規則不適用於 Active Directory 使用者,因為 AD 會強制執行這些密碼原則。
- 值
-
安裝預設值:
最大長度:20
最小長度:8
至少 1 個特殊字元
至少 2 個字母
至少 1 個大寫字母
至少 1 個小寫字母
至少 1 個數字
3 個相同的相鄰字元
- 建議的動作
- 修改安裝預設值。
- 預設值已變更時的潛在功能影響
- VMware 生態系統中的其他產品和服務可能不希望變更密碼複雜性需求,這可能會導致安裝失敗。
- PowerCLI 命令修復範例
-
Get-SsoPasswordPolicy | Set-SsoPasswordPolicy -MinLength 15 -MaxLength 64 -MinNumericCount 1 -MinSpecialCharCount 1 -MinAlphabeticCount 2 -MinUppercaseCount 1 -MinLowercaseCount 1 -MaxIdenticalAdjacentCharacters 3
- 在 vSphere Client 中設定位置
設定兩次變更密碼之間的天數上限
必須為 vCenter Server 設定適當的最長密碼有效期。
現代密碼最佳做法 (請參閱 NIST 800-63B 第 5.1.1.2 條及其他指引) 指出,如果密碼熵充足,則任意要求使用者按特定時間間隔變更其密碼並不能提高安全性。許多自動化安全性工具和法規合規性架構並未反映此指引,因此可能會導致此建議不起作用。
限制密碼重複使用
設定密碼歷程記錄設定,以限制在 vCenter Server 上重複使用密碼。
密碼複雜性準則有時會導致使用者重複使用舊密碼。在 vCenter Server 上設定密碼歷程記錄設定有助於防止這種情況。
設定 SSH 存取的登入橫幅文字
設定使用 SSH 進行存取時的 vCenter Server 登入橫幅文字。
vCenter Server 會傳送登入訊息,從而阻止入侵者並向授權使用者傳達義務。此組態將確定用戶端使用 SSH 進行連線時顯示的文字。預設文字會向攻擊者外洩系統組態的相關資訊,應進行變更。
- PowerCLI 命令修復範例
-
Get-AdvancedSetting -Entity $VC -Name etc.issue | Set-AdvancedSetting -Value "Authorized users only. Actual or attempted unauthorized use of this system is prohibited and may result in criminal, civil, security, or administrative proceedings and/or penalties. Use of this information system indicates consent to monitoring and recording, without notice or permission. Users have no expectation of privacy in any use of this system. Any information stored on, or transiting this system, or obtained by monitoring and/or recording, may be disclosed to law enforcement and/or used in accordance with Federal law, State statute, and organization policy. If you are not an authorized user of this system, exit the system at this time."
設定工作和保留時間間隔
vCenter Server 必須將工作和事件保留期設定為適當的時間間隔。
vCenter Server 會保留工作和事件資料,這些資料會過期以節省儲存空間。存留期是可設定的。這只會影響 vCenter Server Appliance 上事件資料的本機儲存。
啟用遠端記錄
啟用 vCenter Server 事件的遠端記錄。
遠程記錄到中央主機可安全地儲存記錄,從而增強 vCenter Server 的安全性。遠端記錄可簡化主機之間的監控,並支援進行彙總分析以偵測協調攻擊。集中式記錄可防止竄改,並可用作可靠的長期稽核記錄。vpxd.event.syslog.enabled 設定用於啟用遠端記錄。
啟用 FIPS
vCenter Server 必須啟用 FIPS 驗證的密碼編譯。
FIPS 密碼編譯對系統進行一些變更以移除較低強度的密碼。啟用 FIPS 會導致 vCenter Server 重新啟動。
- PowerCLI 命令修復範例
-
$spec = Initialize-SystemSecurityGlobalFipsUpdateSpec -Enabled $true Invoke-SetSystemGlobalFips -SystemSecurityGlobalFipsUpdateSpec $spec
- 在 vSphere Client 中設定位置
- 請參閱 在 vCenter Server Appliance 上啟用和停用 FIPS。
設定稽核記錄
vCenter Server 必須產生稽核記錄,其中包含用於確定所發生事件類型的資訊。
請務必確保稽核記錄中存在足夠的資訊,以便進行診斷和鑑識。config.log.level 設定用於設定稽核記錄。
停用 MAC 學習
除非有意使用,否則所有分散式交換器連接埠群組都必須停用 MAC 學習。
MAC 學習使分散式交換器能夠為 vNIC 使用多個 MAC 位址的系統提供網路連線。這在巢狀虛擬化等特殊情況下很有用 (例如,在 ESXi 內部執行 ESXi) 。MAC 學習還支援未知的單點傳播洪泛。通常,當連接埠收到的封包具有未知的目標 MAC 位址時,將丟棄該封包。如果啟用未知的單點傳播洪泛,則連接埠會將未知的單點傳播流量洪泛至已啟用 MAC 學習和未知單點傳播洪泛之交換器上的每個連接埠。此內容預設處於啟用狀態,但僅在啟用 MAC 學習時才會這樣。停用 MAC 學習,除非正有意用於需要 MAC 學習的已知工作負載。
- PowerCLI 命令評估
-
(Get-VDPortgroup -Name $VDPG).ExtensionData.Config.DefaultPortConfig.MacManagementPolicy.MacLearningPolicy | Select-Object -ExpandProperty Enabled
- PowerCLI 命令修復範例
-
$VDPGview = Get-VDPortgroup -Name $VDPG | Get-View $ConfigSpec = New-Object VMware.Vim.DVPortgroupConfigSpec $ConfigSpec.DefaultPortConfig = New-Object VMware.Vim.VMwareDVSPortSetting $ConfigSpec.DefaultPortConfig.MacManagementPolicy = New-Object VMware.Vim.DVSMacManagementPolicy $ConfigSpec.DefaultPortConfig.MacManagementPolicy.MacLearningPolicy = New-Object VMware.Vim.DVSMacLearningPolicy $ConfigSpec.DefaultPortConfig.MacManagementPolicy.MacLearningPolicy.Enabled = $false $ConfigSpec.ConfigVersion = $VDPGview.Config.ConfigVersion $VDPGview.ReconfigureDVPortgroup_Task($ConfigSpec)
設定登入訊息橫幅詳細資料
設定 vSphere Client 的 vCenter Server 登入橫幅詳細資料。
vCenter Server 提供了顯示登入訊息的功能。登入訊息的用途包括通知侵入者他們的活動是非法的,以及向授權使用者傳達在使用系統期間必須滿足且同意的期望和義務。此組態用於設定 vSphere Client 登入頁面訊息中的詳細文字。
- PowerCLI 命令評估
-
不適用 (沒有公用 API 可用)
您可以透過在應用裝置 shell 中執行以下命令來設定登入訊息:
/opt/vmware/bin/sso-config.sh -set_login_banner -title login_banner_title logonBannerFile
完成後,請務必再次停用 shell。
啟用登入橫幅
啟用 vSphere Client 的 vCenter Server 登入橫幅。
vCenter Server 提供了顯示登入訊息的功能。登入訊息的用途包括通知侵入者他們的活動是非法的,以及向授權使用者傳達在使用系統期間必須滿足且同意的期望和義務。此組態用於啟用訊息在 vSphere Client 登入頁面上的顯示。
- PowerCLI 命令評估
-
不適用 (沒有公用 API 可用)
您可以透過在應用裝置 shell 中執行以下命令來設定登入訊息:
/opt/vmware/bin/sso-config.sh -set_logon_banner -title logon_banner_title logonBannerFile
完成後,請務必再次停用 shell。
設定登入橫幅文字
設定 vSphere Client 的 vCenter Server 登入橫幅文字。
vCenter Server 提供了顯示登入訊息的功能。登入訊息的用途包括通知侵入者他們的活動是非法的,以及向授權使用者傳達在使用系統期間必須滿足且同意的期望和義務。此組態用於確定在 vSphere Client 登入頁面上顯示的文字。
- PowerCLI 命令評估
-
不適用 (沒有公用 API 可用)
您可以透過在應用裝置 shell 中執行以下命令來設定登入訊息:
/opt/vmware/bin/sso-config.sh -set_logon_banner -title logon_banner_title logonBannerFile
完成後,請務必再次停用 shell。
將管理員的驗證和授權分開
vCenter Server 必須將管理員的驗證和授權分開。
如果像 Active Directory 等服務一樣將驗證和授權結合,則當基礎結構遭到破壞時可能會違規。因此,對於 vCenter Server,請確保將管理員的驗證和授權分開。請考慮使用本機 SSO 群組進行授權,以便在可行的情況下更好地管理風險。
將 [偽造的傳輸] 原則設定為 [拒絕]
將所有分散式交換器及其連接埠群組設定為拒絕偽造的傳輸。
虛擬機器可以透過變更 MAC 位址來模擬網路介面卡,從而帶來安全性威脅。透過在所有分散式交換器和連接埠群組上將 [偽造的傳輸] 選項設定為 [拒絕],ESXi 會驗證 MAC 位址並阻止此類模擬。
- PowerCLI 命令評估
-
Get-VDSwitch -Name $VDS | Get-VDSecurityPolicy Get-VDPortgroup -Name $VDPG | Get-VDSecurityPolicy
將 [MAC 位址變更] 原則設定為 [拒絕]
在 vSphere Standard Switch 及其連接埠群組上將 [MAC 位址變更] 原則設定為 [拒絕]。
允許虛擬機器變更 MAC 位址會帶來安全風險,從而引發潛在的網路介面卡模擬。拒絕所有分散式交換器和連接埠群組上的 MAC 變更可防止這種情況,但可能會影響某些應用程式,例如 Microsoft Clustering 或 MAC 位址相關的授權。如有必要,可對此安全性指引作出例外處理。
- PowerCLI 命令評估
-
Get-VDSwitch -Name $VDS | Get-VDSecurityPolicy Get-VDPortgroup -Name $VDPG | Get-VDSecurityPolicy
將 [混合模式] 原則設定為 [拒絕]
在 vSphere Standard Switch 及其連接埠群組上將 [混合模式] 原則設定為 [拒絕]。
在連接埠群組上啟用混合模式會允許所有已連線的虛擬機器讀取所有網路封包,從而帶來潛在的安全風險。儘管有時需要啟用混合模式以進行偵錯或監控,但建議使用預設設定「拒絕」。根據需要對特定連接埠群組作出例外處理。
- PowerCLI 命令評估
-
Get-VDSwitch -Name $VDS | Get-VDSecurityPolicy Get-VDPortgroup -Name $VDPG | Get-VDSecurityPolicy
在虛擬機器中斷連線時重設連接埠組態
當虛擬機器中斷連線時,vCenter Server 必須重設連接埠組態。
當虛擬機器與虛擬交換器連接埠中斷連線時,最好重設連接埠組態,以便連結的另一個虛擬機器的連接埠處於已知狀態。
- PowerCLI 命令評估
-
(Get-VDPortgroup -Name $VDPG).ExtensionData.Config.Policy | Select-Object -ExpandProperty PortConfigResetAtDisconnect
- PowerCLI 命令修復範例
-
$VDPGview = Get-VDPortgroup -Name $VDPG | Get-View $ConfigSpec = New-Object VMware.Vim.DVPortgroupConfigSpec $ConfigSpec.DefaultPortConfig = New-Object VMware.Vim.VMwareDVSPortSetting $ConfigSpec.Policy = New-Object VMware.Vim.VMwareDVSPortgroupPolicy $ConfigSpec.Policy.PortConfigResetAtDisconnect = $true $ConfigSpec.ConfigVersion = $VDPGview.Config.ConfigVersion $VDPGview.ReconfigureDVPortgroup_Task($ConfigSpec)
停用 Cisco 探索通訊協定或連結層探索通訊協定
除非有意使用,否則應在分散式交換器上阻止加入 Cisco 探索通訊協定 (CDP) 或連結層探索通訊協定 (LLDP)。
vSphere 分散式虛擬交換器可能會加入 CDP 或 LLDP,從而可能會在網路上共用未加密的敏感資訊 (例如 IP 位址和系統名稱)。因此,CDP 和 LLDP 可以幫助對手瞭解或模擬您的環境。但是,CDP 和 LLDP 對合法使用案例也極其有用。請停用 CDP 和 LLDP,除非進行疑難排解或組態驗證需要加以啟用。
- PowerCLI 命令評估
-
(Get-VDSwitch -Name $VDS).ExtensionData.config.LinkDiscoveryProtocolConfig | Select-Object -ExpandProperty Operation
- PowerCLI 命令修復範例
-
$VDview = Get-VDSwitch -Name $VDS | Get-View $ConfigSpec = New-Object VMware.Vim.VMwareDVSConfigSpec $ConfigSpec.LinkDiscoveryProtocolConfig = New-Object VMware.Vim.LinkDiscoveryProtocolConfig $ConfigSpec.LinkDiscoveryProtocolConfig.Protocol = 'cdp' $ConfigSpec.LinkDiscoveryProtocolConfig.Operation = 'none' $ConfigSpec.ConfigVersion = $VDview.Config.ConfigVersion $VDview.ReconfigureDvs_Task($ConfigSpec)
確保授權收集器接收 NetFlow 流量
vCenter Server 必須確保將 NetFlow 流量傳送到授權收集器。
vSphere Distributed Switch 可能會匯出未加密的 NetFlow 資料,從而洩漏有關虛擬網路和流量模式的詳細資料。確認已正確授權並設定 NetFlow 的使用,以防止資訊外洩。
- PowerCLI 命令評估
-
(Get-VDSwitch -Name $VDS).ExtensionData.config.IpfixConfig.CollectorIpAddress | Select-Object -ExpandProperty CollectorIpAddress (Get-VDPortgroup -Name $VDPG).ExtensionData.Config.DefaultPortConfig.IpfixEnabled | Select-Object -ExpandProperty Value
- PowerCLI 命令修復範例
-
$VDPGview = Get-VDPortgroup -Name $VDPG | Get-View $ConfigSpec = New-Object VMware.Vim.DVPortgroupConfigSpec $ConfigSpec.DefaultPortConfig = New-Object VMware.Vim.VMwareDVSPortSetting $ConfigSpec.DefaultPortConfig.IpfixEnabled = New-Object VMware.Vim.BoolPolicy $ConfigSpec.DefaultPortConfig.IpfixEnabled.Inherited = $false $ConfigSpec.DefaultPortConfig.IpfixEnabled.Value = $false $ConfigSpec.ConfigVersion = $VDPGview.Config.ConfigVersion $VDPGview.ReconfigureDVPortgroup_Task($ConfigSpec)
設定虛擬機器連接埠安全性
vCenter Server 不得覆寫分散式交換器上連接埠層級的連接埠群組設定,除非要封鎖連接埠。
儘管獨特的虛擬機器設定可能需要覆寫連接埠層級組態,但請務必對其進行監控以防止未經授權的使用。如果利用安全性較低的分散式交換器組態,不受監控的覆寫可能會允許更廣泛的存取。
- PowerCLI 命令修復範例
-
$VDPGview = Get-VDPortgroup -Name $VDPG | Get-View $ConfigSpec = New-Object VMware.Vim.DVPortgroupConfigSpec $ConfigSpec.DefaultPortConfig = New-Object VMware.Vim.VMwareDVSPortSetting $ConfigSpec.Policy = New-Object VMware.Vim.VMwareDVSPortgroupPolicy $ConfigSpec.Policy.UplinkTeamingOverrideAllowed = $false $ConfigSpec.Policy.BlockOverrideAllowed = $true $ConfigSpec.Policy.LivePortMovingAllowed = $false $ConfigSpec.Policy.VlanOverrideAllowed = $false $ConfigSpec.Policy.SecurityPolicyOverrideAllowed = $false $ConfigSpec.Policy.VendorConfigOverrideAllowed = $false $ConfigSpec.Policy.ShapingOverrideAllowed = $false $ConfigSpec.Policy.IpfixOverrideAllowed = $false $ConfigSpec.Policy.TrafficFilterOverrideAllowed = $false $ConfigSpec.ConfigVersion = $VDPGview.Config.ConfigVersion $VDPGview.ReconfigureDVPortgroup_Task($ConfigSpec)
移除連接埠鏡像
vCenter Server 必須移除分散式交換器上未授權的連接埠鏡像工作階段。
vSphere Distributed Switch 可能會鏡像連接埠之間的流量,從而啟用流量觀察。為保持安全性,必須移除分散式交換器上任何未經授權的連接埠鏡像工作階段。
限制虛擬客體標記
vCenter Server 必須限制在分散式交換器上使用虛擬客體標記 (VGT)。
將連接埠群組設定為 VLAN 4095 會允許使用虛擬客體標記 (VGT),以要求虛擬機器處理 VLAN 標籤。僅為獲得管理 VLAN 標記的標籤且具有相應功能的虛擬機器啟用 VGT。使用不當可能會導致拒絕服務或發生未經授權的 VLAN 流量互動。
檢查 vCenter Server 版本的 VMware 維護
確保 vCenter Server 版本未達到 VMware 終止一般支援狀態。
限制對 SSH 的存取
必須停用 vCenter Server SSH 服務。
vCenter Server Appliance 作為應用裝置提供,旨在透過 vCenter Server 管理介面、vSphere Client 和 API 進行管理。SSH 是一個疑難排解和支援工具,僅在必要時啟用。vCenter Server High Availability 使用 SSH 在節點之間協調複寫和容錯移轉。若要使用此功能,需要將 SSH 保持啟用狀態。
驗證 root 使用者密碼到期設定
必須正確設定 vCenter Server 根帳戶密碼到期設定。
現代密碼最佳做法 (NIST 800-63B 第 5.1.1.2 條及其他指引) 指出,如果密碼熵充足,則任意要求使用者按特定時間間隔變更其密碼並不能提高安全性。許多自動化安全性工具和法規合規性架構並未反映此指引,因此可能會導致此建議不起作用。
設定以檔案為基礎的備份和復原
設定以檔案為基礎的備份和復原,以便使用 vCenter Server 安裝程式來復原 vCenter Server Appliance 及其組態。備份和還原是保護環境的一個重要部分。
將防火牆設定為僅允許來自授權網路的流量
vCenter Server Appliance 必須將防火牆設定為僅允許來自授權網路的流量。
確保封鎖所有傳入和傳出網路流量 (除非明確允許),從而縮小受攻擊面並協助阻止對系統進行未經授權的存取。不會封鎖傳出 (出口) 流量,也不會封鎖相關連線或已建立的連線,因此 vCenter Server Appliance 仍能夠與起始連線的系統通訊。使用周邊防火牆來減少這些類型的連線。
設定遠端記錄伺服器
為 vCenter Server 設定遠端記錄伺服器。
遠程記錄到中央主機可安全地儲存記錄,從而增強 vCenter Server 的安全性。遠端記錄可簡化主機之間的監控,並支援進行彙總分析以偵測協調攻擊。集中式記錄可防止竄改,並可用作可靠的長期稽核記錄。
設定時間同步
vCenter Server 必須具有可靠的時間同步來源。
密碼編譯、稽核記錄、叢集作業、事件回應和鑑識在很大程度上依賴同步時間。網路時間通訊協定 (NTP) 必須具有至少四個來源。如果必須在兩個來源和一個來源之間進行選擇,則最好選擇一個來源。
安裝軟體更新
確保 vCenter Server 已安裝所有軟體更新。
透過將 vCenter Server 修補程式保持最新狀態,可以緩解漏洞的影響。攻擊者可以在嘗試取得未經授權的存取權限或提升權限時利用已知漏洞。
套用更新時,請先更新 vCenter Server (如果有可用更新),然後繼續更新 ESXi。此順序可確保在更新 ESXi 主機之前更新管理層。
輪替 vpxuser 密碼
vCenter Server 必須將 vpxuser 密碼設定為按適當的時間間隔輪替。
VirtualCenter.VimPasswordExpirationInDays 設定用於設定輪替期間。確保 vCenter Server 正確輪替其在 ESXi 主機上自動設定的密碼。