DNSFilter のログを収集する

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

このドキュメントでは、HTTP Event Collector(HEC)プロトコルを介して Webhook を使用してログを Google Security Operations に push するように DNSFilter を構成する方法について説明します。

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. [Add New Feed] をクリックします。
  3. 次のページで [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: DNSFilter HEC Feed)。
  5. [Source type] として [Webhook] を選択します。
  6. [ログタイプ] として [DNSFILTER] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • 分割区切り文字(省略可): 各 HEC リクエストには適切な形式のイベントが含まれているため、空白のままにします。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル
  9. [次へ] をクリックします。
  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

秘密鍵を生成して保存する

フィードを作成したら、認証用のシークレット キーを生成する必要があります。

  1. フィードの詳細ページで、[シークレット キーを生成] をクリックします。
  2. ダイアログに秘密鍵が表示されます。
  3. 秘密鍵をコピーして安全に保存します。

フィード エンドポイントの URL を取得する

  1. フィードの [詳細] タブに移動します。
  2. [エンドポイント情報] セクションで、[フィード エンドポイント URL] をコピーします。
  3. URL の形式は次のとおりです。

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    または

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. 次の手順で使用するため、この URL を保存します。

  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. [キーを制限] を選択します。
    2. [API を選択] プルダウンで、[Google SecOps API](または [Chronicle API])を検索して選択します。
  3. [保存] をクリックします。
  4. ページ上部の [API キー] フィールドから API キーの値をコピーします。
  5. API キーを安全に保存します。

DNSFilter データ エクスポートを構成する

HEC エンドポイントの URL を作成する

  • Google SecOps エンドポイント URL と API キーを組み合わせて、HEC URL を作成します。

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

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

DNSFilter でデータ エクスポートを構成する

  1. DNSFilter ダッシュボードにログインします。
  2. [ツール> データのエクスポート] に移動します。
  3. [エクスポート先] セクションで、[HTTP Event Collector(HEC)] を選択します。
  4. [HEC Configuration] セクションで、次の情報を入力します。
    • HTTP Event Collector URL: 前の手順で取得した API キーを含むエンドポイント URL 全体を貼り付けます。
    • アクティブなイベント コレクタ トークン: Google SecOps フィードの作成時に生成されたシークレット キーを貼り付けます。
  5. [Save Configuration] をクリックします。
  6. DNSFilter は接続をテストし、構成が正しければ成功メッセージを表示します。

データ取り込みを確認する

  1. DNSFilter ダッシュボードで、[Tools> Data Export] に移動します。
  2. [ステータス] が [有効] または [接続済み] と表示されていることを確認します。
  3. Google SecOps コンソールで、[SIEM 設定] > [フィード] に移動します。
  4. DNSFilter フィードを見つけて、[ステータス] が [有効] と表示されていることを確認します。
  5. フィード名をクリックして詳細を表示します。
  6. 取り込まれたログ指標を確認して、データが流れていることを確認します。
  7. DNSFilter イベントを検索するには、[検索] に移動して、次のクエリを実行します。

    metadata.log_type = "DNSFILTER"
    

認証方法のリファレンス

Google SecOps webhook フィードは、複数の認証方法をサポートしています。DNSFilter HEC 統合では、ハイブリッド方式が使用されます。

使用した方法: ハイブリッド(URL + ヘッダー)

DNSFilter は、URL で 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 キーとシークレットが URL に表示されない
    • より安全(ヘッダーがウェブサーバーのアクセスログに記録されない)
    • ベンダーがサポートしている場合の推奨方法

認証ヘッダー名

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 の両方で適切なデータ保持ポリシーを構成します。
  • アラートの構成: 重大な DNS セキュリティ イベントについて Google SecOps でアラートを設定します。

トラブルシューティング

接続テストが失敗する

DNSFilter データ エクスポート構成のテストが失敗した場合:

  1. HEC URL が正しく、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 でフィードの Logs Ingested 指標を確認します。
  5. フィードのエラーログで取り込みエラーを確認します。

データ エクスポートでエラー メッセージが返される

一般的なエラーの原因:

  • Invalid credentials: API キーまたはシークレット キーが間違っているか、有効期限が切れています。
  • リージョンの不一致: Google SecOps エンドポイント URL のリージョンがインスタンスと一致していません。
  • 権限: API キーで Chronicle API へのアクセスが有効になっていません。
  • ネットワークの問題: ファイアウォールまたはプロキシがアウトバウンド 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 から統合されました
region 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 さまざまなソースフィールドから Key-Value ペアとして統合されたラベル
ドメイン target.administrative_domain 値を直接コピー
fqdn target.domain.name 値を直接コピー
metadata.product_name 「DNSFILTER」に設定
metadata.vendor_name 「DNSFILTER」に設定

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