收集 BloxOne Threat Defense 日志

支持的语言:

本文档介绍了如何使用 Bindplane 将 BloxOne Threat Defense 日志注入到 Google Security Operations。Logstash 解析器从以 SYSLOG 或 JSON 格式接收的 BLOXONE DNS 日志中提取字段。它首先将日志消息规范化为 JSON 对象,然后将提取的字段映射到统一数据模型 (UDM),通过地理定位和 DNS 详细信息丰富数据,以进行安全分析。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例
  • Windows 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • 如果在代理后运行,防火墙端口处于开放状态
  • 对 Infoblox BloxOne 的特权访问权限

获取 Google SecOps 注入身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载注入身份验证文件。将该文件安全地保存在将要安装 Bindplane 的系统上。

获取 Google SecOps 客户 ID

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

安装 Bindplane 代理

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

如需了解其他安装选项,请参阅安装指南

配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:
    • 找到 config.yaml 文件。通常,它位于 Linux 上的 /etc/bindplane-agent/ 目录中或 Windows 上的安装目录中。
    • 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 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: '/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
            ingestion_labels:
                log_type: 'BLOXONE'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 根据基础架构的需要替换端口和 IP 地址。

  4. <customer_id> 替换为实际的客户 ID。

  5. /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请运行以下命令:

    sudo systemctl restart bindplane-agent
    
  • 如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

在 Infoblox BloxOne 中配置 Syslog

  1. 登录 Infoblox 门户
  2. 依次前往配置 > 管理 > Data Connector
  3. 选择目标配置标签页。
  4. 依次点击创建 > Syslog
  5. 提供以下配置详细信息:
    • 名称:提供一个描述性名称(例如“Google SecOps 收集器”)。
    • 说明:提供简要说明。
    • 状态:选择启用
    • 标记:点击添加,然后指定以下内容,以将密钥与目的地相关联:
      • KEY:为密钥输入一个描述性名称。
      • VALUE:输入相应键的值。
    • 格式:选择 CEF
    • 协议:选择 UDPTCP(取决于您的 Bindplane 代理配置)。
    • FQDN/IP:输入 Bindplane 代理 IP 地址。
    • 端口:输入 Bindplane 代理端口(默认设置为 UDP514)。
  6. 点击保存并关闭

UDM 映射表

日志字段 UDM 映射 逻辑
additional_list.key 此字段在循环中使用,用于迭代 additional_list 数组并根据 key 字段的值提取数据。它不会直接映射到 UDM。
additional_list.value principal.location.region_latitudeprincipal.location.region_longitudetarget.location.region_latitudetarget.location.region_longitude 此字段与 additional_list.key 结合使用,可从 additional_list 数组中提取特定值。提取和映射值的逻辑取决于相应的 key。例如:
- 如果 additional_list.keyintel:source:ip:geoIP:location,则使用 grok 提取经纬度值,并将其分别映射到 principal.location.region_latitudeprincipal.location.region_longitude
- 如果 additional_list.keyintel:destination:ip:geoIP:location,则使用 grok 提取纬度和经度值,并分别将其映射到 target.location.region_latitudetarget.location.region_longitude
additional_string.key additional_list.key 类似,此字段用于循环遍历 additional_string 数组并根据 key 值提取数据。它不会直接映射到 UDM。
additional_string.value additional.fields.value.string_valueprincipal.location.country_or_regiontarget.location.country_or_regionsrc.ipsrc.portsrc.hostnamenetwork.ip_protocol additional_string.key 搭配使用,用于从 additional_string 数组中提取值。映射值的逻辑取决于相应的 key。例如:
- 如果 additional_string.keyintel:source:ip:ip2asn:start_ipintel:source:ip:ip2asn:finish_ipintel:destination:ip:ip2asn:start_ipintel:destination:ip:ip2asn:finish_ip,则将该值映射到具有相应键的 additional.fields.value.string_value
- 如果 additional_string.keyintel:source:ip:geoIP:country,则将值映射到 principal.location.country_or_region
- 如果 additional_string.keyintel:destination:ip:geoIP:country,则将值映射到 target.location.country_or_region
- 如果 additional_string.keylog:source:ip,则将值映射到 src.ip
- 如果 additional_string.keylog:source:port,则将该值转换为整数后映射到 src.port
- 如果 additional_string.keylog:source:hostname,则将值映射到 src.hostname
- 如果 additional_string.keylog:cdh:input:protocol,则将值转换为大写,然后映射到 network.ip_protocol
app_category security_result.category_details 直接映射。
confidence security_result.confidence 根据以下逻辑进行映射:
- 如果 confidenceLOW,则映射到 LOW_CONFIDENCE
- 如果 confidenceMEDIUM,则映射到 MEDIUM_CONFIDENCE
- 如果 confidenceHIGH,则映射到 HIGH_CONFIDENCE
country principal.location.name 直接映射,但仅当 raw.infobloxb1region 为空时。
device principal.ipprincipal.asset.ip 直接映射,但仅当 raw.dvc 为空时。
dhcp_fingerprint security_result.detection_fields.value 直接映射到键 dhcp_fingerprint
dns_view security_result.detection_fields.value 直接映射到键 dns_view
endpoint_groups security_result.detection_fields.value 直接映射到键 endpoint_groups
event_time metadata.event_timestamp.seconds 解析为 ISO8601 时间戳,并提取秒值。仅在 timestamp 字段为空时使用。
feed_name principal.resource.name feed_name 映射到 principal.resource.name
feed_type principal.resource.attribute.labels.value 直接映射到键 feed_type
mac_address principal.mac 在转换为小写后直接映射。
network principal.hostnameprincipal.asset.hostname 直接映射,但仅当 raw.dvchostraw.dvc 均为空时才适用。
os_version principal.platform_version 直接映射。
policy_action security_result.action_detailssecurity_result.action policy_action 直接映射到 security_result.action_details
security_result.action 是根据以下逻辑派生的:
- 如果 policy_actionRedirectLog,则映射到 ALLOW
- 如果 policy_actionBLOCK,则映射到 BLOCK
policy_name security_result.detection_fields.value 直接映射到键 policy_name
qname network.dns.questions.name 直接映射。
qtype network.dns.questions.type 根据以下逻辑进行映射:
- 如果 qtypeA,则映射为 1(转换为无符号整数)。
- 如果 qtypePTR,则映射到 12(转换为无符号整数)。
raw.act security_result.action_details 直接映射。
raw.app network.application_protocol 转换为大写后直接映射。
raw.deviceeventclassid metadata.product_event_type raw.name 串联(以 - 分隔)并映射到 metadata.product_event_type
raw.devicevendor metadata.vendor_name 直接映射。
raw.deviceproduct metadata.product_name 直接映射。
raw.deviceversion metadata.product_version 直接映射。
raw.deviceseverity security_result.severity_detailssecurity_result.severity raw.deviceseverity 直接映射到 security_result.severity_details
security_result.severity 是根据以下逻辑得出的:
- 如果 raw.deviceseverity 位于 [0, 1, 2, 3] 中,则映射到 LOW
- 如果 raw.deviceseverity 位于 [4, 5, 6] 中,则映射到 MEDIUM
- 如果 raw.deviceseverity 位于 [7, 8] 中,则映射到 HIGH
- 如果 raw.deviceseverity 位于 [9, 10] 中,则映射到 CRITICAL
raw.dvc principal.ipprincipal.asset.ip 直接映射。
raw.dvchost principal.hostnameprincipal.asset.hostname 直接映射,但前提是它不等于 raw.dvc
raw.infobloxb1connectiontype additional.fields.value.string_value 直接映射到键 infobloxb1connectiontype
raw.infobloxb1ophname observer.hostnameobserver.asset.hostname 直接映射。
raw.infobloxb1ophipaddress observer.ip 直接映射。
raw.infobloxb1policyname security_result.detection_fields.value 直接映射到键 infobloxb1policyname
raw.infobloxdnsqclass dns_question.classdns_answer.class 用于根据 dns_query_class_mapping.include 文件中定义的查找表派生 dns_question.classdns_answer.class
raw.infobloxdnsqtype dns_question.typedns_answer.type 用于根据 dns_record_type.include 文件中定义的查找表派生 dns_question.typedns_answer.type
raw.infobloxdnsrcode network.dns.response_code 用于根据 dns_response_code.include 文件中定义的查找表派生 network.dns.response_code
raw.infobloxpolicyid security_result.detection_fields.value 直接映射到键 infobloxpolicyid
raw.msg metadata.description 移除开头和结尾的引号后,raw.msg 直接映射到 metadata.description
raw.name metadata.product_event_type raw.deviceeventclassid 串联(以 - 分隔)并映射到 metadata.product_event_type
rcode security_result.detection_fields.valuenetwork.dns.response_code rcode 直接映射到键为 rcodesecurity_result.detection_fields.value
如果 rcodeNXDOMAIN,则 network.dns.response_code 设置为 3(转换为无符号整数)。
rdata network.dns.answers.data 直接映射。
rip target.iptarget.asset.ip 直接映射。
severity security_result.severity 根据以下逻辑进行映射:
- 如果 severityINFO(不区分大小写),则映射到 INFORMATIONAL
- 如果 severityHIGH,则映射到 HIGH
tclass security_result.detection_fields.value 直接映射到键 tclass
threat_indicator security_result.detection_fields.value 直接映射到键 threat_indicator
timestamp metadata.event_timestamp.seconds 解析为 ISO8601 时间戳,并提取秒值。
user principal.user.user_display_name 直接映射。
user_groups security_result.detection_fields.value 直接映射到键 user_groups
不适用 principal.resource.resource_subtype 如果 feed_name 不为空,则设置为 Feed
不适用 metadata.log_type 设置为 BLOXONE
不适用 additional.fields.key 根据相应的 raw 字段,设置为 infobloxancountinfobloxarcountinfobloxb1connectiontypeinfobloxnscountintel:destination:ip:ip2asn:finish_ipintel:destination:ip:ip2asn:start_ipintel:source:ip:ip2asn:finish_ipintel:source:ip:ip2asn:start_ip
不适用 metadata.event_type 如果 has_principaltrue,则设置为 STATUS_UPDATE;否则设置为 GENERIC_EVENT
不适用 network.dns.questions.type 对于 A 记录,设置为 1;对于 PTR 记录,设置为 12,并转换为无符号整数。
不适用 network.dns.answers.namenetwork.dns.answers.typenetwork.dns.answers.class 通过解析 DNS 响应字符串从 raw.msg 中提取。
不适用 intermediary.hostnameintermediary.ipintermediary.asset.ip 通过解析 DNS 响应字符串从 raw.msg 中提取。

注意:此表仅包含映射到 UDM 的字段。原始日志中的某些字段可能由解析器在内部使用,但不会直接反映在最终的 UDM 输出中。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。