收集 Sophos Central 日志
本文档介绍了如何使用 Bindplane 收集 Sophos Central 日志。解析器会将 JSON 日志转换为统一数据模型 (UDM)。该工具会从嵌套的 JSON 结构中提取字段,将其映射到 UDM 字段,并根据 type 字段执行事件分类,通过针对不同 Sophos Central 事件类型的具体详细信息和操作来丰富数据。
准备工作
- 确保您有一个 Google Security Operations 实例。
- 确保您使用的是 Windows 2016 或更高版本,或者使用了
systemd
的 Linux 主机。 - 确保您有其他一台能够持续运行 Python 的 Windows 或 Linux 计算机。
- 如果在代理后面运行,请确保防火墙端口处于打开状态。
- 确保您拥有对 Sophos XG Firewall 的超级用户访问权限。
获取 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。在获取 Google SecOps 提取身份验证文件部分,将
/path/to/ingestion-authentication-file.json
更新为身份验证文件的保存路径。
重启 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)。
安装 Python。
- 在 Windows 上:
- 运行安装程序。
- 勾选 Add Python to PATH 复选框。
- 点击立即安装。
在 Mac 上:
- Python 可能已安装,如果尚未安装,您可以使用终端安装最新版本。
打开终端,然后输入以下命令:
python --version
- 在 Windows 上:
下载 Sophos 集成脚本
- 前往 Sophos Central SIEM 集成 GitHub 代码库的 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 字段映射。如果设置了 is_alert 或 is_significant 标志,则会映射到 security_result.summary 。 |
is_alert | 对于表示存在警报的特定 type 值,将其设置为 true ;否则默认为 false 。 |
|
is_significant | 对于表示重大事件的特定 type 值,请将其设置为 true ;否则,默认为 false 。 |
|
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、中 -> MEDIUM、高/严重 -> 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 | 使用 Grok 模式提取用户名后,从 suser 字段映射而来。 |
|
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 字段映射。 |
变化
2025-01-30
增强功能:
- 添加了对解析未解析 JSON 日志的支持。
2025-01-08
增强功能:
- 在 statedata 中添加了
url
、action
和scan_name
,以解析未解析的日志。 - 将
user_id
映射到principal.user.userid
。
2024-09-05
增强功能:
- 添加了对解析未解析 JSON 日志的支持。
- 将
location
映射到principal.cloud.availability_zone
。
2024-05-17
增强功能:
- 将
data.core_remedy_items.items.0.descriptor
和core_remedy_items.items.0.descriptor
映射到target.process.file.full_path
。
2024-05-14
bug 修复:
- 将
target.user.userid
的映射从duid
更改为suser
。 - 将
duid
映射到security_result.detection_fields
。
2022-12-27
- 新创建的解析器。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。