收集 Semperis DSP 日志
本文档介绍了如何使用 Bindplane 代理将 Semperis Directory Services Protector (DSP) 日志注入 Google Security Operations。
Semperis Directory Services Protector (DSP) 是一个 Active Directory 威胁检测和响应平台,用于监控 AD 更改和攻击,提供实时提醒和自动补救措施。解析器会从 DSP 日志条目中提取字段,并将其映射到统一数据模型 (UDM),捕获 AD 对象修改、身份验证事件、DNS 更改和安全结果。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - Bindplane 代理与 Semperis DSP 服务器之间的网络连接
- 如果通过代理运行,请确保防火墙端口根据 Bindplane 代理要求处于打开状态
- 具有管理员权限的 Semperis DSP 管理控制台的特权访问权限
获取 Bindplane 代理的 Google SecOps 凭据
如需对 Bindplane 代理进行 Google SecOps 身份验证,请选择以下方法之一:
- 新部署:使用 Chronicle API(方法 1)。
- 旧版部署:继续使用注入身份验证文件(方法 2),直到注入 API 于 2027 年 7 月 20 日停用为止。
方法 1:为 Chronicle API 创建服务帐号(推荐)
- 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
- 依次前往 IAM 和管理 > 服务账号。
- 点击创建服务账号 。
- 提供以下配置详细信息:
- 服务账号名称:输入账号的名称(例如
bindplane-ingest)。 - 服务账号说明:输入说明(例如
Bindplane agent log ingestion)。
- 服务账号名称:输入账号的名称(例如
- 点击创建并继续 。
- 在向此服务帐号授予对项目的访问权限 部分,点击选择角色 ,然后选择 Chronicle Editor 。
- 点击继续 ,然后点击完成 。
- 点击您创建的服务帐号,然后前往密钥 标签页。
- 依次点击添加密钥 > 创建新密钥。
- 选择 JSON ,然后点击创建 。密钥文件会下载到您的计算机上。
- 将密钥文件另存为 Bindplane 收集器目录中的
ingestion-auth.json(在 Linux 上为/opt/observiq-otel-collector/ingestion-auth.json,在 Windows 上为C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或者更新creds_file_path在config.yaml中以与您保存该文件的路径匹配。 - 依次前往 IAM 和管理 > 设置 ,然后复制项目编号 。您需要此编号进行导出器配置。
方法 2:下载注入身份验证文件(旧版)
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载注入身份验证文件 。
- 将该文件安全地保存在将安装 Bindplane 代理的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 个人资料。
从组织详细信息 部分复制并保存客户 ID 。
安装 Bindplane 代理
按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符 或 PowerShell 。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet等待安装完成。
运行以下命令,验证安装是否成功:
sc query observiq-otel-collector该服务应显示为正在运行 。
Linux 安装
- 打开具有根权限或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安装完成。
运行以下命令,验证安装是否成功:
sudo systemctl status observiq-otel-collector该服务应显示为活跃 (正在运行) 。
其他安装资源
如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps
找到配置文件
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/semperis_dsp: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: SEMPERIS_DSP raw_log_field: body service: pipelines: logs/semperis_dsp: receivers: - tcplog exporters: - chronicle/semperis_dsp
配置参数
替换以下占位符:
接收器配置:
tcplog:基于协议的接收器类型:- 适用于 UDP syslog 的
udplog - 适用于 TCP syslog 的
tcplog - 适用于 RFC 3164/5424 syslog 的
syslog
- 适用于 UDP syslog 的
0.0.0.0:要监听的 IP 地址:0.0.0.0,用于监听所有接口(推荐)- 用于监听一个接口的特定 IP 地址
514:要监听的端口号(例如514、1514、6514)
导出器配置:
<customer_id>:上一步中的客户 IDlocation:将<LOCATION>替换为 Google SecOps 实例的区域(例如us、europe或asia-southeast1)。导出器会使用此值为chronicle.googleapis.com添加前缀。如需查看完整列表,请参阅区域级端点。project:将<PROJECT_NUMBER>替换为 IAM 和管理 > 设置 中的项目编号。endpoint:保持设置为chronicle.googleapis.com。- 根据平台调整
creds_file_path以指向服务帐号 JSON 密钥文件的路径(方法 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
旧版注入 API 导出器
如果您使用方法 2 中的注入身份验证文件,请将
exporters块替换为以下内容。将creds_file_path设置为注入身份验证文件的路径,如果您的实例位于美国境外,请将malachiteingestion-pa.googleapis.com替换为您的 区域级端点(例如europe-malachiteingestion-pa.googleapis.com)。exporters: chronicle/semperis_dsp: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: SEMPERIS_DSP raw_log_field: body
保存配置文件
- 修改后,保存文件:
- Linux:按
Ctrl+O,然后按Enter,再按Ctrl+X - Windows:依次点击文件 > 保存
- Linux:按
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart observiq-otel-collector验证服务是否正在运行:
sudo systemctl status observiq-otel-collector检查日志中是否存在错误:
sudo journalctl -u observiq-otel-collector -f
如需在 Windows 中重启 Bindplane 代理,请选择以下选项之一:
以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry Collector 。
- 右键点击并选择重启 。
验证服务是否正在运行:
sc query observiq-otel-collector检查日志中是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- 按
配置 Semperis DSP syslog 转发
- 登录 Semperis DSP 管理控制台。
- 依次前往设置 > SIEM 集成。
- 启用 Syslog 转发。
- 提供以下配置详细信息:
- 主机:输入 Bindplane 代理主机的 IP 地址(例如
192.168.1.100)。 - 端口:输入
514(必须与 Bindplane 接收器端口匹配)。 - 协议:选择 TCP (必须与 Bindplane 接收器类型匹配)。
- 主机:输入 Bindplane 代理主机的 IP 地址(例如
- 点击保存 。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| event_type | extensions.auth.type | 如果 ObjectModificationType == "LoginADSM",则设置为“SSO” |
| host | intermediary.hostname | 直接复制值 |
| ObjectModificationType | metadata.description | 直接复制值 |
| event_type | metadata.event_type | 如果 ObjectModificationType == "CreateObject" 且 OriginatingUsers != "",则设置为 RESOURCE_CREATION;如果 ObjectModificationType == "ModifyObject" 且 OriginatingUsers != "" 且 AttributeName 包含“Password”,则设置为 RESOURCE_WRITTEN;如果 ObjectModificationType == "ModifyObject" 且 OriginatingUsers != "",则设置为 RESOURCE_WRITTEN;如果 ObjectModificationType == "DeleteObject" 且 OriginatingUsers != "",则设置为 RESOURCE_DELETION;如果 ObjectModificationType == "LoginADSM" 且 OriginatingUsers != "",则设置为 USER_LOGIN;如果 ObjectModificationType == "OperationRequest" 且 OriginatingUsers != "",则设置为 RESOURCE_WRITTEN;如果 principal_present == "true",则设置为 STATUS_UPDATE;如果 principal_user_present == "true",则设置为 USER_UNCATEGORIZED;否则设置为 GENERIC_EVENT |
| metadata.product_name | 设置为“SEMPERIS_DSP” | |
| metadata.vendor_name | 设置为“SEMPERIS” | |
| StringValueFrom | network.dns.answers.data | 清理后直接复制值 |
| NameNode | network.dns.answers.name | 直接复制值 |
| Ttl | network.dns.answers.ttl | 直接复制值,转换为 uinteger |
| Type | network.dns.answers.type | 如果 Type =~ "DNS_TYPE_A",则设置为“1”;如果 Type =~ "DNS_TYPE_PTR",则设置为“12”,转换为 uinteger |
| OriginatingServer | principal.asset.hostname | 直接复制值 |
| ip | principal.asset.ip | 验证和清理后直接复制值 |
| OriginatingServer | principal.hostname | 直接复制值 |
| ip | principal.ip | 验证和清理后直接复制值 |
| DistinguishedName | principal.user.group_identifiers | 直接合并值 |
| ForestId | principal.user.product_object_id | 直接复制值 |
| OriginatingUsers | principal.user.userid | 如果 OperationType != "LoginADSM",则直接复制值 |
| security_action | security_result.action | 直接复制值 |
| RequestedAction | security_result.summary | 如果 OperationResult =~ "Granted" 或 "Denied",则直接复制值 |
| AttributeName | target.resource.name | 如果 AttributeName != "" 且 AttributeName != "isDeleted",则直接复制值 |
| ClassName | target.resource.resource_subtype | 直接复制值 |
| OriginatingUsers | target.user.userid | 如果 OperationType == "LoginADSM",则直接复制值 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。