DNSFilter のログを収集する

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

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

このドキュメントでは、HTTP Event Collector(HEC)プロトコルを使用して、Webhook 経由でログを Google Security Operations にプッシュするように 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. [新しいフィードを追加] をクリックします。
  3. 次のページで、[単一フィードを構成する] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: DNSFilter HEC Feed)。
  5. [Source type] として [Webhook] を選択します。
  6. [Log type] として [DNSFILTER] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • Split delimiter (省略可): 各 HEC リクエストには適切にフォーマットされたイベントが含まれているため、空のままにします。
    • Asset namespace: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル
  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 の構成] セクションに、次の情報を入力します。
    • HTTP Event Collector URL: 前の手順で取得した API キーを含む完全なエンドポイント URL を貼り付けます。
    • Active Event Collector Token: Google SecOps フィードの作成時に生成された秘密鍵を貼り付けます。
  5. [Save Configuration] をクリックします。
  6. 構成が正しい場合、DNSFilter は接続をテストし、成功メッセージを表示します。

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

  1. [DNSFilter ダッシュボード] で、[ツール > データ エクスポート] に移動します。
  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"
    }
    
  • メリット:

    • URL に API キーと秘密鍵が表示されない
    • セキュリティが強化される(ヘッダーはウェブサーバーのアクセスログに記録されない)
    • ベンダーがサポートしている場合は推奨される方法

認証ヘッダー名

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

トラブルシューティング

接続テストが失敗する

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 をマージ
リージョン 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 のプロフェッショナルから回答を得ることができます。