收集 Nutanix Prism 日志

支持的平台:

概览

此解析器会处理 Nutanix Prism 日志,同时处理 JSON 和 syslog 格式。它会从各种日志结构中提取字段,将其标准化为 UDM,并使用用户信息、网络详细信息和安全严重性等其他上下文来丰富数据。解析器还会根据 HTTP 方法和日志级别执行特定操作,将事件分类为 USER_LOGINSTATUS_UPDATEGENERIC_EVENT 等 UDM 事件类型。

准备工作

  • 确保您拥有 Google SecOps 实例。
  • 确保您拥有对 Nutanix Prism Central 的超级用户访问权限。
  • 确保您使用的是 Windows 2012 SP2 或更高版本,或者使用了 systemd 的 Linux 主机。
  • 如果在代理后面运行,请确保防火墙端口处于打开状态。

获取 Google SecOps 提取身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载提取身份验证文件

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

安装 BindPlane Agent

  1. 对于 Windows 安装,请运行以下脚本:msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
  2. 对于 Linux 安装,请运行以下脚本:sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
  3. 如需了解其他安装选项,请参阅此安装指南

配置 BindPlane Agent 以提取 Syslog 并将其发送到 Google SecOps

  1. 访问安装了 BindPlane 的机器。
  2. 按如下方式修改 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
    
  3. 使用以下命令重启 BindPlane Agent 以应用更改:sudo systemctl bindplane restart

从 Nutanix Prism 导出 Syslog

  1. 使用特权账号登录 Prism Central。
  2. 从菜单中选择 Prism Central Settings
  3. 前往 Syslog 服务器
  4. 点击 + 配置 Syslog 服务器
  5. Syslog 服务器对话框中,为输入参数指定值:
    • 服务器名称:输入服务器的名称(例如 Google SecOps BindPlane 服务器
    • IP 地址:输入 BindPlane 代理的 IP 地址。
    • 端口:输入 BindPlane Agent 正在监听的端口。
    • 传输协议:选择 TCP
    • 点击配置
  6. 点击数据源选项上的 + 修改
  7. 数据源和相应严重级别对话框中,为输入参数指定值:
    • 依次选择 API 审核审核流程
    • 将每个问题的严重级别设置为 6 - 信息
    • 点击保存

UDM 映射表

日志字段 UDM 映射 逻辑
@timestamp metadata.event_timestamp 系统会从 @timestamp 字段解析事件时间戳。支持格式 yyyy-MM-dd HH:mm:ss.SSSyyyy-MM-ddTHH:mm:ssZISO8601
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.ipprincipal.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.ipprincipal.asset.ip 主机 IP 地址。
host.mac principal.mac 主机 MAC 地址。
host.os.kernel principal.platform_patch_level 主机操作系统的内核版本。
host.os.platform principal.platform 主机操作系统的平台。映射到 LINUXWINDOWSMACUNKNOWN_PLATFORM
host.os.version principal.platform_version 主机操作系统的版本。
input.type network.ip_protocol 网络协议。映射到“UDP”或“TCP”。
log.source.address principal.ipprincipal.asset.ipprincipal.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.iptarget.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.hostnameprincipal.asset.hostname Syslog 主机。
timestamp metadata.event_timestamp 事件时间戳。
username principal.user.user_display_nameprincipal.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_principalhas_targetaudit_lognetwork_sethttp_method 的值确定。可以是 GENERIC_EVENTUSER_LOGINSTATUS_UPDATEUSER_RESOURCE_ACCESSRESOURCE_CREATIONUSER_RESOURCE_UPDATE_CONTENTUSER_RESOURCE_DELETION
不适用 metadata.log_type 已硬编码为“NUTANIX_PRISM”。
不适用 extensions.auth.type 如果 metadata.event_typeUSER_LOGIN,则设置为“AUTHTYPE_UNSPECIFIED”。
不适用 security_result.severity 由基于 log_levelsyslog_pri 的解析器逻辑决定。可以是 CRITICALERRORHIGHMEDIUMINFORMATIONAL

更改

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 检查。