收集 Nutanix Prism 日志
支持的平台:
Google SecOps
SIEM
概览
此解析器会处理 Nutanix Prism 日志,同时处理 JSON 和 syslog 格式。它会从各种日志结构中提取字段,将其标准化为 UDM,并使用用户信息、网络详细信息和安全严重性等其他上下文来丰富数据。解析器还会根据 HTTP 方法和日志级别执行特定操作,将事件分类为 USER_LOGIN、STATUS_UPDATE 和 GENERIC_EVENT 等 UDM 事件类型。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 Nutanix Prism Central 的超级用户访问权限。
- 确保您使用的是 Windows 2012 SP2 或更高版本,或者使用了 systemd 的 Linux 主机。
- 如果在代理后面运行,请确保防火墙端口处于打开状态。
获取 Google SecOps 提取身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载提取身份验证文件。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 BindPlane Agent
- 对于 Windows 安装,请运行以下脚本:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
。 - 对于 Linux 安装,请运行以下脚本:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
。 - 如需了解其他安装选项,请参阅此安装指南。
配置 BindPlane Agent 以提取 Syslog 并将其发送到 Google SecOps
- 访问安装了 BindPlane 的机器。
按如下方式修改
config.yaml
文件:receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: Namespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
使用以下命令重启 BindPlane Agent 以应用更改:
sudo systemctl bindplane restart
从 Nutanix Prism 导出 Syslog
- 使用特权账号登录 Prism Central。
- 从菜单中选择 Prism Central Settings。
- 前往 Syslog 服务器。
- 点击 + 配置 Syslog 服务器。
- 在 Syslog 服务器对话框中,为输入参数指定值:
- 服务器名称:输入服务器的名称(例如 Google SecOps BindPlane 服务器)
- IP 地址:输入 BindPlane 代理的 IP 地址。
- 端口:输入 BindPlane Agent 正在监听的端口。
- 传输协议:选择 TCP。
- 点击配置。
- 点击数据源选项上的 + 修改。
- 在数据源和相应严重级别对话框中,为输入参数指定值:
- 依次选择 API 审核、审核和 流程。
- 将每个问题的严重级别设置为 6 - 信息。
- 点击保存。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
@timestamp |
metadata.event_timestamp |
系统会从 @timestamp 字段解析事件时间戳。支持格式 yyyy-MM-dd HH:mm:ss.SSS 、yyyy-MM-ddTHH:mm:ssZ 和 ISO8601 。 |
agent.id |
observer.asset_id |
与 agent.type 结合使用,以“agent.type:agent.id”的格式组成观察器素材资源 ID。 |
agent.type |
observer.application |
用于观察的应用。 |
agent.version |
observer.platform_version |
观察器应用的版本。 |
alertUid |
security_result.detection_fields.value |
提醒 UID 的值会映射到 detection_fields 中的 value 字段。key 设置为“Alert Uid”。 |
api_version |
metadata.product_version |
API 版本。 |
clientIp |
principal.ip ,principal.asset.ip |
客户端 IP 地址。 |
client_type |
principal.labels.value |
客户端类型的值。key 设置为“client_type”。 |
defaultMsg |
metadata.description |
默认消息。 |
entity_uuid |
metadata.product_log_id |
实体 UUID。 |
http_method |
network.http.method |
HTTP 方法。已转换为大写。 |
host.architecture |
principal.asset.hardware.cpu_platform |
主机的架构。 |
host.id |
principal.asset_id |
前缀为“NUTANIX:”,用于创建主要资产 ID。 |
host.ip |
principal.ip ,principal.asset.ip |
主机 IP 地址。 |
host.mac |
principal.mac |
主机 MAC 地址。 |
host.os.kernel |
principal.platform_patch_level |
主机操作系统的内核版本。 |
host.os.platform |
principal.platform |
主机操作系统的平台。映射到 LINUX 、WINDOWS 、MAC 或 UNKNOWN_PLATFORM 。 |
host.os.version |
principal.platform_version |
主机操作系统的版本。 |
input.type |
network.ip_protocol |
网络协议。映射到“UDP”或“TCP”。 |
log.source.address |
principal.ip 、principal.asset.ip 、principal.port |
会进行解析以提取来源 IP 和端口。 |
logstash.collect.host |
observer.ip |
Logstash 收集器的 IP 地址。 |
logstash.collect.timestamp |
metadata.collected_timestamp |
收集日志的时间戳。 |
logstash.ingest.host |
intermediary.hostname |
Logstash 提取服务器的主机名。 |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
日志提取时间。 |
logstash.irm_environment |
principal.labels.value |
irm 环境的值。key 设置为“irm_environment”。 |
logstash.irm_region |
principal.labels.value |
irm 区域的值。key 设置为“irm_region”。 |
logstash.irm_site |
principal.labels.value |
irm 网站的值。key 设置为“irm_site”。 |
logstash.process.host |
intermediary.hostname |
Logstash 处理服务器的主机名。 |
operationType |
metadata.product_event_type |
操作类型。 |
originatingClusterUuid |
additional.fields.value.string_value |
来源集群的 UUID。key 设置为“发起集群 Uuid”。 |
params.mac_address |
target.mac |
参数中的 MAC 地址。 |
params.requested_ip_address |
target.ip ,target.asset.ip |
参数中请求的 IP 地址。 |
params.vm_name |
target.resource.name |
参数中的虚拟机名称。 |
program |
metadata.product_event_type |
课程名称。 |
rest_endpoint |
target.url |
REST 端点。 |
sessionId |
additional.fields.value.string_value |
会话 ID。key 设置为“会话 ID”。 |
syslog_host |
principal.hostname ,principal.asset.hostname |
Syslog 主机。 |
timestamp |
metadata.event_timestamp |
事件时间戳。 |
username |
principal.user.user_display_name 或 principal.user.userid |
用户名。如果 http_method 为“POST”,则用作用户 ID。 |
uuid |
metadata.product_log_id |
UUID。 |
不适用 | metadata.vendor_name |
已硬编码为“Nutanix_Prism”。 |
不适用 | metadata.product_name |
已硬编码为“Nutanix_Prism”。 |
不适用 | metadata.event_type |
由解析器逻辑根据 has_principal 、has_target 、audit_log 、network_set 和 http_method 的值确定。可以是 GENERIC_EVENT 、USER_LOGIN 、STATUS_UPDATE 、USER_RESOURCE_ACCESS 、RESOURCE_CREATION 、USER_RESOURCE_UPDATE_CONTENT 或 USER_RESOURCE_DELETION 。 |
不适用 | metadata.log_type |
已硬编码为“NUTANIX_PRISM”。 |
不适用 | extensions.auth.type |
如果 metadata.event_type 为 USER_LOGIN ,则设置为“AUTHTYPE_UNSPECIFIED”。 |
不适用 | security_result.severity |
由基于 log_level 和 syslog_pri 的解析器逻辑决定。可以是 CRITICAL 、ERROR 、HIGH 、MEDIUM 或 INFORMATIONAL 。 |
更改
2024-02-21
- 如果“inner_message”不为空且“not_json”为“true”,请将“audit_log”设置为“true”,以支持丢弃的 JSON 日志。
- 使“principal.ip”和“principal.asset.ip”映射保持一致。
- 对齐了“target.ip”和“target.asset.ip”映射。
- 对“principal.hostname”和“principal.asset.hostname”映射进行了调整。
- 当“network_set”为“false”“has_principal”为“true”“has_target”为“false”且“audit_log”为“false”时,请将“metadata.event_type”设置为“STATUS_UPDATE”。
- 如果“network_set”为“true”“has_principal”为“true”“has_target”为“false”且“audit_log”为“false”,则将“metadata.event_type”设置为“GENERIC_EVENT”。
2024-01-12
- 添加了对新格式的 Syslog 日志的支持。
- 在将“logstash.ingest.host”映射到“intermediary.hostname”之前添加了 null 条件检查。
- 在将“logstash.process.host”映射到“intermediary.hostname”之前添加了 null 条件检查。
- 在将“logstash.collect.host”映射到“observer.ip”之前添加了 null 条件检查。
2023-12-23
- 添加了对新类型的审核日志的支持。
- 添加了新的 Grok 模式来解析 SYSLOG+JSON 日志。
- 将“affectedEntityList”和“alertUid”映射到“security_result.detection_fields”。
- 将“clientIp”和“params.requested_ip_address”映射到“principal.ip”。
- 将“defaultMsg”映射到“metadata.description”。
- 将“operationType”映射到“metadata.product_event_type”。
- 将“originatingClusterUuid”和“sessionId”映射到“additional.fields”。
- 将“params.mac_address”映射到“principal.mac”。
- 将“uuid”映射到“metadata.product_log_id”。
- 将“userName”映射到“principal.user.user_display_name”。
- 将“params.vm_name”映射到“target.resource.name”。
2023-01-23
- 将“logstash.ingest.host”映射到“intermediary[0].hostname”,而不是“observer.hostname”。
- 将“logstash.collect.host”映射到“observer.ip”。
- 添加了对“logstash.ingest.host”的 null 检查。