DNSFilter のログを収集する

パーサーのバージョン: 1.0

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

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

DNSFilter は、脅威保護、コンテンツ フィルタリング、ネットワークの可視性を提供する AI 搭載の DNS セキュリティ ソリューションです。データ エクスポート機能を使用すると、HTTP Event Collector(HEC)API を介して DNS クエリログデータを SIEM プラットフォームに自動的にエクスポートできます。これにより、リアルタイムのセキュリティ モニタリングとコンプライアンス レポートがサポートされます。

始める前に

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

  • Google SecOps インスタンス
  • 管理者権限以上で DNSFilter ダッシュボードにアクセスできる
  • DNSFilter データ エクスポート アドオン機能が有効になっている(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 リクエストには適切な形式のイベントが含まれているため、空白のままにします。
    • Asset namespace: アセットの名前空間。
    • Ingestion labels: このフィードのイベントに適用されるラベル
  9. [次へ] をクリックします。
  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

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

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

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

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

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

    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. この 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://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?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 ダッシュボードで、[ツール> データ エクスポート] に移動します。
  2. [ステータス] が [有効] または [接続済み] と表示されていることを確認します。
  3. Google SecOps コンソールで、[SIEM 設定] > [フィード] に移動します。
  4. DNSFilter フィードを見つけて、[ステータス] が [有効] と表示されていることを確認します。
  5. フィード名をクリックして詳細を表示します。
  6. [Logs Ingested] 指標を確認して、データが流れていることを確認します。
  7. DNSFilter イベントを検索するには、[検索] に移動して、次のクエリを実行します。

    metadata.log_type = "DNSFILTER"
    

認証方法のリファレンス

Google SecOps ウェブフック フィードは、複数の認証方法をサポートしています。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 でフィードの [取り込まれたログ] 指標を確認します。
  5. フィードのエラーログで取り込みエラーを確認します。

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

エラーの一般的な原因:

  • 認証情報が無効: 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 のプロフェッショナルから回答を得ることができます。