系统模块编辑

此功能处于测试阶段,可能会发生变化。设计和代码不如正式的 GA 功能成熟,并且按原样提供,不提供任何保证。测试版功能不受正式 GA 功能支持 SLA 的约束。

system 模块收集有关系统的各种安全相关信息。所有数据集都发送定期状态信息(例如,所有当前正在运行的进程)和实时更改(例如,新进程启动或停止时)。

该模块在 x86 上的 Linux 上完全实现。目前,socket 模块在 ARM 上不可用。某些数据集也可用于 macOS (Darwin) 和 Windows。

工作原理编辑

每个数据集发送两种信息:状态和事件。

状态信息定期发送,并在启动时(对于某些数据集)发送。状态更新将包含系统上当前处于活动状态的每个对象(例如,进程)的一个事件。属于同一状态更新的所有事件将在 event.id 中共享相同的 UUID。

可以使用 state.period 配置选项控制所有数据集的状态更新频率。每个数据集都可以覆盖。默认值为 12h

事件信息在事件发生时发送(例如,进程启动或停止)。目前,所有数据集都使用轮询模型来检索其数据。这些轮询的频率由 period 配置参数控制。

实体 ID编辑

此模块填充 entity_id 字段,以唯一标识主机内的实体(用户、包、进程...)。这要求 Auditbeat 获取主机的唯一标识符

  • Windows:使用 HKLM\Software\Microsoft\Cryptography\MachineGuid 注册表项。
  • macOS:使用 gethostuuid(2) 系统调用返回的值。
  • Linux:使用由 systemddbus 创建的以下文件之一的内容

    • /etc/machine-id
    • /var/lib/dbus/machine-id
    • /var/db/dbus/machine-id

在 CentOS 6.x 下,上述文件可能都不存在。在这种情况下,运行 dbus-uuidgen --ensure(由 dbus 包提供)将为您生成一个。

示例仪表板编辑

该模块附带一个示例仪表板

Auditbeat System Overview Dashboard

配置选项编辑

此模块具有一些用于控制其行为的配置选项。以下示例显示了 Linux 的所有配置选项及其默认值。

建议单独配置某些数据集。有关建议的示例配置,请参见下文。

- module: system
  datasets:
    - host
    - login
    - package
    - process
    - socket
    - user
  period: 10s
  state.period: 12h

  socket.include_localhost: false

  user.detect_password_changes: true

此模块还支持稍后介绍的标准配置选项

state.period
数据集发送完整状态信息的间隔。可以使用 {dataset}.state.period 覆盖每个数据集的此选项。
user.detect_password_changes
如果配置了 user 数据集,并且此选项设置为 true,则 Auditbeat 将读取 /etc/passwd/etc/shadow 中的密码信息以检测密码更改。哈希将本地保存在 beat.db 文件中,以检测 Auditbeat 重新启动之间的更改。 beat.db 文件应仅对 root 用户可读,并且应像对待影子文件本身一样对待。

标准配置选项编辑

您可以为任何 Auditbeat 模块指定以下选项。

module
要运行的模块的名称。
datasets
要执行的数据集列表。
enabled
一个布尔值,指定模块是否已启用。
period
数据集检查更改的频率。如果系统不可达,Auditbeat 将为每个周期返回一个错误。此设置是必需的。对于大多数数据集,尤其是 processsocket,建议使用较短的周期。
fields
将与数据集事件一起发送的字段字典。此设置是可选的。
tags
将与数据集事件一起发送的标签列表。此设置是可选的。
processors

要应用于数据集生成的数据的处理器列表。

有关在配置中指定处理器的详细信息,请参见处理器

index

如果存在,则此格式字符串将覆盖此模块事件的索引(对于 elasticsearch 输出),或设置事件元数据的 raw_index 字段(对于其他输出)。此字符串只能引用代理名称和版本以及事件时间戳;要访问动态字段,请使用 output.elasticsearch.index 或处理器。

示例值:"%{[agent.name]}-myindex-%{+yyyy.MM.dd}" 可能会扩展为 "auditbeat-myindex-2019.12.13"

keep_null
如果此选项设置为 true,则值为 null 的字段将在输出文档中发布。默认情况下,keep_null 设置为 false
service.name
用户为从中收集数据的服务指定的名称。例如,它可用于识别从具有相同 service.type 的不同集群节点收集的信息。

建议的配置编辑

进程和套接字的生存期可能很短,因此如果轮询间隔过长,则错过更新的可能性会增加。

另一方面,主机和用户信息不太可能频繁更改,因此可以使用较长的轮询间隔。

- module: system
  datasets:
    - host
    - login
    - package
    - user
  period: 1m

  user.detect_password_changes: true

- module: system
  datasets:
    - process
    - socket
  period: 1s

示例配置编辑

系统模块支持配置 Auditbeat中描述的常见配置选项。这是一个示例配置

auditbeat.modules:
- module: system
  datasets:
    - package # Installed, updated, and removed packages

  period: 2m # The frequency at which the datasets check for changes

- module: system
  datasets:
    - host    # General host information, e.g. uptime, IPs
    - login   # User logins, logouts, and system boots.
    - process # Started and stopped processes
    - socket  # Opened and closed sockets
    - user    # User information

  # How often datasets send state updates with the
  # current state of the system (e.g. all currently
  # running processes, all open sockets).
  state.period: 12h

  # Enabled by default. Auditbeat will read password fields in
  # /etc/passwd and /etc/shadow and store a hash locally to
  # detect any changes.
  user.detect_password_changes: true

  # File patterns of the login record files.
  login.wtmp_file_pattern: /var/log/wtmp*
  login.btmp_file_pattern: /var/log/btmp*

数据集编辑

以下数据集可用