パッシブ 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 Console] で、[IAM と管理 > サービス アカウント] に移動します。
    2. [サービス アカウントを作成] をクリックします。
    3. 次の構成情報を提供します。
      • サービス アカウント名: passive-dns-export-sa と入力します。
      • サービス アカウントの説明: Service account for automated Passive DNS data export to GCS と入力します。
    4. [作成して続行] をクリックします。
    5. 次の役割を追加します。
      • ストレージ オブジェクト管理者 (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 Console] で、[セキュリティ > Secret Manager] に移動します。
    2. [シークレットの作成] をクリックします。
    3. シークレット名として「pdns-api-key」と入力します。
    4. パッシブ 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
      認証ヘッダー 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. [新しいフィードを追加] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Passive DNS Logs)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [パッシブ DNS] を選択します。
  7. [サービス アカウントを取得する] をクリックします。
  8. 一意のサービス アカウントのメールアドレスが表示されます。例:

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

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

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

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

Google SecOps フィードを構成する

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

    • Storage Bucket URL : GCS バケット URI を入力します。

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

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

    • Maximum File Age: 過去数日間に変更されたファイルを含めます(デフォルトは 180 日)。

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

    • 取り込みラベル: このフィードのイベントに適用されるラベル。

  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 整数に変換
class network.dns.questions.class 数値にマッピング(IN の場合は 1、CH の場合は 3、HS の場合は 4)
query network.dns.questions.name 末尾のドットを削除した後のクエリの値
type network.dns.questions.type DNS タイプ マッピングを使用して、タイプ(大文字)から数値にマッピング
client principal.ip 値を直接コピー
server target.ip 値を直接コピー
metadata.product_name 「パッシブ DNS」に設定

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