收集 Vectra 提醒日志
本文档介绍了如何使用 Vectra SIEM 连接器和 Bindplane 将 Vectra Alerts 日志注入到 Google Security Operations。
Vectra AI 是一种网络检测和响应平台,可针对云、数据中心和 IoT 环境中的威胁检测生成安全提醒。该平台使用 AI 驱动的行为分析来实时识别隐藏的网络攻击。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - Bindplane 代理与 Vectra AI 平台之间的网络连接
- 如果在代理后面运行,请确保防火墙端口已根据 Bindplane 代理要求打开
- 对 Vectra AI 平台具有管理员权限的特权访问权限
获取 Google SecOps 注入身份验证文件
- 登录 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 安装
- 打开具有 root 或 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 /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/vectra_alerts: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: VECTRA_ALERTS raw_log_field: body service: pipelines: logs/vectra_alerts_to_chronicle: receivers: - udplog exporters: - chronicle/vectra_alerts
配置参数
替换以下占位符:
接收器配置:
listen_address:要监听的 IP 地址和端口:0.0.0.0侦听所有接口(推荐)- 端口
514是标准 syslog 端口(在 Linux 上需要 root 权限;对于非 root 用户,请使用1514)
导出器配置:
creds_file_path:提取身份验证文件的完整路径:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id:从 Google SecOps 控制台复制的客户 IDendpoint:区域端点网址:- 美国:
malachiteingestion-pa.googleapis.com - 欧洲:
europe-malachiteingestion-pa.googleapis.com - 亚洲:
asia-southeast1-malachiteingestion-pa.googleapis.com - 如需查看完整列表,请参阅区域级端点
- 美国:
保存配置文件
- 修改后,保存文件:
- 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 收集器。
- 右键点击并选择重新启动。
- 按
验证服务是否正在运行:
sc query observiq-otel-collector检查日志是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
配置 Vectra 提醒 syslog 转发
部署 Vectra SIEM 连接器,以将提醒数据转发到 Bindplane 代理。
- 部署 Vectra SIEM 连接器(以 Docker 容器或独立应用的形式提供)。
- 使用您的 Vectra AI 平台网址(例如
https://your-tenant.vectra.ai)和 API 凭据配置连接器。 - 使用以下参数将输出目的地设置为 syslog:
- Syslog 服务器:输入 Bindplane 代理主机 IP 地址。
- 端口:输入
514(或在 Bindplane 代理中配置的端口)。 - 协议:选择 UDP(与 Bindplane 接收器配置相匹配)。
- 选择要转发的事件类别:
- 检测
- 审核
- 健康事件
启动连接器,并通过检查 Bindplane 代理日志来验证是否正在转发提醒日志。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| assigned_date | additional.fields.assigned_date_label | 设置键为“Assigned Date”且值来自 assigned_date 的标签 |
| assigned_to | additional.fields.assigned_to_label | 设置键为“Assigned To”且值来自 assigned_to 的标签 |
| c_score | additional.fields.c_score_label | 设置了键为“c_score”且值来自 c_score 的标签 |
| 类别 | security_result.category_details | 直接复制值 |
| 确定性 | additional.fields.certainty_label | 设置了键为“Certainty”且值为确定性的标签 |
| created_timestamp | metadata.event_timestamp | 已使用 yyyy-MM-ddTHH:mm:ssZ 格式进行转换 |
| custom_detection | additional.fields.custom_detection_label | 设置键为“Custom Detection”且值为 custom_detection 的标签 |
| data_source.connection_id | security_result.detection_fields.connection_id_label | 设置标签,键为“Connection ID”,值为 data_source.connection_id |
| data_source.connection_name | security_result.detection_fields.connection_name_label | 设置键为“连接名称”且值来自 data_source.connection_name 的标签 |
| data_source.type | security_result.detection_fields.data_source_type_label | 设置标签,键为“Data Source Type”,值为 data_source.type |
| 说明 | metadata.description | 直接复制值 |
| 检测 | additional.fields.detection_label | 设置键为“检测”且值来自检测的标签 |
| detection_category | additional.fields.detection_category_label | 设置键为“检测类别”且值来自 detection_category 的标签 |
| detection_type | additional.fields.detection_type_label | 设置标签,键为“检测类型”,值为 detection_type |
| detection_url | principal.url | 直接复制值 |
| filtered_by_ai | additional.fields.filtered_by_ai_label | 设置键为“Filtered By AI”且值为 filtered_by_ai 的标签 |
| filtered_by_rule | additional.fields.filtered_by_rule_label | 设置键为“Filtered By Rule”且值来自 filtered_by_rule 的标签 |
| filtered_by_user | additional.fields.filtered_by_user_label | 设置键为“Filtered By User”且值为 filtered_by_user 的标签 |
| first_timestamp | additional.fields.first_timestamp_label | 设置标签,键为“First Timestamp”,值为 first_timestamp |
| gd_first_timestamp | security_result.detection_fields.gd_first_timestamp_label | 设置键为“first_timestamp”且值来自 gd_first_timestamp 的标签 |
| gd_grouping_field | security_result.detection_fields.gd_grouping_field_label | 设置键为“grouping_field”且值来自 gd_grouping_field 的标签 |
| gd_last_timestamp | security_result.detection_fields.gd_last_timestamp_label | 设置标签,键为“group_details_last_timestamp”,值为 gd_last_timestamp |
| gd_uuid | security_result.detection_fields.gd_uuid_label | 设置键为“gd_uuid”且值为 gd_uuid 的标签 |
| grp_description | security_result.detection_fields.grp_description_label | 设置键为“grp_description”且值为 grp_description 的标签 |
| grp_id | security_result.detection_fields.grp_id_label | 设置了键为“grp_id”且值为 grp_id 的标签 |
| grp_last_modified | security_result.detection_fields.grp_last_modified_label | 设置键为“grp_last_modified”且值来自 grp_last_modified 的标签 |
| grp_last_modified_by | security_result.detection_fields.grp_last_modified_by_label | 设置键为“grp_last_modified_by”且值来自 grp_last_modified_by 的标签 |
| grp_name | security_result.detection_fields.grp_name_label | 设置键为“grp_name”且值为 grp_name 的标签 |
| grp_type | security_result.detection_fields.grp_type_label | 设置键为“grp_type”且值来自 grp_type 的标签 |
| id | metadata.product_log_id | 直接复制值 |
| 中介 | 中介 | 直接复制值 |
| is_custom_model | additional.fields.is_custom_model_label | 设置键为“is_custom_model”且值为 is_custom_model 的标签 |
| is_marked_custom | additional.fields.is_marked_custom_label | 设置键为“is_marked_custom”且值为 is_marked_custom 的标签 |
| is_targeting_key_asset | additional.fields.is_targeting_key_asset_label | 设置标签,键为“is_targeting_key_asset”,值为 is_targeting_key_asset |
| is_triaged | additional.fields.is_triaged_label | 设置键为“is_triaged”且值来自 is_triaged 的标签 |
| last_timestamp | additional.fields.last_timestamp_label | 设置键为“last_timestamp”且值来自 last_timestamp 的标签 |
| note | additional.fields.note_label | 设置键为“note”且值为 note 的标签 |
| note_modified_by | additional.fields.note_modified_by_label | 设置键为“note_modified_by”且值为 note_modified_by 的标签 |
| note_modified_timestamp | additional.fields.note_modified_timestamp_label | 设置键为“note_modified_timestamp”且值来自 note_modified_timestamp 的标签 |
| notes | additional.fields.notes_label | 设置键为“notes”且值来自备注的标签 |
| 主账号 | 主账号 | 直接复制值 |
| security_result | security_result | 直接复制值 |
| 传感器 | additional.fields.sensor_label | 设置键为“sensor”且值来自传感器的标签 |
| sensor_name | additional.fields.sensor_name_label | 设置键为“sensor_name”且值来自 sensor_name 的标签 |
| src | src | 直接复制值 |
| src_account | additional.fields.src_account_label | 设置标签,键为“src_account”,值为 src_account |
| src_host.certainty | additional.fields.src_certainty_label | 设置键为“src_host_certainty”且值来自 src_host.certainty 的标签 |
| src_host.id | principal.user.userid | 直接复制值 |
| gd_src_host_ip、src_ip、src_host.ip | principal.ip | 合并自 gd_src_host_ip、src_ip、src_host.ip;最后一次合并胜出 |
| src_ip、src_host.ip | principal.asset.ip | 从 src_ip、src_host.ip 合并;以最后一次合并为准 |
| src_host.is_key_asset | additional.fields.src_host_is_key_asset_label | 设置标签,键为“src_host_is_key_asset”,值为 src_host.is_key_asset |
| src_host.name | principal.hostname | 直接复制值 |
| src_host.threat | additional.fields.src_host_threat_label | 设置键为“src_host_threat”且值来自 src_host.threat 的标签 |
| src_host.url | src.url | 直接复制值 |
| src_host_group_description | security_result.detection_fields.src_host_group_description_label | 设置键为“src_host_group_description”且值来自 src_host_group_description 的标签 |
| src_host_group_id | security_result.detection_fields.src_host_group_id_label | 设置键为“src_host_group_id”且值来自 src_host_group_id 的标签 |
| src_host_group_last_modified | security_result.detection_fields.src_host_group_last_modified_label | 设置键为“src_host_group_last_modified”且值来自 src_host_group_last_modified 的标签 |
| src_host_group_last_modified_by | security_result.detection_fields.src_host_group_last_modified_by_label | 设置键为“src_host_group_last_modified_by”且值来自 src_host_group_last_modified_by 的标签 |
| src_host_group_name | security_result.detection_fields.src_host_group_name_label | 设置键为“src_host_group_name”且值来自 src_host_group_name 的标签 |
| src_host_group_type | security_result.detection_fields.src_host_group_type_label | 设置键为“src_host_group_type”且值来自 src_host_group_type 的标签 |
| state | security_result.detection_fields.state_label | 设置键为“state”且值来自状态的标签 |
| summary.num_attempts | additional.fields.num_attempts_label | 设置键为“num_attempts”且值为 summary.num_attempts 的标签 |
| 目标 | 目标 | 直接复制值 |
| dst_host_ip、dst_ip1 | target.ip | 从 dst_host_ip、dst_ip1 合并;最后一次合并生效 |
| 标签 | additional.fields.tags_label | 设置标签,键为“tags”,值为来自标记的值 |
| t_score | additional.fields.t_score_label | 设置键为“t_score”且值来自 t_score 的标签 |
| targets_key_asset | additional.fields.targets_key_asset_label | 设置键为“targets_key_asset”且值来自 targets_key_asset 的标签 |
| 威胁 | security_result.detection_fields.threat_label | 设置键为“威胁”且值来自威胁的标签 |
| triage_rule_id | security_result.rule_id | 直接复制值 |
| 类型 | additional.fields.type_label | 设置了键为“type”且值来自类型的标签 |
| 网址 | metadata.url_back_to_product | 直接复制值 |
| uuid1 | security_result.detection_fields.uuid_label | 设置键为“uuid”且值为 uuid1 的标签 |
| dst_host_id | security_result.detection_fields.dst_host_id_label | 设置键为“dst_host_id”且值来自 dst_host_id 的标签 |
| dst_host_name | security_result.detection_fields.dst_host_name_label | 设置标签,键为“dst_host_name”,值为 dst_host_name |
| dst_port1 | security_result.detection_fields.dst_port_label | 设置标签,键为“dst_port”,值为 dst_port1 |
| dst_last_timestamp | security_result.detection_fields.dst_last_timestamp_label | 设置键为“dst_last_timestamp”且值来自 dst_last_timestamp 的标签 |
| metadata.event_type | 如果 has_principal == "true" 且 has_target == "true",则设置为“NETWORK_CONNECTION”;否则,如果 has_user == "true",则设置为“USER_UNCATEGORIZED”;否则,如果 has_principal == "true",则设置为“STATUS_UPDATE”;否则,设置为“GENERIC_EVENT” | |
| metadata.product_name | 设置为“Vectra 提醒” | |
| metadata.vendor_name | 设置为“Vectra 提醒” |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。