收集 BloxOne Threat Defense 記錄

支援的國家/地區:

本文說明如何使用 Bindplane,將 BloxOne Threat Defense 記錄擷取至 Google Security Operations。Logstash 剖析器會從以 SYSLOG 或 JSON 格式接收的 BLOXONE DNS 記錄中擷取欄位。系統會先將記錄訊息正規化為 JSON 物件,然後將擷取的欄位對應至 Unified Data Model (UDM),並加入地理位置和 DNS 詳細資料,以利進行安全性分析。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • Windows 2016 以上版本,或搭載 systemd 的 Linux 主機
  • 如果透過 Proxy 執行,防火牆通訊埠已開啟
  • 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. 開啟具有根層級或 sudo 權限的終端機。
  2. 執行下列指令:

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

其他安裝資源

如需其他安裝選項,請參閱安裝指南

設定 Bindplane 代理程式,擷取系統記錄檔並傳送至 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. 依序前往「設定」>「管理」>「資料連結器」
  3. 選取「目的地設定」分頁標籤。
  4. 依序點選「建立」> Syslog
  5. 提供下列設定詳細資料:
    • 名稱:提供描述性名稱 (例如 Google SecOps 收集器)。
    • 說明:提供簡短說明。
    • 狀態:選取「啟用」
    • 標記:按一下「新增」,然後指定下列項目,將鍵與目的地建立關聯:
      • KEY:輸入金鑰的描述性名稱。
      • VALUE:輸入金鑰的值。
    • 格式:選取「CEF」
    • 通訊協定:選取「UDP」或「TCP」 (視 Bindplane 代理程式設定而定)。
    • FQDN/IP:輸入 Bindplane 代理程式 IP 位址。
    • 連接埠:輸入 Bindplane 代理程式連接埠 (預設為 UDP514)。
  6. 按一下「Save & Close」

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 位於 [0123],則對應至 LOW
- If raw.deviceseverity is in [4, 5, 6], map to MEDIUM.
- If raw.deviceseverity is in [7, 8], map to HIGH.
- If raw.deviceseverity is in [9, 10], map to 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 會直接對應至 security_result.detection_fields.value,並使用 rcode 做為鍵。
如果 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 設為 1 (適用於 A 記錄) 和 12 (適用於 PTR 記錄),並轉換為不帶正負號的整數。
不適用 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 專業人員尋求答案。