收集 Linux auditd 和 AIX 系统日志

支持的语言:

此解析器可处理 SYSLOG 格式的 Linux 审核日志,并将其转换为 UDM。它会处理 JSON 格式和纯文本格式的日志消息,使用 grok、XML 解析和 JSON 解析技术提取字段,并根据事件类型将这些字段映射到相应的 UDM 字段。解析器还会处理来自 AIX 系统的特定审核日志格式,并使用 security_result 和中间细节等其他字段来丰富 UDM。

准备工作

  • 确保您拥有 Google Security Operations 实例。
  • 确保您拥有对 Auditd 主机的 root 访问权限。
  • 确保您已在 Auditd 主机上安装 rsyslog。
  • 确保您拥有 Windows 2012 SP2 或更高版本或带有 systemd 的 Linux 主机。
  • 如果是在代理后面运行,请确保防火墙端口处于开放状态。

获取 Google SecOps 注入身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载注入身份验证文件

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 个人资料
  3. 复制并保存组织详细信息部分中的客户 ID

安装 BindPlane 代理

  1. 对于 Windows 安装,请运行以下脚本:
    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. 对于 Linux 安装,请运行以下脚本:
    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. 如需了解其他安装选项,请参阅此安装指南

配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps

  1. 访问安装了 Bindplane 的机器。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
      tcplog:
        # Replace the below port <54525> and IP <0.0.0.0> with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: auditd
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 使用以下命令重启 Bindplane 代理以应用更改: sudo systemctl bindplane restart

从 Auditd 导出 Syslog

  1. 访问要从中导出审核日志的机器。
  2. 打开 Auditd 配置文件(通常位于 /etc/audit/auditd.conf)。

    sudo vi /etc/audit/auditd.conf
    
  3. 找到或添加以下代码行以配置 auditd:

    active = yes
    output = syslog
    log_format = ENRICHED
    dispatcher = /sbin/audispd
    

可选:指定 Syslog Facility:在 auditd.conf 中添加或修改以下行:

```none
syslog_facility = LOG_AUTHPRIV
```
  1. 打开 audispd 配置文件(通常位于 /etc/audisp/plugins.d/syslog.conf):

    sudo vi /etc/audisp/plugins.d/syslog.conf
    
  2. 找到或添加以下行以配置 audispd:

    active = yes
    direction = out
    path = builtin_syslog
    type = builtin
    args = LOG_INFO
    format = string
    
  3. 重启 Auditd 服务以应用更改:

    sudo systemctl restart auditd
    
  4. 使用 tail 等工具监控 syslog 并验证 Auditd 日志是否正在发送:

    tail -f /var/log/syslog | grep auditd # Follow syslog and filter for auditd messages (path may vary depending on your system)
    
  5. 修改 rsyslog.conf 或创建自定义配置:

    sudo vi /etc/rsyslog.d/50-audit-forwarding.conf
    
  6. 添加转发日志的规则:

    • if $programname == 'auditd' then @@<Bindplane_Agent>:<Bindplane_Port>
    • 使用 @ 表示 UDP,使用 @@ 表示 TCP
    • <BindPlane_Agent> 替换为服务器的 IP/主机名。
    • <BindPlane_Port> 替换为服务器的端口。
  7. 重启 rsyslog 服务以应用更改:

    sudo systemctl restart rsyslog
    

UDM 映射表

日志字段 UDM 映射 逻辑
acct target.user.user_display_name 原始日志中的 acct 值会映射到 UDM 中的 target.user.user_display_name 字段。表示与活动关联的账号。
addr principal.ip 原始日志中的 addr 值会映射到 UDM 中的 principal.ip 字段。表示事件所涉及主账号的 IP 地址。
additional.fields additional.fields 解析后的键值对或标签中的其他字段会添加到 UDM 中的 additional.fields 数组。
agent.googleapis.com/log_file_path (未映射) 此标签存在于某些原始日志中,但未映射到 UDM 中的 IDM 对象。
algo (此示例中未使用) 虽然此字段存在于解析器和一些原始日志中,但在提供的示例中未使用,并且不会显示在最终的 UDM 中。
application principal.application 根据原始日志中的 terminal 字段或其他字段(例如 exe,具体取决于日志类型)派生而来。表示涉及的应用。
arch security_result.about.platform_version 原始日志的 arch 字段中的架构会映射到 security_result.about.platform_version
auid about.user.useridsecurity_result.detection_fields.auid 审核用户 ID (auid) 会映射到 about.user.userid 并作为检测字段添加到 security_result 中。
cmd target.process.command_line 原始日志的 cmd 字段中的命令会映射到 target.process.command_line
collection_time (未映射) 此字段是日志收集时间,未映射到 UDM 中的 IDM 对象。
comm principal.application 命令名称 (comm) 已映射到 principal.application
compute.googleapis.com/resource_name principal.hostname 相应标签的资源名称会映射到 principal.hostname
create_time (未映射) 此字段未映射到 UDM 中的 IDM 对象。
cwd security_result.detection_fields.cwd 当前工作目录 (cwd) 已作为检测字段添加到 security_result 中。
data (已处理) data 字段包含主要日志消息,并由解析器处理以提取各种字段。它不会直接映射到单个 UDM 字段。
exe principal.process.file.full_pathtarget.process.file.full_path 可执行文件路径 (exe) 会根据上下文映射到 principal.process.file.full_pathtarget.process.file.full_path
extensions.auth.type extensions.auth.type 身份验证类型由解析器逻辑根据事件类型设置。通常设置为 MACHINEAUTHTYPE_UNSPECIFIED
fp network.tls.client.certificate.sha256 系统会解析指纹 (fp),以提取 SHA256 哈希并将其映射到 network.tls.client.certificate.sha256
insertId (未映射) 此字段未映射到 UDM 中的 IDM 对象。
jsonPayload.message (已处理) 此字段包含 JSON 格式的主要日志消息,并由解析器处理。
key security_result.about.registry.registry_key 键字段映射到 security_result.about.registry.registry_key
labels (已处理) 原始日志中的标签会经过处理并映射到各种 UDM 字段,或添加到 additional.fields
logName (未映射) 此字段未映射到 UDM 中的 IDM 对象。
msg security_result.summary 消息 (msg) 通常用于填充 security_result.summary 字段。
network.application_protocol network.application_protocol 由解析器逻辑根据事件类型设置(例如,SSH、HTTP)。
network.direction network.direction 由解析器逻辑根据事件类型设置(例如,INBOUND、OUTBOUND)。
network.ip_protocol network.ip_protocol 由解析器逻辑设置,通常对于 SSH 事件设置为 TCP。
network.session_id network.session_id ses 字段映射或从其他字段派生。
network.tls.cipher network.tls.cipher 加密信息从原始日志中提取并映射到此字段。
network.tls.curve network.tls.curve 密钥交换曲线从原始日志中提取并映射到此字段。
pid principal.process.pidtarget.process.pid 进程 ID (pid) 会根据上下文映射到 principal.process.pidtarget.process.pid
ppid principal.process.parent_process.pidtarget.process.parent_process.pid 父进程 ID (ppid) 会根据上下文映射到 principal.process.parent_process.pidtarget.process.parent_process.pid
principal.asset.hostname principal.asset.hostname principal.hostname 复制的联系人。
principal.asset.ip principal.asset.ip principal.ip 复制的联系人。
principal.platform principal.platform 由解析器逻辑根据操作系统(例如LINUX)。
principal.port principal.port 与正文关联的端口号。
principal.user.group_identifiers principal.user.group_identifiers 与主用户相关联的群组 ID。
receiveTimestamp (未映射) 此字段是日志接收时间戳,未映射到 UDM 中的 IDM 对象。
res security_result.action_details 结果 (res) 会映射到 security_result.action_details
resource.labels (未映射) 这些标签存在于某些原始日志中,但未映射到 UDM 中的 IDM 对象。
resource.type (未映射) 此字段存在于某些原始日志中,但未映射到 UDM 中的 IDM 对象。
security_result.action security_result.action 由解析器逻辑根据 res 字段设置(例如,ALLOW、BLOCK)。
security_result.detection_fields security_result.detection_fields 原始日志中的各个字段会以键值对的形式添加到此数组中,以提供上下文。
security_result.rule_id security_result.rule_id 由解析器逻辑设置,通常对于系统调用事件设置为 type_name
security_result.severity security_result.severity 由解析器逻辑根据原始日志中的严重程度级别设置。
security_result.summary security_result.summary 活动的摘要,通常从 msg 字段或其他相关字段派生而来。
ses network.session_id 会话 ID (ses) 已映射到 network.session_id
source (未映射) 此字段包含有关日志源的元数据,并且未映射到 UDM 中的 IDM 对象。
subj (已处理) 系统会处理主题字段 (subj),以提取用户和安全上下文信息。
syscall security_result.about.labels.Syscall 系统调用号已作为标签添加到 security_result.about 中。
target.administrative_domain target.administrative_domain 目标用户的网域。
target.group.group_display_name target.group.group_display_name 目标群组的名称。
target.ip target.ip 目标的 IP 地址。
target.port target.port 与目标相关联的端口号。
target.process.command_line target.process.command_line 目标进程的命令行。
target.resource.type target.resource.type 由解析器逻辑设置的目标资源类型(例如,CREDENTIAL、SETTING)。
target.user.attribute.permissions target.user.attribute.permissions 与目标用户相关的权限。
target.user.group_identifiers target.user.group_identifiers 与目标用户相关联的群组 ID。
target.user.userid target.user.userid 目标用户的用户 ID。
textPayload (已处理) 日志的文本载荷,由解析器处理以提取各种字段。
timestamp metadata.event_timestamp 事件的时间戳。
tty security_result.about.labels.tty tty 作为标签添加到 security_result.about 中。
type metadata.product_event_type 事件类型 (type) 已映射到 metadata.product_event_type
uid principal.user.useridtarget.user.userid 用户 ID (uid) 会根据上下文映射到 principal.user.useridtarget.user.userid

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。