收集 ExtraHop RevealX 日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 Bindplane 将 ExtraHop RevealX 日志注入到 Google Security Operations。解析器从 JSON 和 Syslog 格式的日志中提取字段。它使用 Grok 模式和条件逻辑来处理不同的日志格式,将提取的字段映射到 UDM,并使用严重程度和类别等安全相关信息来丰富数据。解析器还会处理特定的 ExtraHop 事件类型,例如 DNS 重新绑定、Kerberos 身份验证错误和 RDP 连接,并针对每种事件类型应用专门的解析逻辑。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows 2016 或更高版本,或者具有
systemd
的 Linux 主机 - 如果通过代理运行,请确保防火墙端口处于开放状态
- 对 ExtraHop RevealX 的特权访问权限
获取 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
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_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: 'EXTRAHOP' raw_log_field: body ingestion_labels: 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
配置 ExtraHop Syslog
- 使用
https://<extrahop-hostname-or-IP-address>/admin
登录 ExtraHop 管理界面。 - 依次前往状态和诊断信息 > 审核日志。
- 点击 Configure Syslog Settings。
- 提供以下配置详细信息:
- 目的地:输入 Bindplane 代理 IP 地址。
- 协议:根据您的 Bindplane 配置,选择 UDP 或 TCP。
- 端口:输入 Bindplane 代理端口号。
- 点击测试设置。
- 点击保存。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
alert_name |
security_result.summary |
原始日志中的 alert_name 值映射到 security_result.summary 。 |
answers[].data |
network.dns.answers[].data |
原始日志中 answers 数组中每个元素的 data 值都会映射到 network.dns.answers 数组中相应元素的 data 字段。 |
answers[].name |
network.dns.answers[].name |
原始日志中 answers 数组中每个元素的 name 值都会映射到 network.dns.answers 数组中相应元素的 name 字段。 |
answers[].ttl |
network.dns.answers[].ttl |
原始日志中 answers 数组中每个元素的 ttl 值都会映射到 network.dns.answers 数组中相应元素的 ttl 字段。 |
answers[].typeNum |
network.dns.answers[].type |
原始日志中 answers 数组中每个元素的 typeNum 值都会映射到 network.dns.answers 数组中相应元素的 type 字段。 |
client_ip |
principal.ip |
原始日志中的 client_ip 值映射到 principal.ip 。 |
cn1 |
security_result.rule_labels[].value |
原始日志中的 cn1 值用作键为“检测 ID”的 security_result.rule_labels 元素的值。 |
cn2 |
security_result.detection_fields[].value |
原始日志中的 cn2 值用作键为“riskscore”的 security_result.detection_fields 元素的值。 |
cs1 |
security_result.rule_name |
原始日志中的 cs1 值映射到 security_result.rule_name 。 |
cs2 |
security_result.category_details[] |
原始日志中的 cs2 值会作为元素添加到 security_result.category_details 数组中。 |
description |
metadata.description |
原始日志中的 description 值经过一些处理(移除换行符和反斜杠)后,会映射到 metadata.description 。在某些情况下,原始日志中的其他字段可能会影响或覆盖此字段。 |
details |
principal.resource.resource_subtype 、security_result.summary 、principal.ip |
系统会解析 details 字段。与“facility”键关联的值会映射到 principal.resource.resource_subtype 。与“details”键关联的值会映射到 security_result.summary 。与“src_ip”键关联的值映射到 principal.ip 。 |
dst |
target.ip 或 target.mac |
原始日志中的 dst 值如果为 IP 地址,则会映射到 target.ip ;如果为 MAC 地址,则会映射到 target.mac 。 |
dst_ip |
target.ip |
原始日志中的 dst_ip 值映射到 target.ip 。 |
eh_event |
metadata.event_type ,network.application_protocol |
如果 eh_event 为“dns”,则 metadata.event_type 设置为 NETWORK_DNS ,network.application_protocol 设置为 DNS 。如果 eh_event 为“RDP”,则 metadata.event_type 设置为 NETWORK_CONNECTION ,network.application_protocol 设置为 RDP 。 |
event_id |
metadata.product_event_type |
原始日志中的 event_id 值映射到 metadata.product_event_type 。 |
facility |
principal.resource.resource_subtype |
原始日志中的 facility 值映射到 principal.resource.resource_subtype 。 |
ipaddr |
principal.ip |
原始日志中的 ipaddr 值映射到 principal.ip 。 |
jsonPayload.description |
metadata.product_event_type 、principal.hostname 、principal.asset.hostname 、security_result.summary |
jsonPayload.description 字段解析为 JSON。“operation”字段映射到 metadata.product_event_type 。“event”字段(移除“审核日志”后)会映射到 principal.hostname 和 principal.asset.hostname 。“详细信息”字段已映射到 security_result.summary 。 |
jsonPayload.event |
metadata.product_event_type 、principal.hostname 、principal.asset.hostname |
原始日志(移除“审核日志”后)中的 jsonPayload.event 值会映射到 metadata.product_event_type 、principal.hostname 和 principal.asset.hostname 。 |
jsonPayload.id |
metadata.product_log_id |
原始日志中的 jsonPayload.id 值映射到 metadata.product_log_id 。 |
macaddr |
principal.mac |
原始日志中的 macaddr 值映射到 principal.mac 。 |
name |
metadata.description |
原始日志中的 name 值映射到 metadata.description 。 |
object_id |
target.resource.product_object_id |
原始日志中的 object_id 值映射到 target.resource.product_object_id 。 |
object_name |
target.resource.name |
原始日志中的 object_name 值映射到 target.resource.name 。 |
object_type |
target.resource.resource_type |
原始日志中的 object_type 值(转换为大写)会映射到 target.resource.resource_type 。 |
operation |
metadata.product_event_type |
原始日志中的 operation 值映射到 metadata.product_event_type 。 |
priority |
security_result.severity ,security_result.severity_details |
如果 priority 为“notice”,则 security_result.severity 设置为 MEDIUM ,security_result.severity_details 设置为 priority 的值。 |
product_event_type |
metadata.product_event_type |
原始日志中的 product_event_type 值会映射到 metadata.product_event_type 。它还用于根据其值确定 metadata.event_type 和其他字段。 |
qname |
network.dns.questions[].name |
原始日志中的 qname 值会映射到 network.dns.questions 元素的 name 字段。 |
qname_or_host |
intermediary.hostname |
原始日志中的 qname_or_host 值映射到 intermediary.hostname 。 |
qtype |
network.dns.questions[].type |
原始日志中的 qtype 值会映射到 network.dns.questions 元素的 type 字段,并根据 DNS 记录类型将字符串表示形式转换为相应的数值。 |
resource.labels.project_id |
target.resource.attribute.labels[].value |
原始日志中的 resource.labels.project_id 值用作键为“Project id”的 target.resource.attribute.labels 元素的值。 |
resource.type |
target.resource.resource_subtype |
原始日志中的 resource.type 值映射到 target.resource.resource_subtype 。 |
rdp_record.clientBuild |
metadata.product_version |
原始日志中的 rdp_record.clientBuild 值映射到 metadata.product_version 。 |
rdp_record.clientBytes |
network.sent_bytes |
原始日志中的 rdp_record.clientBytes 值映射到 network.sent_bytes 。 |
rdp_record.clientName |
principal.hostname |
原始日志中的 rdp_record.clientName 值映射到 principal.hostname 。 |
rdp_record.clientPort |
principal.port |
原始日志中的 rdp_record.clientPort 值映射到 principal.port 。 |
rdp_record.cookie |
principal.user.userid |
原始日志中 rdp_record.cookie 的值(移除“mstshash=”后)会映射到 principal.user.userid 。 |
rdp_record.proto |
network.ip_protocol |
原始日志中的 rdp_record.proto 值会映射到 network.ip_protocol ,将“TCP”转换为“TCP”,并将“UDP”转换为“UDP”。 |
rdp_record.selectedProtocol |
security_result.description |
原始日志中的 rdp_record.selectedProtocol 值映射到 security_result.description 。 |
rdp_record.serverBytes |
network.received_bytes |
原始日志中的 rdp_record.serverBytes 值映射到 network.received_bytes 。 |
rdp_record.serverPort |
target.port |
原始日志中的 rdp_record.serverPort 值映射到 target.port 。 |
rt |
metadata.event_timestamp |
原始日志中的 rt 值会被解析为时间戳并映射到 metadata.event_timestamp 。 |
severity |
security_result.severity 、security_result.severity_details 、event.idm.is_alert 、event.idm.is_significant |
severity 的值映射到 security_result.severity_details 。它还用于确定 security_result.severity 、event.idm.is_alert 和 event.idm.is_significant 的值。 |
src |
principal.ip 或 principal.mac |
原始日志中的 src 值如果为 IP 地址,则会映射到 principal.ip ;如果为 MAC 地址,则会映射到 principal.mac 。 |
src_ip |
principal.ip 或 principal.mac |
原始日志中的 src_ip 值如果为 IP 地址,则会映射到 principal.ip ;如果为 MAC 地址,则会映射到 principal.mac 。 |
summary |
security_result.summary |
原始日志中的 summary 值映射到 security_result.summary 。 |
ts |
metadata.event_timestamp |
原始日志中的 ts 值会被解析为时间戳并映射到 metadata.event_timestamp 。 |
user |
principal.user.userid |
原始日志中的 user 值映射到 principal.user.userid 。 |
(不适用) | metadata.log_type |
始终设置为“EXTRAHOP”。 |
(不适用) | metadata.vendor_name |
始终设置为“EXTRAHOP”。 |
(不适用) | metadata.product_name |
始终设置为“EXTRAHOP”。 |
(不适用) | security_result.severity |
默认设置为 CRITICAL ,或根据 severity 或 priority 的值设置。 |
(不适用) | event.idm.is_alert |
如果 security_result.severity 为“HIGH”或“CRITICAL”,则设置为 true 。 |
(不适用) | event.idm.is_significant |
如果 security_result.severity 为“HIGH”或“CRITICAL”,则设置为 true 。 |
(不适用) | metadata.event_type |
根据其他字段(例如 eh_event 、product_event_type 、has_principal 和 dst )的值确定。默认值为 GENERIC_EVENT 。 |
(不适用) | network.application_protocol |
如果 eh_event 为“dns”或 message 包含“DNS Rebinding”,则设置为 DNS 。如果 eh_event 为“RDP”,则设置为 RDP 。 |
(不适用) | security_result.rule_labels[].key |
对于从 cn1 派生的规则标签,设置为“检测 ID”。 |
(不适用) | security_result.detection_fields[].key |
对于从 cn2 派生的检测字段,设置为“riskscore”。 |
(不适用) | principal.user.attribute.roles[].type |
如果存在 user_name ,则设置为 SERVICE_ACCOUNT 。 |
(不适用) | extensions.auth.type |
如果 product_event_type 为“Kerberos 客户端身份验证错误”,则设置为 SSO 。 |
(不适用) | extensions.auth.mechanism |
如果 product_event_type 为“不安全的 LDAP 身份验证”或“Kerberos 客户端身份验证错误”,则设置为 USERNAME_PASSWORD 。 |
(不适用) | security_result.category |
如果 product_event_type 为“DNS Internal Reverse Lookup Scan”或包含“Inbound Suspicious Connections”,则设置为 NETWORK_SUSPICIOUS 。如果 product_event_type 为“请求外部数据库服务器”,则设置为 NETWORK_MALICIOUS 。 |
(不适用) | network.http.response_code |
根据从 product_event_type 中提取的 status_code 进行设置(如果该值与“HTTP Server %{INT:status_code} %{GREEDYDATA}”模式匹配)。 |
jsonPayload.cs1 |
security_result.detection_fields[].value |
原始日志中的 jsonPayload.cs1 值用作 security_result.detection_fields 元素的值。 |
jsonPayload.cn1 |
security_result.detection_fields[].value |
原始日志中的 jsonPayload.cn1 值用作 security_result.detection_fields 元素的值。 |
jsonPayload.cn2 |
security_result.detection_fields[].value |
原始日志中的 jsonPayload.cn2 值用作 security_result.detection_fields 元素的值。 |
jsonPayload.cs1Label 、jsonPayload.cn1Label 、jsonPayload.cn2Label |
security_result.detection_fields[].key |
原始日志中的这些字段用作 security_result.detection_fields 中相应元素的键。 |
jsonPayload.src |
principal.ip |
原始日志中的 jsonPayload.src 值映射到 principal.ip 。 |
jsonPayload.dst |
target.ip |
原始日志中的 jsonPayload.dst 值映射到 target.ip 。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。