日志文件是对攻击进行故障排除以及获取有关违反情况的信息的一个重要组件。所有 ESXi 主机都运行 syslog 服务,该服务会将来自 VMkernel 和其他系统组件的消息记录到本地文件或远程主机。

为了提高主机安全性,请采取下列措施。
  • 配置持久日志记录到数据存储。默认情况下,ESXi 主机上的日志存储在内存文件系统中。因此,当您重新引导主机时,日志将会丢失,并且仅存储 24 小时的日志数据。启用持久日志记录时,您将拥有主机的专用活动记录。
  • 远程日志记录到中央主机允许您在中央主机上收集日志文件。在该主机中,使用一个工具即可监控所有主机,并可以执行汇总分析和搜索日志数据。这种方法有助于监控和揭示多个主机上协调攻击的相关信息。
  • 使用 ESXCLI 或 PowerCLI 或者使用 API 客户端在 ESXi 主机上配置远程安全 syslog。
  • 查询 syslog 配置,确保 syslog 服务器和端口有效。

有关 syslog 设置的信息和 ESXi 日志文件的其他信息,请参见《vSphere 监控和性能》文档。

ESXi 主机上配置 Syslog

可以使用 vSphere ClientVMware Host Clientesxcli system syslog 命令配置 syslog 服务。

有关使用 esxcli system syslog 命令和其他 ESXCLI 命令的信息,请参见《ESXCLI 入门》。有关如何为每个远程主机规范中指定的端口打开 ESXi 防火墙的详细信息,请参见配置 ESXi 防火墙

过程

  1. vSphere Client 清单中,浏览到主机。
  2. 单击配置
  3. 系统下,单击高级系统设置
  4. 单击编辑
  5. 筛选出 syslog
  6. 要全局设置日志记录并配置各种高级设置,请参见ESXi Syslog 选项
  7. (可选) 要覆盖任何日志的默认日志大小和日志轮换,请执行以下操作:
    1. 单击要自定义的日志的名称。
    2. 输入所需的轮换数和日志大小。
  8. 单击确定

结果

对 syslog 选项的更改生效。
注: 使用 vSphere Client 或 VMware Host Client 定义的 Syslog 参数设置将立即生效。但是,使用 ESXCLI 定义的大多数设置都需要额外命令才能生效。有关更多详细信息,请参见 ESXi Syslog 选项

ESXi Syslog 选项

可以使用一组 syslog 选项定义 ESXi syslog 文件和传输的行为。

除了基本设置(如 Syslog.global.logHost)之外,从 ESXi 7.0 Update 1 开始,还提供了用于自定义和 NIAP 合规性的高级选项列表。

注: 每次在设置任何审核记录参数或 Syslog.global.logDir 参数之前,都必须配置持久存储。
注: 所有审核记录设置(以 Syslog.global.auditRecord 开头)会立即生效。但是,对于使用 ESXCLI 定义的其他设置,请确保运行 esxcli system syslog reload 命令以启用更改。
表 1. 旧版 Syslog 选项
选项 ESXCLI 命令 描述
Syslog.global.logHost

esxcli system syslog config set --loghost=<str>

定义有关消息传输的以逗号分隔的远程主机列表和规范。如果 loghost=<str> 字段为空,则不会转发任何日志。虽然对接收 syslog 消息的远程主机数量没有硬性限制,但最好将远程主机的数量保持在 5 个或 5 个以下。远程主机规范的格式为:protocol://hostname|ipv4|'['ipv6']'[:port]。该协议必须是 TCP、UDP 或 SSL 之一。端口值可以是介于 1 到 65535 之间的任何十进制数字。如果未提供端口,则 SSL 和 TCP 使用 1514。UDP 使用 514。例如:ssl://hostName1:1514
Syslog.global.defaultRotate esxcli system syslog config set --default-rotate=<long> 要保留的旧日志文件的最大数目。您可以在全局范围内设置该数字,也可以针对单个子记录器设置该数字(请参见 Syslog.global.defaultSize)。
Syslog.global.defaultSize esxcli system syslog config set --default-size=<long> 日志文件的默认大小 (KiB)。文件达到默认大小后,syslog 服务会创建一个新文件。可以在全局范围内设置该数目,也可以为单个子记录器设置该数目。
Syslog.global.logDir esxcli system syslog config set --logdir=<str> 日志所在的目录。该目录可以位于挂载的 NFS 或 VMFS 卷中。只有本地文件系统中的 /scratch 目录在重新引导后仍然存在。将目录指定为 [数据存储名称] 文件路径,其中,路径是相对于支持数据存储卷的 root 目录的路径。例如,路径 [storage1] /systemlogs 将映射为路径 /vmfs/volumes/storage1/systemlogs
Syslog.global.logDirUnique esxcli system syslog config set --logdir-unique=<bool> 指定要与 Syslog.global.logDir 值连接的 ESXi 主机名。当多个 ESXi 主机登录到共享文件系统时,启用此设置至关重要。选择此选项将使用 ESXi 主机的名称在 Syslog.global.LogDir 指定的目录下创建子目录。如果多个 ESXi 主机使用同一个 NFS 目录,则唯一的目录非常有用。
Syslog.global.certificate.checkSSLCerts esxcli system syslog config set --check-ssl-certs=<bool> 将消息传输到远程主机时强制检查 SSL 证书。
表 2. 从 ESXi 7.0 Update 1 开始可用的 Syslog 选项
选项 ESXCLI 命令 描述
Syslog.global.auditRecord.storageCapacity esxcli system auditrecords local set --size=<long> 指定位于 ESXi 主机上的审核记录存储目录的容量(以 MiB 为单位)。无法减少审核记录存储的容量。可以在启用审核记录存储之前或之后(请参见 Syslog.global.auditRecord.storageEnable)增加容量。
Syslog.global.auditRecord.remoteEnable esxcli system auditrecords remote enable 启用将审核记录发送到远程主机的功能。远程主机通过使用 Syslog.global.logHost 参数指定。
Syslog.global.auditRecord.storageDirectory esxcli system auditrecords local set --directory=<dir> 创建审核记录存储目录,除非已指定,否则请将 /scratch/auditLog 设置为默认位置。您不得手动创建审核记录存储目录,也不能在启用审核记录存储时更改审核记录存储目录(请参见Syslog.global.auditRecord.storageEnable)。
Syslog.global.auditRecord.storageEnable esxcli system auditrecords local enable 在 ESXi 主机上启用审核记录存储。如果审核记录存储目录不存在,则使用 Syslog.global.auditRecord.storageCapacity 指定的容量创建该目录。
Syslog.global.certificate.checkCRL esxcli system syslog config set --crl-check=<bool> 启用检查 SSL 证书链中所有证书的吊销状态。

启用 X.509 CRL 验证,默认情况下不会根据行业约定检查这些 CRL。经过 NIAP 验证的配置需要进行 CRL 检查。由于实施限制,如果启用了 CRL 检查,则证书链中的所有证书都必须提供 CRL 链接。

不要为与认证无关的安装启用 crl-check 选项,因为很难正确配置使用 CRL 检查的环境。

Syslog.global.certificate.strictX509Compliance esxcli system syslog config set --x509-strict=<bool> 启用严格遵守 X.509。在验证期间对 CA 根证书执行额外的有效性检查。通常不会执行这些检查,因为 CA 根本来就受信任,并且可能会导致与现有配置错误的 CA 根不兼容。经过 NIAP 验证的配置甚至需要 CA 根来通过验证。

不要为与认证无关的安装启用 x509-strict 选项,因为很难正确配置使用 CRL 检查的环境。

Syslog.global.droppedMsgs.fileRotate esxcli system syslog config set --drop-log-rotate=<long> 指定要保留的旧的已丢弃消息日志文件数。
Syslog.global.droppedMsgs.fileSize esxcli system syslog config set --drop-log-size=<long> 指定切换为新的日志文件之前每个已丢弃消息日志文件的大小 (KiB)。
Syslog.global.logCheckSSLCerts esxcli system syslog config set --check-ssl-certs=<bool> 将消息传输到远程主机时强制检查 SSL 证书。
注: 已弃用。在 ESXi 7.0 Update 1 及更高版本中使用 Syslog.global.certificate.checkSSLCerts
Syslog.global.logFilters esxcli system syslog config logfilter [add | remove | set] ... 指定一个或多个日志筛选规范。每个日志筛选器必须用双竖线“||”分隔。日志筛选器的格式为:numLogs | ident | logRegexpnumLogs 为指定的日志消息设置最大日志条目数。达到此数目之后,将会筛选并忽略指定日志消息。ident 指定一个或多个系统组件以将筛选器应用于这些组件生成的日志消息。logRegexp 使用 Python 正则表达式语法指定区分大小写的短语,以按内容筛选日志消息。
Syslog.global.logFiltersEnable 允许使用日志筛选器。
Syslog.global.logLevel esxcli system syslog config set --log-level=<str> 指定日志筛选级别。仅当对 syslog 守护进程问题进行故障排除时,才必须更改此参数。可以使用值 debug 表示最详细级别,使用 info 表示默认详细级别,使用 warning 表示仅警告或错误,使用 error 表示仅错误。
Syslog.global.msgQueueDropMark esxcli system syslog config --queue-drop-mark=<long>) 指定占消息队列容量的百分比,达到此值后丢弃消息。
Syslog.global.remoteHost.connectRetryDelay esxcli system syslog config set --default-timeout=<long> 指定连接尝试失败后重试连接到远程主机之前的延迟(以秒为单位)。
Syslog.global.remoteHost.maxMsgLen esxcli system syslog config set --remote-host-max-msg-len=<long> 对于 TCP 和 SSL 协议,此参数指定截断发生之前 syslog 传输的最大长度(以字节为单位)。远程主机消息的默认最大长度为 1 KiB。可以将最大消息长度增加到多达 16 KiB。但是,将此值提高到 1 KiB 以上不能确保长传输到达 syslog 收集器时未被截断。例如,发出消息的 syslog 基础架构位于 ESXi 外部时。

此设置不影响 UDP 协议。RFC 5426 将 UDP 协议的最大消息传输长度设置为 480 字节 (IPV4) 和 1180 字节 (IPV6)。由于此限制,并且网络基础架构可以任意丢弃 UDP 数据包,因此不建议使用 UDP 来传输关键 syslog 消息。

Syslog.global.vsanBacking esxcli system syslog config set --vsan-backing=<bool> 允许将日志文件和审核记录存储目录放置在 vSAN 集群上。但是,启用此参数可能会导致 ESXi 主机变得无响应。

ESXi 日志文件地址

ESXi 通过使用 syslog 功能,在日志文件中记录主机活动。

表 3. ESXi 日志文件地址
组件 位置 用途
身份验证 /var/log/auth.log 包含与本地系统身份验证相关的所有事件。
ESXi 主机代理日志 /var/log/hostd.log 包含管理和配置 ESXi 主机及其虚拟机的代理的有关信息。
Shell 日志 /var/log/shell.log 包含键入 ESXi Shell 的所有命令以及 Shell 事件(例如启用 Shell)的记录。
系统消息 /var/log/syslog.log 包含所有常规日志消息,并且可用来进行故障排除。该信息以前位于消息日志文件中。
vCenter Server 代理日志 /var/log/vpxa.log 包含与 vCenter Server 通信的代理的相关信息(如果主机由 vCenter Server 管理)。
虚拟机 与受影响虚拟机的配置文件位于同一目录,名为 vmware.logvmware*.log。例如,/vmfs/volumes/datastore/virtual machine/vmware.log 包含虚拟机电源事件、系统故障信息、Tools 状态和活动、时间同步、虚拟硬件更改、vMotion 迁移和虚拟机克隆等等。
VMkernel /var/log/vmkernel.log 记录与虚拟机以及 ESXi 有关的活动。
VMkernel 摘要 /var/log/vmksummary.log 用于确定 ESXi 的正常运行时间和可用性统计信息(以逗号分隔)。
VMkernel 警告 /var/log/vmkwarning.log 记录与虚拟机有关的活动。
Quick Boot /var/log/loadESX.log 包含与通过 Quick Boot 重新启动 ESXi 主机相关的所有事件。
可信基础架构代理 /var/run/log/kmxa.log 记录与 ESXi 受信任主机上的客户端服务相关的活动。
密钥提供程序服务 /var/run/log/kmxd.log 记录与 vSphere Trust Authority 密钥提供程序服务相关的活动。
证明服务 /var/run/log/attestd.log 记录与 vSphere Trust Authority 证明服务相关的活动。
ESX 令牌服务 /var/run/log/esxtokend.log 记录与 vSphere Trust Authority ESX 令牌服务相关的活动。
ESX API 转发器 /var/run/log/esxapiadapter.log 记录与 vSphere Trust Authority API 转发器相关的活动。