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 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. 次の入力パラメータの値を指定します。
    • Split delimiter(省略可): 各 HEC リクエストには適切な形式のイベントが含まれているため、空のままにします。
    • Asset namespace: アセットの名前空間。
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  9. [次へ] をクリックします。
  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

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

フィードを作成したら、認証用の秘密鍵を生成する必要があります。

  1. フィードの詳細ページで、[Generate Secret Key] をクリックします。
  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 ダッシュボードで、[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 の両方で適切なデータ保持ポリシーを構成します。
  • アラートの構成: 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 から統合
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 のプロフェッショナルから回答を得ることができます。