系统模块

编辑

此功能处于 beta 阶段,可能会发生更改。其设计和代码不如正式 GA 功能成熟,按“原样”提供,不提供任何担保。Beta 功能不受正式 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 用户读取,并且其处理方式应与 shadow 文件本身类似。

标准配置选项

编辑

您可以为任何 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*

数据集

编辑

以下数据集可用