收集被動式 DNS 記錄

支援的國家/地區:

本文說明如何使用 Google Cloud Storage V2,將被動式 DNS 記錄檔擷取至 Google Security Operations。

被動式 DNS 是 DNS 智慧資料來源,可擷取 DNS 解析記錄,用於威脅分析和網域調查。由於資料通常會以檔案形式收集及儲存,因此您必須將這些檔案上傳至 Google Cloud Storage (GCS) bucket,然後設定 Google SecOps 資訊提供,以便擷取這些檔案。

事前準備

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

  • Google SecOps 執行個體。
  • 已啟用 Cloud Storage API 的 Google Cloud 雲端專案。
  • 建立及管理 GCS 值區的權限。
  • 管理 Google Cloud Storage 值區的 IAM 政策的權限。
  • 存取被動式 DNS 資料檔案 (例如 DNSDB、Farsight 或其他被動式 DNS 供應商)。
  • 以支援格式 (例如 JSON 或 CSV) 匯出的被動式 DNS 資料。

建立 Google Cloud Storage bucket

  1. 前往 Google Cloud 控制台
  2. 選取專案或建立新專案。
  3. 在導覽選單中,依序前往「Cloud Storage」>「Bucket」
  4. 按一下「建立值區」
  5. 請提供下列設定詳細資料:

    設定
    為 bucket 命名 輸入全域不重複的名稱 (例如 passive-dns-logs)
    位置類型 根據需求選擇 (區域、雙區域、多區域)
    位置 選取最接近 Google SecOps 執行個體的位置 (例如 us-central1)
    儲存空間級別 標準 (建議用於經常存取的記錄)
    存取控管 統一 (建議)
    保護工具 選用:啟用物件版本管理或資料保留政策
  6. 點選「建立」

設定將被動式 DNS 資料自動匯出至 GCS

被動式 DNS 資料通常可從 DNS 智慧型供應商 (例如 Farsight DNSDB、DomainTools 或 Cisco Umbrella Investigate) 匯出檔案取得。如要確保 GCS 中的資料為最新狀態,請使用下列其中一種方法設定自動匯出管道。

使用 Cloud Scheduler 觸發的 Cloud Build,執行從供應商擷取被動 DNS 資料並寫入 GCS 的容器化工作。

  1. 為匯出工作建立服務帳戶:

    1. GCP 控制台中,依序前往「IAM 與管理」>「服務帳戶」
    2. 按一下「Create Service Account」(建立服務帳戶)
    3. 請提供下列設定詳細資料:
      • 服務帳戶名稱:輸入 passive-dns-export-sa
      • 服務帳戶說明:輸入 Service account for automated Passive DNS data export to GCS
    4. 按一下「建立並繼續」
    5. 新增下列角色:
      • Storage 物件管理員 (將檔案寫入 GCS)
      • Cloud Build 編輯者 (執行 Cloud Build 工作)
    6. 按一下 [完成]
  2. 建立 Cloud Build 建構設定檔 (cloudbuild.yaml):

    steps:
      - name: 'gcr.io/cloud-builders/gcloud'
        entrypoint: 'bash'
        args:
          - '-c'
          - |
            apt-get update && apt-get install -y curl jq
            # Fetch Passive DNS data from your provider
            # Replace with the actual API call for your provider
            # Example for Farsight DNSDB:
            TIMESTAMP=$(date -u +%Y%m%d_%H%M%S)
            curl -s -H "X-API-Key: $${PDNS_API_KEY}" \
              "https://api.dnsdb.info/dnsdb/v2/lookup/rrset/name/*.example.com" \
              -o /workspace/passive_dns_$${TIMESTAMP}.json
            # Upload to GCS
            gcloud storage cp /workspace/passive_dns_$${TIMESTAMP}.json \
              gs://${_BUCKET_NAME}/passive-dns/
    substitutions:
      _BUCKET_NAME: 'passive-dns-logs'
    
  3. 將 API 金鑰儲存為 Secret Manager 密鑰:

    1. GCP 控制台中,依序前往「Security」(安全性) >「Secret Manager」
    2. 點選「建立密鑰」
    3. 輸入 pdns-api-key 做為密鑰名稱。
    4. 輸入被動式 DNS 供應商 API 金鑰做為密鑰值。
    5. 點選「建立」
  4. 建立 Cloud Scheduler 工作來觸發建構作業:

    1. 前往 GCP 主控台的「Cloud Scheduler」
    2. 點選「建立工作」
    3. 請提供下列設定詳細資料:

      設定
      名稱 passive-dns-export-daily
      區域 選取與 GCS bucket 相同的區域
      頻率 0 3 * * * (每天世界標準時間凌晨 3 點)
      時區 世界標準時間 (建議)
      目標類型 HTTP
      網址 https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      HTTP 方法 POST
      驗證標頭 新增 OAuth 權杖
      服務帳戶 passive-dns-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. 點選「建立」

選項 2:Storage 移轉服務 (適用於地端資料儲存庫)

如果被動式 DNS 資料儲存在地端部署的檔案系統,請搭配使用 Storage 移轉服務和移轉代理程式。

  1. GCP Console 中,前往 Storage 移轉服務
  2. 按一下 [Create transfer job] (建立移轉工作)
  3. 選取「POSIX 檔案系統」做為來源。
  4. 按照操作說明,在可存取被動式 DNS 資料檔案的機器上安裝 Storage Transfer Agent
  5. 設定轉移工作:

    設定
    來源目錄 包含被動式 DNS 資料檔案的目錄路徑
    目的地 bucket passive-dns-logs
    目的地路徑 passive-dns/
    排定郵件傳送時間 設定週期性排程 (例如每日)
  6. 點選「建立」

擷取 Google SecOps 服務帳戶

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 Passive DNS Logs)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」
  6. 選取「被動式 DNS」做為「記錄類型」
  7. 按一下「取得服務帳戶」
  8. 系統會顯示專屬服務帳戶電子郵件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 複製這個電子郵件地址,以便在下一步中使用。

將 IAM 權限授予 Google SecOps 服務帳戶

Google SecOps 服務帳戶需要 GCS bucket 的「Storage 物件檢視者」角色。

  1. 依序前往「Cloud Storage」>「Buckets」
  2. 點按 bucket 名稱 (例如 passive-dns-logs)。
  3. 前往「權限」分頁標籤。
  4. 按一下「授予存取權」
  5. 請提供下列設定詳細資料:
    • 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址 (例如 chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)。
    • 指派角色:選取「Storage 物件檢視者」
  6. 按一下 [儲存]

設定 Google SecOps 動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 Passive DNS Logs)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」
  6. 選取「被動式 DNS」做為「記錄類型」
  7. 點選「下一步」
  8. 指定下列輸入參數的值:

    • 儲存空間 bucket URL:輸入 GCS bucket URI:

      gs://passive-dns-logs/passive-dns/
      
      • 請將 passive-dns-logs 替換成您的 GCS bucket 名稱。
      • passive-dns 替換為您設定的前置字串路徑。
    • 來源刪除選項:根據偏好設定選取刪除選項:

      • 永不:移轉後一律不刪除任何檔案 (建議用於測試)。
      • 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
      • 刪除已轉移的檔案和空白目錄:成功轉移檔案後,刪除檔案和空白目錄。

    • 檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)。

    • 資產命名空間資產命名空間

    • 擷取標籤:要套用至這個動態饋給事件的標籤。

  9. 點選「下一步」

  10. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)

UDM 對應表

記錄欄位 UDM 對應 邏輯
主機名稱 intermediary.hostname 直接複製值
timestamp_s metadata.event_timestamp 剖析為 UNIX 時間戳記
metadata.event_type 設為「NETWORK_DNS」
network.application_protocol 設為「DNS」
解答 network.dns.answers.data 移除結尾點後,答案的值
ttl network.dns.answers.ttl 已轉換為整數
類別 network.dns.questions.class 對應至數值 (IN 為 1、CH 為 3、HS 為 4)
查詢 network.dns.questions.name 從查詢中移除尾隨點後的值
類型 network.dns.questions.type 使用 DNS 類型對應,從類型 (大寫) 對應至數值
用戶端 principal.ip 直接複製值
伺服器 target.ip 直接複製值
metadata.product_name 設為「被動式 DNS」

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