3. ESXi主机安全基线配置
ESXi 主机的安全基线不是“装完即安全”,而是把一组默认开放或默认宽松的能力收敛到可控状态。核心配置项可以归为六类:锁定模式、SSH 与 ESXi Shell 访问控制、NTP 时间同步、证书管理、防火墙规则、服务禁用策略。它们之间存在依赖关系:时间不准会导致证书校验和日志关联失效;SSH 长期开启会绕过锁定模式的约束;防火墙规则放行过宽会让服务禁用策略形同虚设。因此加固顺序建议先做时间同步与证书,再收敛服务与防火墙,最后启用锁定模式并验证。
锁定模式:把“能登录”变成“只能通过 vCenter 管理”
锁定模式(Lockdown Mode)的作用是限制直接登录 ESXi 主机的方式。它有两种模式:正常锁定模式只允许 vCenter Server 通过特权账户管理主机,普通用户不能直接登录;严格锁定模式则连 root 账户也被禁止直接登录,所有管理动作必须经 vCenter 授权。启用后,Host Client 的直接登录会被拒绝,但 vCenter 仍可正常下发任务。
启用前必须确认:主机已加入 vCenter、vCenter 的 root 账户可用、DCUI 的 root 密码已知。否则一旦 vCenter 失联,主机将无法通过常规途径恢复。启用命令如下:
# 查看当前锁定模式状态
Get-VMHost -Name esxi01.lab.local | Select-Object Name, LockdownMode
# 启用正常锁定模式
Get-VMHost -Name esxi01.lab.local | Set-VMHost -LockdownMode Enabled
# 启用严格锁定模式
Get-VMHost -Name esxi01.lab.local | Set-VMHost -LockdownMode Strict
验证时不要只看属性值,还要实际尝试一次 SSH 登录,确认被拒绝并返回“Permission denied”或“Access denied”。若仍能登录,说明 SSH 服务或用户权限未收敛,需要回到服务禁用策略检查。
SSH 与 ESXi Shell:默认关闭,按需临时开启
SSH 和 ESXi Shell 是两条独立通道:SSH 提供远程命令行,ESXi Shell 提供 DCUI 的本地命令行。基线要求两者默认停止,仅在排障时临时启动,并设置自动关闭超时。Host Client 中可在“主机 → 操作 → 服务”里启动/停止,也可设置“ESXi Shell 可用性超时”和“SSH 可用性超时”,例如 5 分钟。
PowerCLI 中可用服务管理命令控制:
# 停止 SSH 与 ESXi Shell
Get-VMHostService -VMHost esxi01.lab.local |
Where-Object { $_.Key -in 'TSM-SSH','TSM' } |
Stop-VMHostService -Confirm:$false
# 查看服务运行状态
Get-VMHostService -VMHost esxi01.lab.local |
Select-Object Key, Label, Running, Policy
关键判断依据是 Running 为 False 且 Policy 为 off。若 Policy 为 on,即使当前停止,主机重启后仍会自动拉起,必须改为 off。
NTP 时间同步:证书与日志的基准
ESXi 默认使用 ntpd 或 chronyd。时间偏差超过证书有效期窗口时,vCenter 与主机的 TLS 握手会失败,表现为“证书尚未生效或已过期”。基线要求配置至少两个内网 NTP 源,并确保服务随主机启动。
# 添加 NTP 服务器并启动
Add-VMHostNtpServer -VMHost esxi01.lab.local -NtpServer 'ntp1.lab.local','ntp2.lab.local'
Get-VMHostService -VMHost esxi01.lab.local |
Where-Object { $_.Key -eq 'ntpd' } |
Set-VMHostService -Policy 'on' -Confirm:$false
Get-VMHostService -VMHost esxi01.lab.local |
Where-Object { $_.Key -eq 'ntpd' } |
Start-VMHostService -Confirm:$false
验证用 ntpq -p 查看偏移量,正常应小于 100 ms,且状态列出现 * 表示已同步。若长期为 INIT,检查防火墙是否放行 UDP 123。
证书管理:替换默认自签名证书
ESXi 默认使用自签名证书,浏览器和 vCenter 会告警。基线建议将主机证书替换为内部 CA 签发的证书。操作路径:Host Client → 主机 → 管理 → 安全性 → 证书 → 导入新证书。需要准备私钥、签名证书和 CA 链。替换后重启 hostd 服务使证书生效。验证时用浏览器访问 https://esxi01.lab.local,确认证书颁发者为内部 CA 且无告警。
防火墙规则与服务禁用策略
ESXi 防火墙按服务端口放行。基线原则是“只放行管理必需端口”。典型规则:SSH 仅允许跳板机网段,NTP 仅允许内网 NTP 源,vSphere Client 仅允许管理网段。Host Client 中在“网络 → 防火墙规则”逐条编辑,PowerCLI 可用 Get-VMHostFirewallException 查看并设置允许的 IP 列表。
# 查看防火墙规则
Get-VMHostFirewallException -VMHost esxi01.lab.local |
Select-Object Name, Enabled, AllowedIPAddress
# 限制 SSH 仅允许跳板机
Get-VMHostFirewallException -VMHost esxi01.lab.local -Name 'SSH Server' |
Set-VMHostFirewallException -Enabled:$true -AllowedIPAddress '10.10.20.5/32'
服务禁用策略与防火墙互补:不用的服务直接停止并设为 off,例如 TSM-SSH、TSM、snmpd、vpxa 之外的冗余服务。注意 vpxa 是 vCenter 代理,禁用会导致主机失联,不能停。
Host Client 与 PowerCLI 的配合
Host Client 适合逐项查看和临时调整,PowerCLI 适合批量加固与验证。建议把上述六项写成脚本,先读取当前状态,再逐项设置,最后统一输出验证结果。例如:
$hosts = 'esxi01.lab.local','esxi02.lab.local'
foreach ($h in $hosts) {
Get-VMHost -Name $h | Set-VMHost -LockdownMode Enabled
Get-VMHostService -VMHost $h |
Where-Object { $_.Key -in 'TSM-SSH','TSM' } |
Stop-VMHostService -Confirm:$false
Get-VMHostService -VMHost $h |
Where-Object { $_.Key -in 'TSM-SSH','TSM' } |
Set-VMHostService -Policy 'off' -Confirm:$false
}
执行后逐台检查:LockdownMode 是否为 Enabled,SSH 是否无法登录,NTP 是否同步,证书是否替换,防火墙规则是否只放行管理网段。任何一项不通过,都说明基线未收敛,需要回到对应配置项修正。