收集 Linux auditd 和 AIX 系统日志

支持的平台:

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

准备工作

  • 确保您有一个 Google Security Operations 实例。
  • 确保您拥有对受审核主机的 root 访问权限。
  • 确保您已在受审核的主机上安装 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 Agent

  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 Agent 以提取 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 Agent 以应用更改: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 设施:在 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. 重启 Audited 服务以应用更改:

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

    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,具体取决于上下文。

更改

2024-05-08

  • 如果值不为“?”,则将“field”映射到“field33”,再映射到“security_result.detection_fields”。
  • 当“type_name”为“CRYPTO_KEY_USER”时,将“exe”映射到“principal.process.file.full_path”。
  • 如果“type_name”为“CRYPTO_KEY_USER”,则将“fp”映射到“network.tls.client.certificate.sha256”。
  • 当“type_name”为“CRYPTO_KEY_USER”时,将“pid”映射到“principal.process.pid”。
  • 添加了 Grok 模式来解析新的日志模式。
  • 将“syslog-tag”映射到“security_result.detection_fields”。
  • 将“inter_ip”映射到“intermediary.ip”。
  • 将“inter_hostname”映射到“intermediary.hostname”。

2024-05-02

  • 如果“type_name”为“USER_MGMT”,则将“grp”映射到“target.group.group_display_name”。
  • 当“type_name”为“USER_MGMT”时,将“uid”的映射从“principal.user.userid”更改为“target.user.userid”。
  • 当“type_name”为“USER_MGMT”且“op”等于“deleting-user-from-group”时,请将“metadata.event_type”设置为“GROUP_MODIFICATION”。
  • 当“type_name”为“USER_MGMT”时,将“exe”的映射从“target.process.file.full_path”更改为“principal.process.file.full_path”。
  • 如果“type_name”为“USER_MGMT”,则将“id”映射到“about.user.userid”。

2024-04-08

  • 当“type_name”为“ADD_USER”“principal_user_present”为“true”“target_user_present”为“true”且“has_principal”为“true”时,请将“metadata.event_type”设置为“USER_CREATION”。
  • 如果“type_name”为“USER_AUTH”,则将“acct”映射到“target.user.user_display_name”。
  • 如果“type_name”为“USER_AUTH”,则将“uid”映射到“principal.user.userid”。
  • 如果“type_name”不在“ADD_USER”“USER_AUTH”“CRED_ACQ”和“USER_MGMT”中,则将“auid”映射到“about.user.userid”。
  • 如果“type_name”为“ADD_USER”,则将“auid”映射到“target.user.userid”。
  • 如果“type_name”为“ADD_USER”或“USER_AUTH”,则将“exe”映射到“principal.process.file.full_path”。
  • 如果“type_name”为“ADD_USER”,则将“op”和“id”映射到“security_result.summary”。
  • 当“type_name”为“USER_AUTH”时,将“op”和“acct”映射到“security_result.summary”。

2024-03-22

  • 添加了对新模式的 JSON 日志的支持。
  • 将“labels.compute.googleapis.com/resource_name”“jsonPayload._HOSTNAME”“CollectorHostName”“HOSTNAME”和“Computer”映射到“principal.hostname”。
  • 将“HostIP”映射到“principal.ip”。
  • 将“ProcessID”和“jsonPayload._PID”映射到“principal.process.pid”。
  • 将“SyslogMessage”映射到“metadata.description”。
  • 将“TenantId”“_ItemId”“_Internal_WorkspaceResourceId”“_ResourceId”和“Facility”映射到“additional.fields”。
  • 将“SeverityLevel”映射到“security_result.severity”。
  • 将“SourceSystem”映射到“principal.platform”。
  • 将“jsonPayload._COMM”映射到“principal.application”。
  • 将“jsonPayload._EXE”映射到“target.process.file.full_path”。
  • 将“jsonPayload._AUDIT_FIELD_FILE”映射到“target.file.full_path”。
  • 将“jsonPayload._AUDIT_FIELD_HASH”映射到“target.file.hash”。
  • 将“jsonPayload._AUDIT_SESSION”映射到“network.session_id”。
  • 将“jsonPayload._PPID”映射到“principal.process.parent_process.pid”。
  • 将“jsonPayload._AUDIT_FIELD_A0”“jsonPayload._AUDIT_FIELD_A1”“jsonPayload._AUDIT_FIELD_A2”“jsonPayload._AUDIT_FIELD_A3”“jsonPayload._BOOT_ID”和“jsonPayload._AUDIT_FIELD_EXIT”映射到“security_result.detection_fields”。

2023-11-27

  • 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_LOGIN”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
  • 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_LOGOUT”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
  • 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_CREATION”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
  • 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_DELETION”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
  • 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_UNCATEGORIZED”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
  • 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_RESOURCE_ACCESS”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
  • 添加了验证检查,以确保在将“metadata.event_type”设置为“USER_CHANGE_PERMISSIONS”之前,“principal_user_present”“target_user_present”或“has_principal”为 true。
  • 如果存在用户详细信息但不存在主机详细信息,则将“metadata.event_type”的映射从“USER_CREATION”更改为“USER_UNCATEGORIZED”。
  • 如果存在用户详细信息但不存在主要机器详细信息,则将“metadata.event_type”的映射从“USER_DELETION”更改为“USER_UNCATEGORIZED”。

2023-09-06

  • 为“cron 守护程序(CROND)”添加了“CMD”与“target.process.command_line”的映射。

2023-06-20

  • 增强功能 - 在 type="ADD_USER" 和 "DEL_USER" 时添加或修改了以下映射:
  • 将“uid”的映射从“target.user.userid”更改为“principal.user.userid”。
  • 将“id”映射到“target.user.userid”。
  • 将“ID”映射到“target.user.user_display_name”。
  • 将“UID”的映射从“principal.user.userid”更改为“principal.user.user_display_name”。
  • 将“acct”的映射从“principal.user.user_display_name”更改为“target.user.user_display_name”和“target.user.userid”。

2023-06-09

  • 增强功能 - 将“type=ADD_USER”时的“event_type”从“USER_LOGIN”修改为“USER_CREATION”。

2023-04-17

  • 改进
  • 添加了 gsub 函数,用于替换破坏 JSON 结构的“GS - 分组分隔符”字符。

2023-04-10

  • 改进
  • 向 security_result.detection_fields 添加了“gid”“euid”“egid”“suid”“fsuid”“sgid”“fsgid”“tty”“items”字段。
  • 此外,还将“gid”映射到“principal.user.group_identifiers”。
  • 将“euid”映射到“target.user.userid”。
  • 将“egid”映射到“target.user.group_identifiers”。

2023-03-27

  • 增强功能 - 添加了对包含日志的“jsonPayload”的支持。

2023-02-28

  • bug 修复 - 增强了解析器,以将十六进制编码的字符串转换为 ASCII。

2023-02-09

  • 增强功能 - 修改了包含“type=PATH”的日志的 Grok,以从日志中提取正确的主机名。

2023-01-24

  • 增强功能 -
  • 解析了事件类型为“tac_plus”的日志。
  • 添加了用于映射不同 event_type“NETWORK_CONNECTION”“NETWORK_HTTP”“USER_LOGIN”的条件。

2022-12-02

  • 增强功能 -
  • 将“user_name”映射到“principal.user.userid”。
  • 添加了针对“dst_ip”“dst_port”的条件检查。

2022-10-31

  • 增强功能 -
  • 增强了解析器,以解析 type=ADD_USER、USER_MGMT、DEL_USER 的日志。
  • 添加了“principal_hostname”的 null 检查。
  • 为“principal.process.file.full_path”“type_syscall_props.key”“type_syscall_props.arch”“msg2”添加了 on_error 检查。
  • 添加了用于映射到 event_type="FILE_OPEN"、"USER_UNCATEGORIZED"、"STATUS_UPDATE"、"USER_DELETION" 的条件检查。
  • 将“principal_user_userid”映射到“principal.user.userid”。

2022-11-16

  • 增强功能 -
  • 将包含“访问日志”的日志类型的“GENERIC_EVENT”改为了“STATUS_UPDATE”。

2022-10-14

  • 增强功能 -
  • 将客户解析器迁移到了默认解析器。

2022-10-13

  • 增强功能 - 将“vendor_name”映射到“Linux”。
  • 将“product_name”映射到“AuditD”。
  • 解析了包含“ProxySG”的日志,并尽可能将“ip”映射到“target.ip”,“port”映射到“target.port”。
  • 将“event_type”从“GENERIC_EVENT”修改为“STATUS_UPDATE”。
  • 修改了“intermediary.hostname”与“principal.hostname”之间的映射。

2022-07-28

  • 增强功能 -
  • 将“auid”字段映射到了“about.user.userid”。
  • 将字段“AUID”映射到“about.user.user_display_name”。
  • 将字段“proctitle”映射到“target.process.file.full_path”。
  • 增强了解析器,以解析 type=DAEMON_END、CRYPTO_SESSION、CONFIG_CHANGE、PROCTITLE、USER_ERR、CRYPTO_KEY_USER 的日志。
  • 添加了针对 laddr、addr、cipher、pfs、direction、acct、pid、ppid、cmd、exe、ses 的条件检查。

2022-06-17

  • 增强功能 - 映射/修改了以下字段:
  • 将“auid”的映射从“security_result.about.user.userid”更改为“about.user.userid”。
  • 将 type=SYSCALL 的“event_type”从“SYSTEM_AUDIT_LOG_UNCATEGORIZED”更改为“USER_UNCATEGORIZED”。
  • 将“success”映射到“security_result.summary”。
  • 将“syscall”“exit”“tty”“a0”“a1”“a2”“a3”映射到“security_result.about.labels”。
  • 移除了采用 ASCII 格式的日志。

2022-06-14

  • 增强
  • 增强了解析器,以解析 USER_CMD 类型的日志。
  • 将字段“cmd”映射到了“principal.process.command_line”。
  • 将字段“ses”映射到“network.session_id”。
  • 将字段“res”映射到“security_result.action”和“security_result.action_details”。
  • 将字段“auid”和“cwd”映射到了“security_result.detection_fields”。

2022-04-26

  • 增强
  • 通过解析所有未解析的日志,提高了解析百分比。