收集 DNSFilter 記錄

剖析器版本:1.0

支援:

本文說明如何設定 DNSFilter,透過 HTTP 事件收集器 (HEC) 通訊協定,使用 Webhook 將記錄推送至 Google Security Operations。

DNSFilter 是採用 AI 技術的 DNS 安全解決方案,提供威脅防護、內容篩選和網路監控功能。資料匯出功能可透過 HTTP 事件收集器 (HEC) API,自動將 DNS 查詢記錄資料匯出至 SIEM 平台,支援即時安全監控和法規遵循報告。

事前準備

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

  • Google SecOps 執行個體
  • 具備 DNSFilter 資訊主頁的管理員或更高權限
  • 啟用 DNSFilter Data Export 外掛程式功能 (Basic、Pro 和 Enterprise 方案可付費加購)
  • 可存取 Google Cloud 控制台 (用於建立 API 金鑰)

在 Google SecOps 中建立 Webhook 動態饋給

建立動態饋給

  1. 依序前往 「SIEM 設定」 > 「動態饋給」。
  2. 按一下「新增動態消息」。
  3. 在下一個頁面中,按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 DNSFilter HEC Feed)。
  5. 選取「Webhook」做為「來源類型」。
  6. 選取「DNSFILTER」做為「記錄類型」。
  7. 點選「下一步」。
  8. 指定下列輸入參數的值:
    • 分割分隔符 (選用):留空,因為每個 HEC 要求都包含格式正確的事件
    • 資產命名空間:資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤
  9. 點選「下一步」。
  10. 在「Finalize」(完成) 畫面中檢查新的新聞動態消息設定,然後按一下「Submit」(提交)。

產生並儲存密鑰

建立動態饋給後,您必須產生用於驗證的密鑰:

  1. 在動態饋給詳細資料頁面中,按一下「產生密鑰」。
  2. 對話方塊會顯示密鑰。
  3. 複製並妥善儲存密鑰。

取得動態饋給端點網址

  1. 前往動態饋給的「詳細資料」分頁。
  2. 在「Endpoint Information」部分,複製「Feed endpoint URL」。
  3. 網址格式如下:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import
    

    其中 {region} 是 Google SecOps 執行個體的區域 (例如 us、europe 或 asia-southeast1),{parent} 是資源路徑,格式為 projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>。

  4. 請儲存這個網址,以利進行後續步驟。

  5. 按一下「完成」。

建立 Google Cloud API 金鑰

Google SecOps 需要 API 金鑰才能進行驗證。在 Google Cloud 控制台中建立受限制的 API 金鑰。

建立 API 金鑰

  1. 前往 Google Cloud 控制台憑證頁面。
  2. 選取專案 (與 Google SecOps 執行個體相關聯的專案)。
  3. 依序點選「建立憑證」 > 「API 金鑰」。
  4. 系統會建立 API 金鑰,並在對話方塊中顯示。
  5. 按一下「編輯 API 金鑰」,即可限制金鑰。

限制 API 金鑰

  1. 在「API 金鑰」設定頁面中: 「名稱」:輸入描述性名稱 (例如 Google SecOps DNSFilter Webhook API Key)
  2. 在「API 限制」下方:
    1. 選取「Restrict key」(限制金鑰)。
    2. 在「選取 API」下拉式選單中,搜尋並選取「Google SecOps API」 (或「Chronicle API」)。
  3. 按一下 [儲存]。
  4. 複製頁面頂端「API 金鑰」欄位中的 API 金鑰值。
  5. 妥善保存 API 金鑰。

設定 DNSFilter 資料匯出作業

建構 HEC 端點網址

  • 合併 Google SecOps 端點網址和 API 金鑰,建立 HEC 網址:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • 範例:

    https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
    

在 DNSFilter 中設定資料匯出功能

  1. 登入 DNSFilter 資訊主頁。
  2. 依序前往「工具」 > 「資料匯出」。
  3. 在「Export Destination」(匯出目的地) 專區中,選取「HTTP Event Collector (HEC)」(HTTP 事件收集器 (HEC))。
  4. 在「HEC Configuration」(HEC 設定) 部分,輸入下列資訊:
    • HTTP Event Collector URL:貼上上一個步驟中複製的完整端點網址和 API 金鑰。
    • 有效事件收集器權杖:貼上在建立 Google SecOps 資訊提供時產生的密鑰。
  5. 按一下 [Save Configuration] (儲存組態)。
  6. DNSFilter 會測試連線,如果設定正確,就會顯示成功訊息。

驗證資料擷取作業

  1. 在 DNSFilter 資訊主頁中,依序前往 「Tools」 >「Data Export」。
  2. 確認「狀態」顯示為「有效」或「已連結」。
  3. 在 Google SecOps 控制台中,依序前往 「SIEM Settings」(SIEM 設定) >「Feeds」(動態饋給)。
  4. 找出 DNSFilter 動態饋給,確認「狀態」顯示為「有效」。
  5. 按一下動態饋給名稱即可查看詳細資料。
  6. 查看「記錄擷取」指標,確認資料是否正常傳輸。
  7. 如要搜尋 DNSFilter 事件,請前往「搜尋」,然後執行下列查詢:

    metadata.log_type = "DNSFILTER"
    

驗證方式參考資料

Google SecOps Webhook 摘要支援多種驗證方式。DNSFilter HEC 整合採用混合方法。

使用方法:混合 (網址 + 標頭)

DNSFilter 會在網址中傳送 API 金鑰,並在要求標頭中傳送密鑰 (HEC 權杖)。

  • 要求格式:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    Authorization: Splunk <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

替代方法:自訂標頭

如果設定自訂應用程式將記錄傳送至 Google SecOps,建議使用這個方法,確保安全性。

  • 要求格式:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • 優點:

    • 網址中不會顯示 API 金鑰和密鑰
    • 更安全 (不會在網路伺服器存取記錄中記錄標頭)
    • 供應商支援時的首選方法

驗證標頭名稱

Google SecOps 接受下列驗證標頭名稱:

  • API 金鑰:

    • x-goog-chronicle-auth (建議)
    • X-Goog-Chronicle-Auth (不區分大小寫)
  • 密鑰:

    • x-chronicle-auth (建議)
    • X-Chronicle-Auth (不區分大小寫)
    • Authorization: Splunk <TOKEN> (HEC 相容性)

Webhook 限制和最佳做法

要求限制

限制 值
要求大小上限 4 MB
QPS (每秒查詢次數) 上限 15,000
要求逾時 30 秒
重試行為 自動 (指數輪詢)

最佳做法

  • 監控匯出狀態:定期在 DNSFilter 資訊主頁查看資料匯出狀態,確保資料持續傳輸。
  • API 金鑰輪替:定期輪替 Google Cloud API 金鑰,確保安全。
  • 私密金鑰管理:安全儲存 Google SecOps 私密金鑰,並在遭盜用時重新產生。
  • 資料保留:在 DNSFilter 和 Google SecOps 中設定適當的資料保留政策。
  • 快訊設定:在 Google SecOps 中設定重大 DNS 安全事件的快訊。

疑難排解

連線測試失敗

如果 DNSFilter 資料匯出設定測試失敗:

  1. 確認 HEC 網址正確無誤,且包含 API 金鑰參數。
  2. 確認密鑰 (HEC 權杖) 複製正確,沒有多餘空格。
  3. 確認 Google Cloud API 金鑰已啟用 Chronicle API 存取權。
  4. 確認 Google SecOps 動態饋給處於「有效」狀態。
  5. 檢查從 DNSFilter 到 Google Cloud 端點的網路連線。

Google SecOps 中未顯示任何資料

如果連線成功,但未顯示任何資料:

  1. 確認 DNSFilter 部署作業是否產生 DNS 查詢。
  2. 檢查 DNSFilter 查詢記錄,確認流量正在處理中。
  3. 在 Google SecOps 中搜尋 metadata.log_type = "DNSFILTER",確認是否已擷取。
  4. 在 Google SecOps 中查看動態饋給「記錄檔擷取」指標。
  5. 查看動態饋給的錯誤記錄,瞭解是否有任何擷取錯誤。

資料匯出功能傳回錯誤訊息

常見錯誤原因:

  • 憑證無效:API 金鑰或密鑰有誤或已過期。
  • 區域不符:Google Security Operations 端點網址區域與執行個體不符。
  • 權限:API 金鑰未啟用 Chronicle API 存取權。
  • 網路問題:防火牆或 Proxy 封鎖輸出 HTTPS 連線。

UDM 對應表

記錄欄位 UDM 對應 邏輯
時間 metadata.collected_timestamp 已轉換,使用的日期格式為:yyyy-MM-dd HH:mm:ss Z UTC
metadata.event_type 如果 principal_ip_present、principal_hostname_present 或 principal_mac_present 為 true,則設為「STATUS_UPDATE」,否則設為「GENERIC_EVENT」
question_type network.dns.questions 使用 DNS 記錄類型對應,將 question_type 轉換為 question.type,然後合併至陣列
程式碼 network.dns.response_code 使用 DNS 回應代碼對應轉換
通訊協定 network.ip_protocol 使用 IP 通訊協定對應轉換
用戶端 principal.hostname 直接複製值
request_address、ip4、ip6、source_addresses principal.ip 合併自 request_address (擷取的 IP)、ip4 (擷取的 IP)、ip6 (擷取的 IP),以及從 source_addresses 陣列擷取的 IP
區域 principal.location.country_or_region 直接複製值
clientMac principal.mac 如果符合 MAC 規則運算式,系統會直接複製值
clientID principal.resource.product_object_id 直接複製值
使用者名稱 principal.user.user_display_name 直接複製值
user_id principal.user.userid 直接複製值
code、original_code、clientType、collection、network_name、networkID、collectionID、policy、policyID、scheduled_policy、scheduled_policyID、sec_cats、sec_allow_cats、block_cats、block_allow_cats、threat、allowed、method、organization、organizationID、applicationID、application_name、application_categoryID、application_category_name security_result.detection_fields 以鍵/值組合形式合併來自各種來源欄位的標籤
網域 target.administrative_domain 直接複製值
fqdn target.domain.name 直接複製值
metadata.product_name 設為「DNSFILTER」
metadata.vendor_name 設為「DNSFILTER」

變更記錄

查看這個剖析器的變更記錄

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