收集 macOS 系统日志

解析器版本:2.0

支持的平台:

本文档介绍了如何使用 Bindplane 将 macOS 系统日志注入到 Google Security Operations。macOS 使用 Apple 统一日志记录系统来捕获系统级事件,包括身份验证、进程执行、内核活动和应用行为。这些日志可通过 syslog 转发到远程收集器,以进行集中式安全监控和分析。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例。
  • 搭载 systemd 的 Windows 2016 或更高版本或 Linux 主机。
  • 如果在代理后面运行,请确保防火墙端口已根据 Bindplane 代理要求打开。
  • 对将转发日志的 macOS 端点的管理员访问权限。
  • macOS 10.12 (Sierra) 或更高版本,支持统一日志记录。

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

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载数据注入身份验证文件
    • 将文件安全地保存在将要安装 Bindplane 的系统上。

获取 Google SecOps 客户 ID

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

安装 Bindplane 代理

按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

如需了解其他安装选项,请参阅此安装指南

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

  1. 访问配置文件:

    • 找到 config.yaml 文件。通常,它位于 Linux 上的 /observiq-otel-collector/ 目录中或 Windows 上的安装目录中。
    • 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <PLACEHOLDER_CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'MACOS'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  • 根据基础架构的需要替换端口和 IP 地址。
  • <PLACEHOLDER_CUSTOMER_ID> 替换为实际的客户 ID。
  • /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 注入身份验证文件部分中保存身份验证文件的文件路径。

重启 Bindplane 代理以应用更改

如需在 Linux 中重启 Bindplane 代理,请执行以下操作:

  1. 运行以下命令:

    sudo systemctl restart observiq-otel-collector
    
  2. 验证服务是否正在运行:

    sudo systemctl status observiq-otel-collector
    
  3. 检查日志是否存在错误:

    sudo journalctl -u observiq-otel-collector -f
    

如需在 Windows 中重启 Bindplane 代理,请执行以下操作:

  1. 请从下列选项中选择一项:

    • 以管理员身份运行命令提示符或 PowerShell:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • 服务控制台:
      1. Win+R,输入 services.msc,然后按 Enter 键。
      2. 找到 observIQ OpenTelemetry 收集器
      3. 右键点击并选择重新启动
  2. 验证服务是否正在运行:

    sc query observiq-otel-collector
    
  3. 检查日志是否存在错误:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

配置 macOS syslog 转发

macOS 使用统一日志记录系统。如需通过 syslog 将日志转发到 Bindplane 代理,请在每个 macOS 端点上配置内置的 syslogd 服务。

方法 1:使用 syslog.conf 配置 syslog 转发

  1. 在 macOS 端点上打开终端
  2. 修改 syslog 配置文件:

    sudo nano /etc/syslog.conf
    
  3. 在文件末尾添加以下行,以通过 UDP 将所有日志转发到 Bindplane 代理:

    *.*     @<BINDPLANE_IP_ADDRESS>:514
    
    • <BINDPLANE_IP_ADDRESS> 替换为 Bindplane 代理主机(例如 192.168.1.100)的 IP 地址。
  4. 保存文件并退出。

  5. 重启 syslog 守护进程:

    sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
    sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
    

方法 2:使用 asl.conf 配置 syslog 转发

  1. 在 macOS 端点上打开终端
  2. 修改 ASL 配置文件:

    sudo nano /etc/asl.conf
    
  3. 添加以下代码行,将日志转发到远程 syslog 服务器:

    ? [= Sender kernel] forward <BINDPLANE_IP_ADDRESS>:514
    ? [<= Level notice] forward <BINDPLANE_IP_ADDRESS>:514
    
    • <BINDPLANE_IP_ADDRESS> 替换为 Bindplane 代理主机 IP 地址。
  4. 保存文件并退出。

  5. 重启 syslog 守护进程:

    sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
    sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
    

验证日志转发

  1. 在 macOS 端点上,生成一条测试日志消息:

    logger -p user.notice "Test syslog message for Bindplane"
    
  2. 在 Bindplane 代理主机上,检查代理日志中是否有传入的消息:

    sudo journalctl -u observiq-otel-collector -f
    

UDM 映射表

日志字段 UDM 映射 逻辑
activityIdentifier_label additional.fields 已合并
backtrace_label additional.fields 已合并
bootUUID_label additional.fields 已合并
category_label additional.fields 已合并
chronicle_log_type_label additional.fields 已合并
formatString_label additional.fields 已合并
log_type_label additional.fields 已合并
machTimestamp_label additional.fields 已合并
messageType_label additional.fields 已合并
parentActivityIdentifier_label additional.fields 已合并
processImageUUID_label additional.fields 已合并
senderImageUUID_label additional.fields 已合并
senderProgramCounter_label additional.fields 已合并
subprocess_label additional.fields 已合并
subsystem_label additional.fields 已合并
threadID_label additional.fields 已合并
traceID_label additional.fields 已合并
intermediary_host intermediary.hostname 直接映射
attributes.message metadata.description 直接映射
description metadata.description 直接映射
eventMessage metadata.description 直接映射
timestamp metadata.event_timestamp 解析为 ISO8601
has_principal metadata.event_type 已映射:trueSTATUS_UPDATE
has_user metadata.event_type 已映射:trueUSER_UNCATEGORIZED
attributes.process metadata.product_event_type 直接映射
eventType metadata.product_event_type 直接映射
attributes.host principal.asset.hostname 直接映射
hostname principal.asset.hostname 直接映射
source principal.asset.hostname 直接映射
senderImagePath principal.file.full_path 直接映射
attributes.host principal.hostname 直接映射
hostname principal.hostname 直接映射
source principal.hostname 直接映射
command_line principal.process.command_line 直接映射
processImagePath principal.process.file.full_path 直接映射
attributes.pid principal.process.pid 直接映射
processID principal.process.pid 直接映射
process_id principal.process.pid 直接映射
userID principal.user.userid 直接映射
不适用 metadata.event_type 常量:USER_UNCATEGORIZED
不适用 metadata.product_name 常量:MacOS
不适用 metadata.vendor_name 常量:Apple
不适用 principal.platform 常量:MAC
eventMessage event.idm.read_only_udm.metadata.description 从变更日志映射
eventType event.idm.read_only_udm.metadata.product_event_type 从变更日志映射
senderImagePath event.idm.read_only_udm.principal.file.full_path 从变更日志映射
processImagePath event.idm.read_only_udm.principal.process.file.full_path 从变更日志映射
userID event.idm.read_only_udm.principal.user.userid 从变更日志映射
activityIdentifier event.idm.read_only_udm.additional.fields 从变更日志映射
bootUUID event.idm.read_only_udm.additional.fields 从变更日志映射
category event.idm.read_only_udm.additional.fields 从变更日志映射
formatString event.idm.read_only_udm.additional.fields 从变更日志映射
machTimestamp event.idm.read_only_udm.additional.fields 从变更日志映射
messageType event.idm.read_only_udm.additional.fields 从变更日志映射
parentActivityIdentifier event.idm.read_only_udm.additional.fields 从变更日志映射
processImageUUID event.idm.read_only_udm.additional.fields 从变更日志映射
senderImageUUID event.idm.read_only_udm.additional.fields 从变更日志映射
senderProgramCounter event.idm.read_only_udm.additional.fields 从变更日志映射
subsystem event.idm.read_only_udm.additional.fields 从变更日志映射
threadID event.idm.read_only_udm.additional.fields 从变更日志映射
traceID event.idm.read_only_udm.additional.fields 从变更日志映射
backtrace.frames event.idm.read_only_udm.additional.fields 从变更日志映射
processID event.idm.read_only_udm.principal.process.pid 从变更日志映射
source event.idm.read_only_udm.principal.hostname 从变更日志映射

更新日志

查看相应解析器的更改日志

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