收集 Netwrix Privilege Secure for Discovery(以前称为 Remediant SecureONE)日志
本文档介绍了如何使用 Bindplane 代理将 Netwrix Privilege Secure for Discovery(以前称为 Remediant SecureONE)日志注入到 Google Security Operations。
Netwrix Privilege Secure for Discovery 是一种无代理的特权访问管理 (PAM) 解决方案,可提供动态的即时 (JIT) 特权账号访问。它通过持续监控特权账号来消除长期特权,从而有效防止横向移动攻击并缩小组织的攻击面。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 搭载
systemd的 Windows 2016 或更高版本或 Linux 主机 - 如果在代理后面运行,请确保按照 Bindplane 代理要求打开防火墙端口
- 对 Remediant SecureONE 设备的特权访问权限(对运行 fluentd 的节点的 SSH 访问权限)
- Remediant SecureONE 2.8 版或更高版本(或升级到 fluentd 版本 1 的
s1_fluentd服务)
获取 Bindplane 代理的 Google SecOps 凭证
如需向 Google SecOps 验证 Bindplane 代理,请选择以下方法之一:
- 新部署:使用 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 收集器目录(Linux 上的
/opt/observiq-otel-collector/ingestion-auth.json或 Windows 上的C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)中的ingestion-auth.json,或更新config.yaml中的creds_file_path以匹配您保存该文件的路径。 - 前往 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
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
如需了解其他安装选项,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 Syslog 并发送到 Google SecOps
找到配置文件
Linux:
sudo nano /opt/observiq-otel-collector/config.yaml
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: 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 # 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: '<customer_id>' endpoint: chronicle.googleapis.com # Add optional ingestion labels for better organization log_type: 'REMEDIANT_SECUREONE' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels- 根据基础架构的要求替换端口和 IP 地址。
- 将
<LOCATION>替换为 Google SecOps 实例所在的区域(例如us、europe或asia-southeast1)。导出工具会为此值添加chronicle.googleapis.com前缀。 - 将
<PROJECT_NUMBER>替换为 IAM 和管理 > 设置中的项目编号。 - 将
<customer_id>替换为实际客户 ID。 - 将
/path/to/ingestion-authentication-file.json更新为您保存服务账号密钥文件的文件路径(选项 1)。
旧版提取 API 导出工具
如果您使用选项 2 中的数据注入身份验证文件,请将
exporters代码块替换为以下内容。将creds_file_path设置为数据注入身份验证文件的路径,如果您的实例位于美国境外,请将malachiteingestion-pa.googleapis.com替换为您的区域端点(例如europe-malachiteingestion-pa.googleapis.com)。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: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'REMEDIANT_SECUREONE' raw_log_field: body ingestion_labels:
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart observiq-otel-collector如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:
net stop observiq-otel-collector && net start observiq-otel-collector
配置 Remediant SecureONE syslog 转发
- 使用 SSH 连接到运行
fluentd服务的 Remediant SecureONE 节点。 备份现有
fluentd配置文件:sudo cp /secureone/conf/fluentd/fluent.conf /secureone/conf/fluentd/fluent.conf.$(date +%Y.%m.%d)打开
fluentd配置文件进行修改:sudo vim /secureone/conf/fluentd/fluent.conf修改
match docker.**部分以添加remote_syslog商店。将整个文件内容替换为以下配置:#fluent.conf for fluentd version 1 <source> @type forward </source> <filter docker.**> @type parser time_key key3 format json key_name log reserve_data true </filter> <match docker.**> @type copy <store> @type remote_syslog host BINDPLANE_IP port 514 protocol tcp packet_size 4096 program secureone hostname SECUREONE_HOSTNAME <format> @type single_value message_key log </format> </store> <store> @type stdout_pp pp true time_color blue tag_color yellow record_colored true </store> </match> <match **> @type stdout_pp pp true time_color blue tag_color yellow record_colored true </match>替换以下值:
- BINDPLANE_IP:输入 Bindplane 代理主机的 IP 地址(例如
10.100.11.13)。 - 514:输入与 Bindplane 代理
listen_address端口匹配的端口号。 - SECUREONE_HOSTNAME:输入 SecureONE 节点的 hostname(例如
secureone-prod-01)。
- BINDPLANE_IP:输入 Bindplane 代理主机的 IP 地址(例如
保存配置文件并退出编辑器。
重启 fluentd 服务以应用新配置:
s1 restart fluentd验证 fluentd 版本和运行配置:
sudo docker exec -it $(sudo docker ps | grep fluentd | cut -d' ' -f1) fluent-gem list | grep fluentd验证配置语法:
sudo docker exec -it $(sudo docker ps | grep fluentd | cut -d' ' -f1) fluentd -c /fluentd/etc/fluent.conf --dry-run通过监控 syslog 端口上的流量,验证日志是否正在转发:
sudo tcpdump -vv -i any port 514
如需了解详情,请参阅 Netwrix Privilege Secure for Discovery 文档。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
access_tokenId_label |
additional.fields |
已合并 |
access_tokenType_label |
additional.fields |
已合并 |
access_type_label |
additional.fields |
已合并 |
createdBy_label |
additional.fields |
已合并 |
details.failover_dc_label |
additional.fields |
已合并 |
details.initial_dc_label |
additional.fields |
已合并 |
details.sync_end_ts_label |
additional.fields |
已合并 |
duration_label |
additional.fields |
已合并 |
ldapName_label |
additional.fields |
已合并 |
manage_local_sids_label |
additional.fields |
已合并 |
persistent_label |
additional.fields |
已合并 |
req_query_limit_label |
additional.fields |
已合并 |
req_query_page_label |
additional.fields |
已合并 |
scan_label |
additional.fields |
已合并 |
secure_label |
additional.fields |
已合并 |
strict_secure_label |
additional.fields |
已合并 |
sync_start_ts_label |
additional.fields |
已合并 |
targetSystem_cn_label |
additional.fields |
已合并 |
targetSystem_distinguishedName_label |
additional.fields |
已合并 |
targetSystem_operatingSystem_label |
additional.fields |
已合并 |
user_distinguishedName_label |
additional.fields |
已合并 |
req_headers_host |
intermediary.asset.hostname |
直接映射 |
req_headers_host |
intermediary.hostname |
直接映射 |
json_message |
metadata.description |
直接映射 |
msg |
metadata.description |
直接映射 |
time |
metadata.event_timestamp |
已解析为 ISO8601 |
event_type |
metadata.event_type |
直接映射 |
name |
metadata.product_event_type |
直接映射 |
req_id |
metadata.product_log_id |
直接映射 |
req.method |
network.http.method |
直接映射 |
res.statusCode |
network.http.response_code |
已重命名/已映射 |
req_header_user_agent |
network.http.user_agent |
直接映射 |
targetSystem.domain_netbios |
principal.administrative_domain |
直接映射 |
user_domain_fqdn |
principal.administrative_domain |
直接映射 |
source_application |
principal.application |
直接映射 |
req_headers_host |
principal.hostname |
直接映射 |
targetSystem.cn |
principal.hostname |
直接映射 |
client_ip |
principal.ip |
已合并 |
remote_address |
principal.ip |
已合并 |
client_ua_os |
principal.platform |
已映射:(?i)windows → WINDOWS、(?i)linux → LINUX、(?i)mac → MAC |
client_ua_platform |
principal.platform_version |
直接映射 |
client_ua_version |
principal.platform_version |
直接映射 |
req.remotePort |
principal.port |
已重命名/已映射 |
script_cmd |
principal.process.command_line |
直接映射 |
pid |
principal.process.pid |
直接映射 |
browser_label |
principal.resource.attribute.labels |
已合并 |
req_header_map_label |
principal.resource.attribute.labels |
已合并 |
system |
principal.resource.product_object_id |
直接映射 |
domain_netbios_label |
principal.user.attribute.labels |
已合并 |
objectSid_label |
principal.user.attribute.labels |
已合并 |
user_domain_label |
principal.user.attribute.labels |
已合并 |
user_domain_netbios_label |
principal.user.attribute.labels |
已合并 |
user_id_label |
principal.user.attribute.labels |
已合并 |
user_objectSid_label |
principal.user.attribute.labels |
已合并 |
authData.access.role |
principal.user.role_name |
直接映射 |
user_user |
principal.user.user_display_name |
直接映射 |
access.user.sAMAccountName |
principal.user.userid |
直接映射 |
user_cn |
principal.user.userid |
直接映射 |
user_sid |
principal.user.windows_sid |
直接映射 |
disabled_label |
security_result.detection_fields |
已合并 |
disabled_label1 |
security_result.detection_fields |
已合并 |
level_label |
security_result.detection_fields |
已合并 |
req_id_key_label |
security_result.detection_fields |
已合并 |
req_params_computerId_label |
security_result.detection_fields |
已合并 |
targetSystem_id_label |
security_result.detection_fields |
已合并 |
hostname |
src.hostname |
直接映射 |
ldapName |
target.administrative_domain |
直接映射 |
targetsystem |
target.asset.hostname |
直接映射 |
server |
target.hostname |
直接映射 |
targetsystem |
target.hostname |
直接映射 |
header_map_label |
target.resource.attribute.labels |
已合并 |
req.url |
target.url |
直接映射 |
user_user |
target.user.userid |
直接映射 |
| 不适用 | metadata.product_name |
常量:SecureONE |
| 不适用 | metadata.vendor_name |
常量:Remediant |
| 不适用 | principal.platform |
常量:WINDOWS |
targetSystem.cn |
event.idm.read_only_udm.target.hostname和event.idm.read_only_udm.target.asset.hostname之间 |
从更新日志映射 |
req.query.page |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
user.distinguishedName |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
targetSystem.operatingSystem |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
req.query.limit |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
req.params.computerId |
event.idm.read_only_udm.security_result.detection_fields |
从更新日志映射 |
req.id |
event.idm.read_only_udm.security_result.detection_fields |
从更新日志映射 |
targetSystem._id |
event.idm.read_only_udm.security_result.detection_fields |
从更新日志映射 |
user.domain_netbios |
event.idm.read_only_udm.principal.user.attribute.labels |
从更新日志映射 |
user.id |
event.idm.read_only_udm.principal.user.attribute.labels |
从更新日志映射 |
user.objectSid |
event.idm.read_only_udm.principal.user.attribute.labels |
从更新日志映射 |
persistent |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
access.type |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
access.tokenId |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
access.tokenType |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
targetSystem.cn |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
targetSystem.distinguishedName |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
targetSystem.policy.strict_secure |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
targetSystem.policy.secure |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
targetSystem.policy.scan |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
targetSystem.policy.manage_local_sids |
event.idm.read_only_udm.additional.fields |
从更新日志映射 |
user.domain |
event.idm.read_only_udm.principal.user.attribute.labels |
从更新日志映射 |
access.user.domain_netbios |
event.idm.read_only_udm.principal.user.attribute.labels |
从更新日志映射 |
access.user.objectSid |
event.idm.read_only_udm.principal.user.attribute.labels |
从更新日志映射 |
user.sid |
event.idm.read_only_udm.principal.user.windows_sid |
从更新日志映射 |
user.user |
event.idm.read_only_udm.principal.user.user_display_name |
从更新日志映射 |
failover_dc","initial_dc","ldapName","sync_end_ts" ,and "sync_start_ts |
additional.fields |
从更新日志映射 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。