收集 BlueCat Edge DNS 解析器記錄

剖析器版本:1.0

支援:

本文說明如何使用 Bindplane 代理程式,將 BlueCat Edge DNS Resolver 記錄檔擷取至 Google Security Operations。

BlueCat Edge DNS 解析器是 DNS 安全性和管理解決方案,可產生 DNS 查詢、回應和威脅偵測事件的記錄。剖析器會將欄位正規化,並對應至 Unified Data Model (UDM),同時處理 JSON 和非 JSON 記錄格式。

事前準備

請確認您符合下列必要條件:

  • Google SecOps 執行個體
  • Windows Server 2016 以上版本,或搭載 systemd 的 Linux 主機
  • Bindplane 代理程式與 BlueCat BDDS 伺服器之間的網路連線
  • 如果透過 Proxy 執行,請確保防火牆通訊埠已根據 Bindplane 代理程式需求開啟
  • BlueCat BDDS 網頁 UI 的特殊存取權

取得 Bindplane 代理程式的 Google SecOps 憑證

如要向 Google SecOps 驗證 Bindplane 代理程式,請選擇下列其中一種方法:

  • 新部署作業:使用 Chronicle API (選項 1)。
  • 舊版部署作業:繼續使用擷取驗證檔案 (選項 2),直到 Ingestion API 於 2027 年 7 月 20 日停用。
  1. 登入 Google Cloud 控制台,然後選取連結至 Google SecOps 執行個體的 Google Cloud 專案。
  2. 依序前往 「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
  3. 按一下「建立服務帳戶」。
  4. 提供下列設定詳細資料:
    • 服務帳戶名稱:輸入帳戶名稱 (例如 bindplane-ingest)。
    • 「服務帳戶說明」:輸入說明 (例如 Bindplane agent log ingestion)。
  5. 點按「Create and continue」(建立並繼續)。
  6. 在「將專案存取權授予這個服務帳戶」部分,按一下「選取角色」,然後選取「Chronicle 編輯者」。
  7. 依序點選「繼續」和「完成」。
  8. 按一下您建立的服務帳戶,然後前往「金鑰」分頁。
  9. 依序點選「新增金鑰」>「建立新的金鑰」。
  10. 選取「JSON」,然後點選「建立」。金鑰檔案會下載到電腦。
  11. 將金鑰檔案儲存為 Bindplane 收集器目錄中的 ingestion-auth.json (Linux 為 /opt/observiq-otel-collector/ingestion-auth.json,Windows 為 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或更新 config.yaml 中的 creds_file_path,使其與儲存檔案的路徑相符。
  12. 依序前往「IAM 與管理」>「設定」,然後複製「專案編號」。設定匯出工具時會用到。

方法 2:下載擷取驗證檔案 (舊版)

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM Settings」 > 「Collection Agents」。
  3. 下載擷取驗證檔案。
  4. 將檔案安全地儲存在要安裝 Bindplane 代理程式的系統上。

取得 Google SecOps 客戶 ID

  1. 登入 Google SecOps 控制台。
  2. 依序前往「SIEM 設定」 > 「設定檔」。
  3. 複製並儲存「機構詳細資料」部分的客戶 ID。

安裝 Bindplane 代理程式

請按照下列操作說明,在 Windows 或 Linux 作業系統上安裝 Bindplane 代理程式。

Windows 安裝

  1. 以管理員身分開啟命令提示字元或 PowerShell。
  2. 執行下列指令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. 等待安裝完成。

  4. 執行下列指令,確認安裝成功:

    sc query observiq-otel-collector
    

    服務應顯示為「RUNNING」。

Linux 安裝

  1. 開啟具有根層級或 sudo 權限的終端機。
  2. 執行下列指令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. 等待安裝完成。

  4. 執行下列指令,確認安裝成功:

    sudo systemctl status observiq-otel-collector
    

    服務應顯示為「active (running)」。

其他安裝資源

如需其他安裝選項和疑難排解資訊,請參閱 Bindplane 代理程式安裝指南。

設定 Bindplane 代理程式,擷取系統記錄並傳送至 Google SecOps

找出設定檔

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

編輯設定檔

  • 將 config.yaml 的全部內容替換為下列設定:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/bluecat_edge:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: BLUECAT_EDGE
        raw_log_field: body
    
    service:
      pipelines:
        logs/bluecat_edge_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/bluecat_edge
    

設定參數

替換下列預留位置:

  • 接收器設定:

    • listen_address:要監聽的 IP 位址和通訊埠:
      • 0.0.0.0:在所有介面上監聽 (建議)
      • 通訊埠 514 是標準的系統記錄通訊埠 (在 Linux 上需要根層級權限;如果沒有根層級權限,請使用 1514)
  • Exporter 設定:

    • creds_file_path:服務帳戶 JSON 金鑰檔案的完整路徑 (選項 1):
      • Linux:/opt/observiq-otel-collector/ingestion-auth.json
      • Windows:C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id:從 Google SecOps 控制台複製的客戶 ID
    • location:將 <LOCATION> 替換為 Google SecOps 執行個體的區域 (例如 us、europe 或 asia-southeast1)。匯出工具會在這個值前面加上 chronicle.googleapis.com。如需完整清單,請參閱「區域性端點」。
    • project:依序前往「IAM 與管理」>「設定」,然後將 <PROJECT_NUMBER> 替換為專案編號。
    • endpoint:請將此值設為 chronicle.googleapis.com。

舊版擷取 API 匯出工具

  • 如果您使用選項 2 的擷取驗證檔案,請將 exporters 區塊替換為下列內容。將 creds_file_path 設為擷取驗證檔案的路徑。如果執行個體位於美國境外,請將 malachiteingestion-pa.googleapis.com 替換為區域端點 (例如 europe-malachiteingestion-pa.googleapis.com)。

    exporters:
      chronicle/bluecat_edge:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: BLUECAT_EDGE
        raw_log_field: body
    

儲存設定檔

  • 編輯完成後,請儲存檔案:
    • Linux:依序按下 Ctrl+O、Enter 和 Ctrl+X
    • Windows:依序點選「檔案」 > 「儲存」

重新啟動 Bindplane 代理程式,套用變更

  • 如要在 Linux 中重新啟動 Bindplane 代理程式,請執行下列指令:

    sudo systemctl restart observiq-otel-collector
    
    1. 確認服務正在執行:

      sudo systemctl status observiq-otel-collector
      
    2. 查看記錄檔是否有錯誤:

      sudo journalctl -u observiq-otel-collector -f
      
  • 如要在 Windows 中重新啟動 Bindplane 代理程式,請選擇下列其中一個選項:

    • 以管理員身分開啟命令提示字元或 PowerShell:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • 服務控制台:

      1. 按下 Win+R,輸入 services.msc,然後按下 Enter 鍵。
      2. 找出「observIQ OpenTelemetry Collector」。
      3. 按一下滑鼠右鍵,然後選取「重新啟動」。
      4. 確認服務是否正在執行:

        sc query observiq-otel-collector
        
      5. 查看記錄檔是否有錯誤:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

在 BlueCat Edge DNS 解析器上設定 syslog

  1. 登入 BDDS 網頁 UI。
  2. 前往「設定」>「伺服器」分頁。
  3. 選取 BDDS 的名稱,開啟伺服器的「詳細資料」分頁。
  4. 依序點選「伺服器名稱選單」>「服務設定」。
  5. 依序點選「Service Type」>「Syslog」。
  6. 請提供下列設定詳細資料:
    • 勾選「ISO 8601 Timestamp」核取方塊,即可在本機記錄訊息中使用 ISO 8601 時間戳記格式。
    • 伺服器:輸入 Bindplane 代理程式 IP 位址。
    • Port:輸入 Bindplane 代理程式通訊埠編號。
    • 層級:選取「資訊型」。
    • 勾選「Use RFC 5424 Syslog Protocol」核取方塊,即可使用 RFC 5424 syslog 通訊協定傳送 syslog 訊息。
    • 選取「ISO 8601 時間戳記」核取方塊,即可對重新導向至遠端系統記錄伺服器的系統記錄訊息,使用 ISO 8601 時間戳記格式。
    • 在「Service Type」(服務類型) 下方,選取「DNS」、「DHCP」和「All Other Services」(所有其他服務)。
    • Transport:選取「UDP」。
    • 按一下「新增」。
  7. 按一下「Update」。

UDM 對應表

記錄欄位 UDM 對應 邏輯
answer.domainName network.dns.answers.name DNS 回應中 answer 部分的網域名稱。已移除尾端 .。
answer.recordTypeId network.dns.answers.type DNS 回應 answer 區段中的記錄類型 ID,已轉換為不帶正負號的整數。
answer.ttl network.dns.answers.ttl DNS 回應 answer 區段的存留時間 (TTL) 值,會轉換為不帶正負號的整數。
customerId target.user.userid 記錄中的客戶 ID,代表發起 DNS 要求的使用者。
domain.domainName network.dns.authority.data DNS 回應中 authority 或 additional 部分的網域名稱。結尾的 . 會移除。
主機名稱 principal.hostname 從原始記錄 Host 標頭擷取的主機名稱 (僅限非 JSON 格式記錄)。
方法 network.http.method 從原始記錄擷取的 HTTP 方法,僅限記錄不是 JSON 格式時。
parentDomain principal.administrative_domain 所查詢 DNS 名稱的上層網域。已移除尾端 .。
通訊埠 principal.port 從原始記錄的 Host 標頭擷取的通訊埠編號,僅限記錄並非 JSON 格式,且已轉換為整數。
question.domainName network.dns.questions.name DNS 請求 question 區段中的網域名稱。結尾的 . 會移除。
question.questionTypeId network.dns.questions.type DNS 要求 question 區段的問題類型 ID,已轉換為不帶正負號的整數。
responseData.header.aa network.dns.authoritative DNS 回應是否為權威回覆,從 responseData 區段擷取。
responseData.header.id network.dns.id 從 responseData 區段擷取的 DNS 訊息 ID,並轉換為不帶正負號的整數。
responseData.header.opcode network.dns.opcode 從 responseData 區段擷取的 DNS 訊息運算碼,並轉換為不帶正負號的整數。
responseData.header.ra network.dns.recursion_available 是否可遞迴,從 responseData 區段擷取。
responseData.header.rcode network.dns.response_code 從 responseData 區段擷取的 DNS 回應代碼,轉換為不帶正負號的整數。
responseData.header.rd network.dns.recursion_desired 是否選取遞迴,從 responseData 區段擷取。
responseData.header.tc network.dns.truncated DNS 訊息是否遭到截斷,從 responseData 區段擷取。
servicePointId additional.fields.value.string_value 記錄中的服務點 ID。
siteId additional.fields.value.string_value 記錄中的網站 ID。
socketProtocol network.ip_protocol 用於 DNS 要求的網路通訊協定 (TCP 或 UDP)。
sourceAddress principal.ip DNS 用戶端的 IP 位址。
sourcePort principal.port DNS 用戶端的通訊埠編號,已轉換為整數。
threat.indicators security_result.category_details 與偵測到的威脅相關的指標。
threat.type security_result.threat_name 偵測到的威脅類型。
時間 metadata.event_timestamp.seconds DNS 事件的時間戳記,從 time 欄位擷取,並從毫秒轉換為秒。
User-Agent network.http.user_agent 從原始記錄擷取的使用者代理程式字串 (僅限記錄不是 JSON 格式時)。
additional.fields.key 視原始記錄的內容而定,可能是 servicePointId、siteId、Content-Type 或 Content-Length。
metadata.event_type 事件類型。如果存在 DNS 問題,則設為 NETWORK_DNS,否則設為 GENERIC_EVENT。
metadata.log_type 記錄類型,一律設為 BLUECAT_EDGE。
network.application_protocol 應用程式通訊協定。如果存在 DNS 問題,則設為 DNS;如果擷取到 HTTP 方法,則設為 HTTP,否則留空。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。