パッシブ DNS ログを収集する

以下でサポートされています。

このドキュメントでは、Google Cloud Storage V2 を使用してパッシブ DNS ログを Google Security Operations に取り込む方法について説明します。

パッシブ DNS は、脅威分析とドメイン調査のために過去の DNS の解決レコードをキャプチャする DNS インテリジェンス データソースです。データは通常、ファイルとして収集され、保存されるため、これらのファイルを Google Cloud Storage(GCS)バケットにアップロードしてから、Google SecOps フィードを構成して取り込む必要があります。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス。
  • Cloud Storage API が有効になっている Google Cloud プロジェクト。
  • GCS バケットを作成および管理する権限。
  • GCS バケットの IAM ポリシーを管理する権限。
  • パッシブ DNS データファイル(DNSDB、Farsight、その他のパッシブ DNS プロバイダなど)へのアクセス。
  • サポートされている形式(JSON や CSV など)でエクスポートされたパッシブ DNS データ。

Google Cloud Storage バケットを作成する

  1. Google Cloud コンソールに移動します。
  2. プロジェクトを選択するか、新しいプロジェクトを作成します。
  3. ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
  4. [バケットを作成] をクリックします。
  5. 次の構成情報を提供してください。

    設定 値
    バケットに名前を付ける グローバルに一意の名前(passive-dns-logs など)を入力します。
    ロケーション タイプ ニーズに応じて選択します(リージョン、デュアルリージョン、マルチリージョン)。
    ロケーション Google SecOps インスタンスに最も近いロケーションを選択します(例: us-central1)。
    ストレージ クラス Standard(アクセス頻度の高いログにおすすめ)
    アクセス制御 均一(推奨)
    保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする
  6. [作成] をクリックします。

パッシブ DNS データの GCS への自動エクスポートを構成する

通常、パッシブ DNS データは、DNS インテリジェンス プロバイダ(Farsight DNSDB、DomainTools、Cisco Umbrella Investigate など)からエクスポートされたファイルとして入手できます。GCS のデータを最新の状態に保つには、次のいずれかの方法を使用して自動エクスポート パイプラインを構成します。

Cloud Scheduler によってトリガーされる Cloud Build を使用して、プロバイダからパッシブ DNS データを取得して GCS に書き込むコンテナ化されたジョブを実行します。

  1. エクスポート ジョブのサービス アカウントを作成します。

    1. GCP コンソールで、[IAM と管理>サービス アカウント] に移動します。
    2. [サービス アカウントを作成] をクリックします。
    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 コンソールで、[セキュリティ> Secret Manager] に移動します。
    2. [シークレットの作成] をクリックします。
    3. シークレット名として「pdns-api-key」と入力します。
    4. Passive DNS プロバイダの API キーをシークレット値として入力します。
    5. [作成] をクリックします。
  4. ビルドをトリガーする Cloud Scheduler ジョブを作成します。

    1. GCP Console で、[Cloud Scheduler] に移動します。
    2. [ジョブを作成] をクリックします。
    3. 次の構成情報を提供してください。

      設定 値
      名前 passive-dns-export-daily
      リージョン GCS バケットと同じリージョンを選択する
      周波数 0 3 * * *(毎日午前 3 時(UTC))
      タイムゾーン UTC(推奨)
      ターゲット タイプ HTTP
      URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      HTTP メソッド POST
      Auth ヘッダー OAuth トークンを追加
      サービス アカウント passive-dns-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. [作成] をクリックします。

オプション 2: Storage Transfer Service(オンプレミス データストアの場合)

パッシブ DNS データがオンプレミス ファイル システムに保存されている場合は、転送エージェントで Storage Transfer Service を使用します。

  1. GCP Console で、[Storage Transfer Service] に移動します。
  2. [転送ジョブを作成] をクリックします。
  3. 転送元として [POSIX ファイル システム] を選択します。
  4. 手順に沿って、パッシブ DNS データファイルにアクセスできるマシンに Storage Transfer Agent をインストールします。
  5. 転送ジョブを構成します。

    設定 値
    ソース ディレクトリ パッシブ DNS データファイルを含むディレクトリへのパス
    宛先バケット passive-dns-logs
    宛先のパス passive-dns/
    スケジュール 定期的なスケジュール(毎日など)を設定する
  6. [作成] をクリックします。

Google SecOps サービス アカウントを取得する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Passive DNS Logs)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [Passive DNS] を選択します。
  7. [サービス アカウントを取得する] をクリックします。
  8. 一意のサービス アカウントのメールアドレスが表示されます(例:)。

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. このメールアドレスをコピーして、次のステップで使用します。

Google SecOps サービス アカウントに IAM 権限を付与する

Google SecOps サービス アカウントには、GCS バケットに対する Storage オブジェクト閲覧者のロールが必要です。

  1. [Cloud Storage] > [バケット] に移動します。
  2. バケット名(passive-dns-logs など)をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成情報を指定します。
    • プリンシパルを追加: Google SecOps サービス アカウントのメールアドレス(例: chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)を貼り付けます。
    • ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
  6. [保存] をクリックします。

Google SecOps フィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Passive DNS Logs)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [Passive DNS] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • ストレージ バケットの URL: GCS バケットの URI を入力します。

      gs://passive-dns-logs/passive-dns/
      
      • passive-dns-logs は、GCS バケット名に置き換えます。
      • passive-dns は、構成したプレフィックス パスに置き換えます。
    • Source deletion option: 必要に応じて削除オプションを選択します。

      • なし: 転送後にファイルを削除しません(テストにおすすめ)。
      • 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
      • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。

    • ファイルの最大経過日数: 過去の日数以内に変更されたファイルを含めます(デフォルトは 180 日)。

    • アセットの名前空間: アセットの名前空間。

    • Ingestion labels: このフィードのイベントに適用されるラベル。

  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
hostname intermediary.hostname 値を直接コピーする
timestamp_s metadata.event_timestamp UNIX タイムスタンプとして解析
metadata.event_type 「NETWORK_DNS」に設定
network.application_protocol 「DNS」に設定
answer network.dns.answers.data 末尾のドットを削除した後の回答の値
ttl network.dns.answers.ttl 整数に変換しました
クラス network.dns.questions.class 数値にマッピングされます(IN は 1、CH は 3、HS は 4)。
クエリ network.dns.questions.name 末尾のドットを削除した後のクエリの値
type network.dns.questions.type DNS タイプ マッピングを使用して、タイプ(大文字)から数値にマッピング
クライアント principal.ip 値を直接コピーする
サーバー target.ip 値を直接コピーする
metadata.product_name 「パッシブ DNS」に設定します。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。