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 代理,禁用会导致主机失联,不能停。

ESXi 主机安全基线:六项配置的依赖与收敛关系 NTP 时间同步 ntp1 / ntp2 内网源 偏移 < 100 ms 证书管理 内部 CA 签发 替换自签名证书 防火墙规则 按服务放行 限制源 IP 网段 服务禁用策略 SSH / Shell 默认停 Policy = off SSH / ESXi Shell 临时开启 + 超时 5 分钟自动关闭 锁定模式 正常 / 严格 仅 vCenter 可管理 时间基准 证书校验 端口收敛 先停服务 通道收敛 最后启用 验证闭环 SSH 登录被拒 → 服务 Running=False / Policy=off → ntpq 偏移正常 → 浏览器证书无告警 → 防火墙仅放行管理网段

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 是否同步,证书是否替换,防火墙规则是否只放行管理网段。任何一项不通过,都说明基线未收敛,需要回到对应配置项修正。

加固顺序建议:NTP → 证书 → 服务禁用 → 防火墙 → SSH/Shell 超时 → 锁定模式。锁定模式放在最后,避免中途因 SSH 被禁而无法排障。
启用严格锁定模式前,务必确认 vCenter 可用且 root 密码已知。若 vCenter 失联,严格锁定模式下无法直接登录主机,只能通过 DCUI 或物理控制台恢复,风险较高。