收集 Sophos Central 日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 收集 Sophos Central 日志。解析器会将 JSON 日志转换为统一数据模型 (UDM)。它从嵌套的 JSON 结构中提取字段,将其映射到 UDM 字段,并根据 type 字段执行事件分类,从而使用不同 Sophos Central 事件类型的特定详细信息和操作来丰富数据。
准备工作
- 确保您拥有 Google Security Operations 实例。
- 确保您使用的是 Windows 2016 或更高版本,或者具有
systemd
的 Linux 主机。 - 确保您有另一台能够持续运行 Python 的 Windows 或 Linux 计算机。
- 如果通过代理运行,请确保防火墙端口处于开放状态。
- 确保您拥有对 Sophos XG 防火墙的特权访问权限。
获取 Google SecOps 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载注入身份验证文件。将文件安全地保存在将要安装 Bindplane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 Bindplane 代理
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
- 如需了解其他安装选项,请参阅此安装指南。
配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps
访问配置文件:
- 找到
config.yaml
文件。通常,它位于 Linux 上的/etc/bindplane-agent/
目录中或 Windows 上的安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
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
根据基础架构的需要替换端口和 IP 地址。
将
<customer_id>
替换为实际的客户 ID。将
/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 访问权限
- 登录 Sophos Central Admin。
- 依次选择全局设置 > API 令牌管理。
- 点击添加令牌以创建新令牌。
- 输入令牌名称,然后点击保存。系统会显示所提供令牌的 API 令牌摘要。
- 在 API 令牌摘要部分,点击复制以复制 API 访问网址和标头。
在其他机器上安装 Python
- 打开网络浏览器,然后前往 Python 网站。
- 点击适用于您的操作系统(Windows 或 Mac)的 Download Python。
安装 Python。
- 在 Windows 上:
- 运行安装程序。
- 勾选显示 Add Python to PATH 的复选框。
- 点击立即安装。
在 Mac 上:
- Python 可能已安装,如果没有,您可以使用终端安装最新版本。
打开终端,然后输入以下命令:
python --version
- 在 Windows 上:
下载 Sophos 集成脚本
- 前往 Sophos Central SIEM Integration GitHub Repository 的 GitHub 页面。
- 依次点击绿色的“Code”按钮 >“Download ZIP”。
- 解压缩 ZIP 文件。
设置脚本配置
- 使用文本编辑器查找并打开
config.ini
文件。 - 修改配置文件:
- API 令牌:输入之前从 Sophos Central 复制的 API 密钥。
- Syslog 服务器详情:输入 Syslog 服务器的详细信息。
- 主机:输入 Bindplane IP 地址。
- 端口:输入 Bindplane 端口号。
- 协议:输入 UDP(您也可以根据自己的设置使用 TCP 或 TLS)。
- 保存文件。
运行脚本
前往脚本文件夹。
在 Windows 上:
- 按 Windows 键,然后输入
cmd
。 - 点击命令提示符。
前往脚本文件夹:
cd C:\Users\YourName\Downloads\Sophos-Central-SIEM-Integration
- 按 Windows 键,然后输入
在 macOS 上:
- 依次前往应用 > 实用程序。
- 打开终端。
前往脚本文件夹:
cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
运行脚本:
输入以下命令以启动脚本:
python siem.py
自动执行脚本,使其在 Windows 上持续运行(使用任务调度程序):
- 在“开始”菜单中输入任务计划程序,打开“任务计划程序”。
- 点击创建任务。
- 在常规标签页中:
- 为任务命名,例如
Sophos Central Log Export
。
- 为任务命名,例如
- 在触发器标签页中:
- 点击新建,然后将任务设置为每天或启动时运行(具体取决于您的偏好)。
- 在操作标签页中:
- 点击新建,然后选择启动程序。
- 浏览以查找
python.exe
可执行文件(通常位于C:\PythonXX\python.exe
)。 - 在添加实参字段中,输入脚本的路径,例如
C:\Users\YourName\Downloads\Sophos-Central-SIEM-Integration\siem.py
。
- 点击确定以保存任务。
自动执行脚本,使其在 Mac 上持续运行(使用 Cron 作业):
- 打开终端。
- 输入
crontab -e
并按 Enter 键。 在文件末尾添加新行:
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
保存并退出编辑器。
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_type 为 GENERIC_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.descriptor 或 core_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 专业人士那里获得解答。