HOME

vCenter 6.0 Windows 版等保项验证记录:超时退出、日志留存、口令保护和备份边界

文章目录13 节

这次验证的对象是一套老版本 VMware 环境:vCenter Server 6.0 部署在 Windows Server 2012 R2 上,使用外置 SQL Server 2014,另有一台 ESXi 6.0 主机。目标不是做一次完整安全加固,而是围绕等保检查中经常被问到的四个问题,给出能落地、能截图、能复核的实践流程:

  • vSphere Web Client 和 Windows 版 vSphere Client 是否能做到空闲超时自动退出。
  • vCenterESXi 的日志怎样集中留存,能不能满足 6 个月要求。
  • VMware 管理软件的用户口令到底存在哪里,采用什么保护方式。
  • vCenter 配置文件在哪里,备份时是不是只备 SQL Server 就够。

这几个问题容易混在一起。尤其是 vCenter 6.0 还处在 Flash Web Client、Windows C# Client、Windows vCenter、外置 SQL Server 并存的阶段。我们这次按“先分清对象,再验证配置,再留证”的方式处理。

实验环境

项目信息
vCenter 形态Windows 版 vCenter Server 6.0
操作系统Windows Server 2012 R2
数据库外置 SQL Server 2014
vCenter IP10.0.100.4
ESXi IP10.0.100.5
日志平台ManageEngine EventLog Analyzer
日志平台 IP10.0.100.3
Windows 日志转发 AgentNXLog Community Edition 3.2.2329

登录超时退出要分两条线

vCenter 6.0 常用两个管理入口:

  • vSphere Web Client:浏览器访问,vCenter 6.0 时代主要依赖 Flash。
  • vSphere Client 程序:Windows 上安装的 C# Client,也叫 Thick Client。

两者都能做空闲超时,但配置位置不同。Web Client 是 vCenter 服务端配置;Windows vSphere Client 是客户端本机配置。这个边界要写清楚,否则整改结论容易被问倒。

vSphere Web Client 的超时退出

Windows 版 vCenter 的 Web Client 配置文件在:

C:\ProgramData\VMware\vCenterServer\cfg\vsphere-client\webclient.properties

本次验证项:

session.timeout = 2

session.timeout 的单位是分钟,默认值通常为 120 分钟。实验时设成 2 分钟,便于快速观察会话失效;正式环境应按制度要求设置为 15、30 或其他合规值。

Web Client session.timeout 配置

修改后需要重启 vSphere Web Client 服务,或者重新建立客户端会话后验证:

"C:\Program Files\VMware\vCenter Server\bin\service-control" --stop vspherewebclientsvc
"C:\Program Files\VMware\vCenter Server\bin\service-control" --start vspherewebclientsvc

本次结果:Web Client 超时配置已验证成功。需要注意,这个配置只影响 Web Client,不影响 Windows 版 vSphere Client 程序。

Windows vSphere Client 程序的超时退出

Windows vSphere Client 的空闲超时属于客户端本机配置,不是 vCenter Server 端统一强制配置项。可用两种方式:

启动参数:VpxClient.exe -inactivityTimeout 2
配置文件:VpxClient.exe.config

配置文件路径:

C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe.config

<cmdlineFallback> 中加入:

<inactivityTimeout>2</inactivityTimeout>

VpxClient.exe.config 文件位置

VpxClient.exe.config 中配置 inactivityTimeout

验证现象是客户端弹出非活动超时提示:

客户端由于不活动已注销。是否要重新登录?

vSphere Client 非活动超时验证结果

生产整改时,如果单位希望统一控制 Windows 客户端,可以通过 GPO、软件分发、统一快捷方式或统一下发 VpxClient.exe.config 实现。这里的关键结论是:vCenter 6.0 服务器端没有一个统一设置,可以强制所有 Windows C# Client 按某个空闲时间退出。

日志留存不能只看 vCenter 自带功能

这套环境里日志要分三类:

  • ESXi 主机 syslog。
  • Windows vCenter 自身日志,包括 Windows Event Log 和 C:\ProgramData\VMware\vCenterServer\Logs\
  • vCenter 数据库中的任务和事件。

ESXi 有内置远程 syslog 配置;Windows 版 vCenter 6.0 没有类似 ESXi Syslog.global.logHost 的统一远程 syslog 配置。vSphere Client 菜单里的 Network Syslog Collector 是让 vCenter 充当 ESXi 日志接收端,不是让 vCenter 自己把日志发出去。

这次我们采用的方案是:

ESXi 10.0.100.5 -> ManageEngine EventLog Analyzer 10.0.100.3
Windows vCenter 10.0.100.4 -> NXLog -> ManageEngine EventLog Analyzer 10.0.100.3
vCenter 任务/事件 -> vCenter 数据库保留策略设置为 180 天

ESXi syslog 转发

ESXi 高级设置中配置:

Syslog.global.logHost = udp://10.0.100.3:514

其中 10.0.100.3 是本次实验的 EventLog Analyzer 地址,514 是日志平台监听端口,udp 是本次使用的传输协议。生产环境不要直接照抄这三个值,应先确认日志平台实际监听地址、协议和端口。

可自定义参数如下:

参数示例值说明
日志平台 IP10.0.100.3按现场 EventLog Analyzer、Syslog Server 或 SIEM 地址修改
协议udp按日志平台监听方式修改;若改用 TCP 或加密通道,要同步调整平台和防火墙
端口514按日志平台实际监听端口修改
ESXi 防火墙规则syslog必须启用,否则 logHost 写对也可能发不出去

命令行等价配置可以按下面方式写成变量,便于现场替换:

# 可按现场调整:集中日志平台 IP、协议和端口
SYSLOG_SERVER="10.0.100.3"
SYSLOG_PROTO="udp"
SYSLOG_PORT="514"

# 配置 ESXi 远程 syslog 地址
esxcli system syslog config set --loghost="${SYSLOG_PROTO}://${SYSLOG_SERVER}:${SYSLOG_PORT}"

# 启用 ESXi 防火墙中的 syslog ruleset
esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true

# 刷新防火墙配置
esxcli network firewall refresh

# 重新加载 syslog 服务配置
esxcli system syslog reload

这里踩过一个小坑:Syslog.global.logHost 已经写对时,日志仍可能发不出去,因为 ESXi 防火墙里的 syslog ruleset 没启用。我们在 ESXi 上核到的状态是:

Remote Host: udp://10.0.100.3:514
syslog true

ESXi Syslog 服务状态

测试命令:

# 可按现场调整:写一条带 ESXi 主机 IP 或主机名的测试标记,方便在日志平台搜索
esxcli system syslog mark --message='test syslog from esxi 10.0.100.5 to manageengine'

EventLog Analyzer 中可以看到来自 10.0.100.5 的 syslog 数据:

EventLog Analyzer 接收 ESXi syslog

Windows vCenter 日志转发

Windows 版 vCenter 6.0 自身日志主要在:

C:\ProgramData\VMware\vCenterServer\Logs\
Windows Event Log

我们使用 NXLog Community Edition 做转发,安装包已放在:

安装包/nxlog-ce-3.2.2329.msi

NXLog 配置文件已归档在:

配置文件/nxlog.conf

核心配置是两路输入、一路输出:

<Input winevent>
    Module im_msvistalog
</Input>

<Input vcenter_files>
    Module im_file
    File "C:\\ProgramData\\VMware\\vCenterServer\\Logs\\*.log"
    Recursive TRUE
    SavePos TRUE
    ReadFromLast TRUE
    InputType LineBased
    Exec $Message = $raw_event; $SourceName = file_name();
</Input>

<Output manageengine>
    Module om_udp
    Host 10.0.100.3
    Port 514
    Exec to_syslog_bsd();
</Output>

<Route out>
    Path winevent, vcenter_files => manageengine
</Route>

这段配置的作用范围很明确:采集 Windows Event Log 和 vCenter 日志文件,转发到 10.0.100.3:514/UDP。它不修改 vCenter 服务,不连接 SQL Server,也不采集数据库内容。

验证时写入了一条 Windows 事件日志,EventLog Analyzer 已收到来自 10.0.100.4 的日志:

EventLog Analyzer 接收 Windows vCenter 日志

6 个月留存放在哪里

ESXi 本机日志只支持按大小和轮转数量控制,例如:

Syslog.global.defaultRotate
Syslog.global.defaultSize

这不能可靠表达“保留 6 个月”。日志量大时可能很快覆盖,日志量小时可能留得更久。等保里的 6 个月留存应放在集中日志平台上实现。

EventLog Analyzer 中需要配置归档或保留策略,保留不少于 180 天。ESXi 和 vCenter Windows 日志都进入日志平台后,平台才是留存证明的主体。

vCenter 自身还有一类记录在数据库中:任务和事件。这个可以在 Windows vSphere Client 中设置:

系统管理 -> vCenter Server 设置 -> 数据库保留策略

本次实验设置为:

任务保留:180 天
事件保留:180 天

vCenter Server 设置入口

vCenter 数据库保留策略

这项只管 vCenter 数据库里的任务和事件,不等于 ESXi syslog 留存,也不等于 vCenter 本机日志文件留存。

口令存储算法的边界

口令问题也要分对象。

对于 vCenter 本地 SSO 用户,例如:

administrator@vsphere.local

口令存放在 VMware Directory Service,也就是 vmdir/SSO LDAP 中。我们在这台 Windows vCenter 上核到 vmdir 数据文件位置:

C:\ProgramData\VMware\vCenterServer\data\vmdird\data.mdb

根据 VMware/Broadcom 资料,SSO 本地用户口令通过 hash 保护,公开资料可支撑的说法是 SHA-512 hash;同时 VMware 也说明更细的内部实现细节属于厂商内部机制,不提供完整公开文档。因此报告里建议这样写:

vCenter 本地 SSO 用户口令存放在 VMware Directory Service / vmdir 中,采用 SHA-512 hash 方式保护,不以明文存储。更细的内部实现细节 VMware 未公开。

还要补充三个边界:

  • AD/LDAP 域用户:vCenter 不保存域用户口令,由 AD/LDAP 认证。
  • Windows Server 本地账号:由 Windows 操作系统自身保护,不属于 vCenter SSO 口令存储。
  • ESXi 本地账号和 vpxuser:VMware 资料说明 ESXi 侧使用 salted SHA512 hash;vCenter 为管理 ESXi 保存管理凭据的内部实现不应擅自写成某个可验证算法,报告中写“厂商未公开内部细节”更稳。

Broadcom 关于 SSO 口令存储的说明

配置文件不都在 SQL Server 里

这台环境的 vCenter 使用外置 SQL Server,vpxd.cfg 中可以看到:

<odbc>
  <dbtype>external</dbtype>
  <dsn>vcenter</dsn>
</odbc>

ODBC DSN 为:

vcenter

SQL Server 数据库名为:

vcenter

但这不代表 vCenter 的所有东西都在 SQL Server 里。SQL Server 主要保存 vCenter 清单、权限、任务、事件、性能统计等运行数据。配置文件、证书、SSO/vmdir 数据、日志、服务运行文件仍在 Windows 文件系统中。

重点路径:

C:\ProgramData\VMware\vCenterServer\cfg\
C:\ProgramData\VMware\vCenterServer\data\
C:\ProgramData\VMware\vCenterServer\Logs\
C:\Program Files\VMware\vCenter Server\

关键文件:

C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\vpxd.cfg
C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\vcdb.properties
C:\ProgramData\VMware\vCenterServer\cfg\vsphere-client\webclient.properties
C:\ProgramData\VMware\vCenterServer\cfg\vmsyslogcollector\config.xml

归档文件已放在:

配置文件/vpxd.cfg
配置文件/webclient.properties
配置文件/nxlog.conf
配置文件/esxi-syslog-evidence.txt

文件侧备份脚本

考虑到客户现场 SQL Server 版本、实例名、数据库名和认证方式不一定相同,我们没有把数据库备份写进统一脚本。数据库应由现场 SQL Server 备份策略负责。

这次生成的脚本只备份 vCenter 文件侧配置、证书和关键数据:

脚本/Backup-VCenterFiles.ps1

默认备份:

C:\ProgramData\VMware\vCenterServer\cfg
C:\ProgramData\VMware\vCenterServer\data\certs
C:\ProgramData\VMware\vCenterServer\data\vmca
C:\ProgramData\VMware\vCenterServer\data\vmafdd
C:\ProgramData\VMware\vCenterServer\data\vmware-vpx

默认不备份:

SQL Server 数据库
C:\ProgramData\VMware\vCenterServer\data\db
C:\ProgramData\VMware\vCenterServer\data\vmdird 运行中数据库文件
C:\ProgramData\VMware\vCenterServer\runtime
C:\ProgramData\VMware\vCenterServer\Logs

不复制 data\vmdird 是刻意的:这是运行中的目录服务数据库,直接复制 live 数据库文件可能产生不一致副本。完整灾备应配合 SQL Server 备份和应用一致性整机备份。

这里要区分“归档包里的脚本位置”和“服务器上的实际执行位置”。本文归档里写的是:

脚本/Backup-VCenterFiles.ps1

生产执行前,需要把脚本放到 vCenter Windows 服务器上的固定目录,例如:

C:\vcenter-backup\scripts\Backup-VCenterFiles.ps1

这个路径只是示例,可以按现场规范调整。建议放在管理员容易识别、不会被临时清理策略删除的位置,并把脚本和备份输出目录纳入变更记录。

可自定义参数如下:

参数或路径示例值说明
脚本路径C:\vcenter-backup\scripts\Backup-VCenterFiles.ps1按脚本实际存放位置修改
备份根目录D:\vcenter-file-backup按现场磁盘规划修改,建议不要放在系统盘临时目录
保留天数30只控制文件侧备份副本清理,不等同于日志 180 天留存
执行账号SYSTEM本机磁盘通常可用;如果写入网络共享,应改用具备共享权限的域账号
执行时间02:00按维护窗口和备份平台调度调整

手工执行示例:

# 可按现场调整:脚本在 vCenter Windows 服务器上的实际路径
$ScriptPath = "C:\vcenter-backup\scripts\Backup-VCenterFiles.ps1"

# 可按现场调整:备份输出根目录,建议使用有足够空间的固定磁盘
$BackupRoot = "D:\vcenter-file-backup"

# 可按现场制度调整:只控制文件侧备份保留天数
$RetentionDays = 30

powershell.exe -NoProfile -ExecutionPolicy Bypass -File $ScriptPath -BackupRoot $BackupRoot -RetentionDays $RetentionDays

说明:-ExecutionPolicy Bypass 只作用于本次 powershell.exe 进程,用于避免老旧 Windows 环境因执行策略拦截本地脚本;它不等于永久修改系统执行策略。若现场安全策略不允许使用 Bypass,应按单位脚本签名或执行策略要求调整。

任务计划示例:

REM 可按现场调整:任务名
set TASK_NAME=Backup vCenter Files

REM 可按现场调整:每日执行时间
set START_TIME=02:00

REM 可按现场调整:脚本实际路径
set SCRIPT_PATH=C:\vcenter-backup\scripts\Backup-VCenterFiles.ps1

REM 可按现场调整:备份输出根目录
set BACKUP_ROOT=D:\vcenter-file-backup

REM 可按现场调整:文件侧备份保留天数
set RETENTION_DAYS=30

schtasks /Create /TN "%TASK_NAME%" /SC DAILY /ST %START_TIME% /RU SYSTEM /RL HIGHEST /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File %SCRIPT_PATH% -BackupRoot %BACKUP_ROOT% -RetentionDays %RETENTION_DAYS%"

如果脚本路径或备份目录中包含空格,建议不要直接套用上面的 schtasks 示例;可以把目录改成无空格路径,或先在测试机上验证 /TR 中的引号转义。生产截图留证时,应同时截取任务计划的触发器、操作命令、最近一次运行结果和备份目录文件。

脚本会生成:

时间戳目录
vcenter-files-时间戳.zip
vcenter-files-时间戳.zip.sha256
evidence.txt
SHA256SUMS.txt

evidence.txt 用于记录备份时间、主机名、关键路径、ODBC DSN 和 VMware 服务状态;SHA256SUMS.txt 用于后续校验文件完整性。

最终结论

这四个问题可以合并成一张整改结论表:

问题验证结论落地方式
Web Client 空闲超时支持服务端统一配置webclient.properties 中设置 session.timeout
Windows vSphere Client 空闲超时支持客户端本机配置,不支持 vCenter 服务端统一强制VpxClient.exe -inactivityTimeoutVpxClient.exe.config
ESXi syslog 和 6 个月留存ESXi 可转发 syslog,本机不能可靠按 6 个月留存ESXi 转发到 EventLog Analyzer,平台设置不少于 180 天
Windows vCenter 日志vCenter 6.0 Windows 版没有 ESXi 式统一 syslog 配置NXLog 采集 Windows Event Log 和 vCenter 日志文件后转发
vCenter 任务/事件保留支持设置数据库保留天数vCenter Server 设置中配置任务、事件保留 180 天
口令存储SSO 本地用户在 vmdir 中 hash 保护报告写 SHA-512 hash,并注明内部细节未完全公开
配置和备份不都在 SQL ServerSQL 备份、文件侧配置备份、整机/VSS 备份分别处理

这套验证的重点不是把所有日志都塞进 vCenter,也不是把所有备份都交给 SQL Server。正确边界是:vCenter 数据库、vCenter 文件侧配置、SSO/vmdir、Windows 日志、ESXi syslog 各有位置。等保整改要把这些位置串起来,最后形成可截图、可复核、可恢复的证据链。

参考与引用

VMware vCenter ESXi 等保 日志审计