收集 Sophos Central 日志

支持的语言:

本文档介绍了如何使用 Bindplane 收集 Sophos Central 日志。解析器会将 JSON 日志转换为统一数据模型 (UDM)。它从嵌套的 JSON 结构中提取字段,将其映射到 UDM 字段,并根据 type 字段执行事件分类,从而使用不同 Sophos Central 事件类型的特定详细信息和操作来丰富数据。

准备工作

  • 确保您拥有 Google Security Operations 实例。
  • 确保您使用的是 Windows 2016 或更高版本,或者具有 systemd 的 Linux 主机。
  • 确保您有另一台能够持续运行 Python 的 Windows 或 Linux 计算机。
  • 如果通过代理运行,请确保防火墙端口处于开放状态。
  • 确保您拥有对 Sophos XG 防火墙的特权访问权限。

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

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

获取 Google SecOps 客户 ID

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

安装 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. 访问配置文件:

    1. 找到 config.yaml 文件。通常,它位于 Linux 上的 /etc/bindplane-agent/ 目录中或 Windows 上的安装目录中。
    2. 使用文本编辑器(例如 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: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: SYSLOG
                namespace: sophos_central
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 根据基础架构的需要替换端口和 IP 地址。

  4. <customer_id> 替换为实际的客户 ID。

  5. /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请运行以下命令:

    sudo systemctl restart bindplane-agent
    
  • 如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

配置 Sophos Central API 访问权限

  1. 登录 Sophos Central Admin
  2. 依次选择全局设置 > API 令牌管理
  3. 点击添加令牌以创建新令牌。
  4. 输入令牌名称,然后点击保存。系统会显示所提供令牌的 API 令牌摘要
  5. API 令牌摘要部分,点击复制以复制 API 访问网址和标头。

在其他机器上安装 Python

  1. 打开网络浏览器,然后前往 Python 网站
  2. 点击适用于您的操作系统(Windows 或 Mac)的 Download Python
  3. 安装 Python。

    • 在 Windows 上:
      1. 运行安装程序。
      2. 勾选显示 Add Python to PATH 的复选框。
      3. 点击立即安装
    • 在 Mac 上:

      1. Python 可能已安装,如果没有,您可以使用终端安装最新版本。
      2. 打开终端,然后输入以下命令:

        python --version
        

下载 Sophos 集成脚本

  1. 前往 Sophos Central SIEM Integration GitHub Repository 的 GitHub 页面。
  2. 依次点击绿色的“Code”按钮 >“Download ZIP”
  3. 解压缩 ZIP 文件。

设置脚本配置

  1. 使用文本编辑器查找打开 config.ini 文件。
  2. 修改配置文件:
    • API 令牌:输入之前从 Sophos Central 复制的 API 密钥。
    • Syslog 服务器详情:输入 Syslog 服务器的详细信息。
    • 主机:输入 Bindplane IP 地址。
    • 端口:输入 Bindplane 端口号。
    • 协议:输入 UDP(您也可以根据自己的设置使用 TCPTLS)。
  3. 保存文件。

运行脚本

  1. 前往脚本文件夹。

    • 在 Windows 上:

      1. Windows 键,然后输入 cmd
      2. 点击命令提示符
      3. 前往脚本文件夹:

        cd C:\Users\YourName\Downloads\Sophos-Central-SIEM-Integration
        
    • 在 macOS 上:

      1. 依次前往应用 > 实用程序
      2. 打开终端
      3. 前往脚本文件夹:

        cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
        
  2. 运行脚本

    • 输入以下命令以启动脚本:

      python siem.py
      

自动执行脚本,使其在 Windows 上持续运行(使用任务调度程序):

  1. 在“开始”菜单中输入任务计划程序,打开“任务计划程序”。
  2. 点击创建任务
  3. 常规标签页中:
    • 为任务命名,例如 Sophos Central Log Export
  4. 触发器标签页中:
    • 点击新建,然后将任务设置为每天启动时运行(具体取决于您的偏好)。
  5. 操作标签页中:
    • 点击新建,然后选择启动程序
    • 浏览以查找 python.exe 可执行文件(通常位于 C:\PythonXX\python.exe)。
    • 添加实参字段中,输入脚本的路径,例如 C:\Users\YourName\Downloads\Sophos-Central-SIEM-Integration\siem.py
  6. 点击确定以保存任务。

自动执行脚本,使其在 Mac 上持续运行(使用 Cron 作业):

  1. 打开终端。
  2. 输入 crontab -e 并按 Enter 键。
  3. 在文件末尾添加新行:

    * * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
    
  4. 保存并退出编辑器。

UDM 映射表

日志字段 UDM 映射 逻辑
customer_id target.resource.id 直接从 customer_id 字段映射。
data.core_remedy_items.items.0.descriptor target.process.file.full_path 直接从 data.core_remedy_items.items.0.descriptor 字段映射。
data.source_info.ip principal.ip
principal.asset.ip
直接从 data.source_info.ip 字段映射。
说明 metadata.description metadata.event_typeGENERIC_EVENT 时,直接从 description 字段映射。
dhost principal.hostname
principal.asset.hostname
直接从 dhost 字段映射。
duid security_result.detection_fields.value 直接从 duid 字段映射。
end metadata.event_timestamp 解析为 RFC 3339 格式并映射到 event_timestamp 字段。
endpoint_id target.asset_id 映射为 Device endpoint Id: {endpoint_id}
endpoint_type security_result.about.labels.value 直接从 endpoint_type 字段映射。
群组 security_result.category_details 直接从 group 字段映射。
name security_result.description
security_result.summary
直接从 name 字段映射。
metadata.event_type 根据 type 字段和解析器中的其他逻辑确定。可能的值包括:FILE_OPEN、SCAN_HOST、SETTING_MODIFICATION、STATUS_HEARTBEAT、SETTING_CREATION、NETWORK_CONNECTION、SCAN_PROCESS、SCAN_UNCATEGORIZED、USER_CREATION、USER_UNCATEGORIZED、STATUS_UPDATE。
metadata.log_type 设置为 SOPHOS_CENTRAL
metadata.product_event_type 直接从 type 字段映射。
metadata.product_name 设置为 Sophos Central
metadata.vendor_name 设置为 Sophos
network.direction 对于指示出站网络连接的特定 type 值,设置为 OUTBOUND
network.ip_protocol 对于指示 TCP 网络连接的特定 type 值,设置为 TCP
security_result.action 根据使用 grok 模式从 name 字段中提取的 action 字段确定。可能的值包括:ALLOW、BLOCK、ALLOW_WITH_MODIFICATION、UNKNOWN_ACTION。
security_result.detection_fields.key 如果存在 duid 字段,则设置为 duid
security_result.rule_name 使用针对特定 type 值的 grok 模式从 name 字段中提取。
security_result.severity 根据 severity 字段进行映射,映射关系如下:low -> LOW、medium -> MEDIUM、high/critical -> HIGH。
target.application 使用针对特定 type 值的 grok 模式从 name 字段中提取。
target.asset.hostname 从特定 type 值的 dhost 字段映射。
target.file.full_path 使用针对特定 type 值的 grok 模式从 name 字段中提取,或直接从 data.core_remedy_items.items.0.descriptorcore_remedy_items.items.0.descriptor 中映射。
target.file.size 使用 grok 模式从 name 字段中提取,并针对特定 type 值转换为 uinteger
target.hostname 从特定 type 值的 dhost 字段映射。
target.resource.name 根据 type 字段设置为特定值,或使用 grok 模式从 name 字段中提取。
target.resource.type 根据 type 字段设置为特定值。
target.user.userid suser 字段映射,在提取用户名后使用 grok 模式。
target.url 使用针对特定 type 值的 grok 模式从 name 字段中提取。
source_info.ip principal.ip
principal.asset.ip
直接从 source_info.ip 字段映射。
suser principal.user.userid
target.user.userid
使用 grok 模式从 suser 字段中提取,以移除主机名前缀。
类型 metadata.product_event_type 直接从 type 字段映射。

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