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是否能做到空闲超时自动退出。vCenter和ESXi的日志怎样集中留存,能不能满足 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 IP | 10.0.100.4 |
| ESXi IP | 10.0.100.5 |
| 日志平台 | ManageEngine EventLog Analyzer |
| 日志平台 IP | 10.0.100.3 |
| Windows 日志转发 Agent | NXLog 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 = 2session.timeout 的单位是分钟,默认值通常为 120 分钟。实验时设成 2 分钟,便于快速观察会话失效;正式环境应按制度要求设置为 15、30 或其他合规值。

修改后需要重启 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>

验证现象是客户端弹出非活动超时提示:
客户端由于不活动已注销。是否要重新登录?
生产整改时,如果单位希望统一控制 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 是本次使用的传输协议。生产环境不要直接照抄这三个值,应先确认日志平台实际监听地址、协议和端口。
可自定义参数如下:
| 参数 | 示例值 | 说明 |
|---|---|---|
| 日志平台 IP | 10.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 主机 IP 或主机名的测试标记,方便在日志平台搜索
esxcli system syslog mark --message='test syslog from esxi 10.0.100.5 to manageengine'EventLog Analyzer 中可以看到来自 10.0.100.5 的 syslog 数据:

Windows vCenter 日志转发
Windows 版 vCenter 6.0 自身日志主要在:
C:\ProgramData\VMware\vCenterServer\Logs\
Windows Event Log我们使用 NXLog Community Edition 做转发,安装包已放在:
安装包/nxlog-ce-3.2.2329.msiNXLog 配置文件已归档在:
配置文件/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 的日志:

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 数据库里的任务和事件,不等于 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 保存管理凭据的内部实现不应擅自写成某个可验证算法,报告中写“厂商未公开内部细节”更稳。

配置文件不都在 SQL Server 里
这台环境的 vCenter 使用外置 SQL Server,vpxd.cfg 中可以看到:
<odbc>
<dbtype>external</dbtype>
<dsn>vcenter</dsn>
</odbc>ODBC DSN 为:
vcenterSQL 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.txtevidence.txt 用于记录备份时间、主机名、关键路径、ODBC DSN 和 VMware 服务状态;SHA256SUMS.txt 用于后续校验文件完整性。
最终结论
这四个问题可以合并成一张整改结论表:
| 问题 | 验证结论 | 落地方式 |
|---|---|---|
| Web Client 空闲超时 | 支持服务端统一配置 | webclient.properties 中设置 session.timeout |
| Windows vSphere Client 空闲超时 | 支持客户端本机配置,不支持 vCenter 服务端统一强制 | VpxClient.exe -inactivityTimeout 或 VpxClient.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 Server | SQL 备份、文件侧配置备份、整机/VSS 备份分别处理 |
这套验证的重点不是把所有日志都塞进 vCenter,也不是把所有备份都交给 SQL Server。正确边界是:vCenter 数据库、vCenter 文件侧配置、SSO/vmdir、Windows 日志、ESXi syslog 各有位置。等保整改要把这些位置串起来,最后形成可截图、可复核、可恢复的证据链。
参考与引用
- Broadcom Knowledge Base: Configuring syslog on ESXi
- Broadcom Knowledge Base: Location of vCenter Server log files
- Broadcom Knowledge Base: Explanation of vCenter Server SSO account and password storage
- Broadcom Knowledge Base: Changing the vCenter Server database user ID and password
- ManageEngine Documentation: EventLog Analyzer database storage and retention settings
- NXLog Documentation: im_msvistalog Windows Event Log input
- NXLog Documentation: im_file file input module
- NXLog Documentation: om_udp UDP output module
- William Lam: Inactivity Timeout for the vSphere C# Client