すべてのプロダクト
Search
ドキュメントセンター

Web Application Firewall:ログのクエリ

最終更新日:May 24, 2024

WAFに追加されたドメイン名に対してログ収集機能が有効になっている場合、この機能を使用して、そのドメイン名の収集されたログをリアルタイムで照会および分析できます。 クエリと分析の結果に基づいて、グラフを設定し、アラートルールを作成できます。

前提条件

Log Service for WAF機能が有効になっています。 詳細については、「Simple Log Service For WAF機能の使用を開始する」をご参照ください。

データのクエリと分析

  1. WAFコンソールにログインします。 上部のナビゲーションバーで、WAFインスタンスがデプロイされているリソースグループとリージョンを選択します。 リージョンは、中国本土または中国本土以外です。

  2. 左側のナビゲーションウィンドウで、セキュリティ操作 > ログサービス.

  3. ドメイン名ドロップダウンリストからドメイン名を選択し、[ステータス] をオンにして、ドメイン名のログ収集を有効にします。 enable log collection

    ドメイン名ドロップダウンリスト (上の図では1とマークされています) には、WAFによって保護されているドメイン名のみが含まれています。 ログ収集を有効にするドメイン名がドロップダウンリストに含まれていない場合は、そのドメイン名をWAFに追加します。 詳細については、「チュートリアル」をご参照ください。

  4. [ログクエリ] タブで、クエリステートメントを実行して、選択した保護オブジェクトのログをクエリおよび分析します。 Query logs

    1. 上の図で1とマークされている検索ボックスにクエリステートメントを入力します。

      入力するクエリ文は、Log Serviceに固有の構文を使用する必要があります。 構文の詳細については、「検索構文」をご参照ください。 WAFログに含まれるログフィールドは、クエリステートメントのクエリフィールドとして使用されます。 WAFでサポートされているログフィールドの詳細については、「WAFでサポートされているログフィールド」をご参照ください。

      クエリ構文に慣れていない場合は、高度な検索機能を使用することを推奨します。 高度な検索機能を使用するには、検索ボックスの上にある高度な検索を展開し、検索条件を指定して検索をクリックするだけです。 検索条件に基づいて、検索ボックスにクエリ文が自動的に生成されます。 次の表に、高度な検索機能でサポートされている検索条件を示します。

      検索条件

      説明

      IP

      リクエストを送信するクライアントのIPアドレス。

      リクエストID

      クライアント要求に対してWAFによって生成される一意のID。 このIDは、WAFがエラーページまたはクライアントに対してスライダーCAPTCHA検証を完了するようにクライアントに促す応答ページを返すときに提供されます。 このIDを使用して、エラーを分析およびトラブルシューティングできます。

      ルールID

      リクエストと一致するWAF保護ルールのID。 IDは、[セキュリティレポート] ページで、または [システム管理] > [保護ルールグループ] を選択して取得できます。

      サーバー応答コード

      WAFからのリクエストに応答してオリジンサーバーが送信するHTTPステータスコード。

      WAFによって返されるステータスコード

      クライアントからのリクエストに応答してWAFが送信するHTTPステータスコード。

      保護機能

      リクエストと一致するWAF保護ルールのタイプ。 WAF保護ルールとその設定方法の詳細については、「概要」をご参照ください。

    2. クエリ結果を計算して分析する場合は、検索ボックスに検索文の後に分析文を入力する必要があります。 検索条件を満たすログのみをクエリする場合は、この手順をスキップしてください。

      分析文と検索文は縦棒 (|) で区切られています。 分析ステートメントは、標準のSQL-92構文を使用します。 分析ステートメントの詳細については、「ログ分析の概要」をご参照ください。

    3. 上の図で2とマークされている時間セレクターを使用して、クエリの時間範囲を指定します。

    4. 上の図で3とマークされている [検索と分析] をクリックします。

      ページの下部では、クエリと分析の結果をログヒストグラム、[生ログ] および [グラフ] タブで表示できます。 クエリと分析の結果に基づいて、さまざまな操作を実行できます。 たとえば、迅速な分析、グラフの生成、およびアラートの設定を行うことができます。 詳細については、「クエリと分析の結果の管理」および「アラートルールの作成」をご参照ください。

    ログのクエリと分析の例については、このトピックの「クエリと分析の例」を参照してください。

クエリと分析結果の管理

Log Service for WAFは、クエリと分析の結果をログヒストグラム、[生ログ] タブ、および [グラフ] タブに表示します。 Log Service for WAFでは、アラートの設定や保存済み検索の作成など、結果に対するフォローアップ操作を実行することもできます。

  • ログヒストグラム

    ログヒストグラムは、異なる時間範囲で照会されたログの内訳を示します。 Log histogram

    • 緑色の長方形の上にポインターを移動すると、その長方形で表される時間範囲と、その時間範囲内で取得されたログの数を表示できます。

    • 緑色の四角形をクリックすると、よりきめ細かいログの内訳を表示できます。 [生ログ] タブでクエリと分析の結果を表示することもできます。

  • 生ログ

    [生ログ] タブで各ログの詳細を表示できます。 Raw logs

    • クイック分析

      アイコンをクリックしてalias、フィールドの名前またはエイリアスを表示するかどうかを指定できます。 インデックスを設定するときにエイリアスを作成できます。 たとえば、host_nameのエイリアスがhostの場合、[フィールドエイリアスの表示] を選択した後、クイック分析リストにhostが表示されます。

      説明

      フィールドにエイリアスがない場合、[フィールドエイリアスの表示] を選択しても、フィールドの名前がクイック分析リストに表示されます。

      詳細は、クイック分析を参照してください。

    • ログの詳細を表示

      • [テーブル] をクリックして、テーブル内のログを表示します。

      • [生データ] をクリックして生ログを表示します。

        • アイコンをクリックしてcopyログをコピーします。

        • アイコンをクリックしdetailsて、タグの詳細を表示します。

      • [新しい行] をクリックして、ログを複数行に表示するかどうかを確認します。

      • [時間] をクリックすると、ログが時系列で表示されます。

      • アイコンをクリックしdownloadsて、ログをコンピュータにダウンロードします。 現在のページでのログのダウンロード、Cloud Shellでのすべてのログのダウンロード、コマンドラインツールを使用したすべてのログのダウンロードがサポートされています。 詳細については、「ログのダウンロード」をご参照ください。

      • settingアイコンをクリックし、タグ設定列設定JSON設定、およびイベント設定を設定します。

  • グラフ

    [グラフ] タブでクエリと分析の結果を表示できます。 グラフタブでグラフを表示するには、検索ボックスに標準のSQL-92構文を使用する分析ステートメントを入力する必要があります。

    • グラフの種類を変更する: ビジネス要件に基づいてグラフの種類を選択し、クエリと分析の結果を表示します。 詳細については、「グラフ設定」をご参照ください。

    • グラフのプレビュー: グラフの種類を変更した後、グラフをプレビューします。

      [新しいダッシュボードに追加] をクリックして、現在のグラフをダッシュボードに追加します。 [ログのダウンロード] をクリックして、ログをコンピューターにダウンロードします。 現在のページにログをダウンロードCloud Shellですべてのログをダウンロードコマンドラインツールですべてのログをダウンロードがサポートされています。 詳細については、「ダウンロードログ」をご参照ください。

    • チャートの設定を変更する

      API 操作

      説明

      チャートのグローバル設定を構成します。 たとえば、配色を選択して、グラフのすべてのクエリステートメントの結果を表示できます。

      単一のクエリステートメントの結果または結果の単一列のデータに対して、パーソナライズされた表示設定を構成します。 たとえば、クエリ文を選択してから配色を選択すると、クエリ文の結果に基づいてグラフが生成され、選択した配色が使用されます。

      インタラクション発生の設定

      クエリステートメントの結果、または結果内の1列のデータに対してインタラクションのオカレンスを構成して、きめ細かいディメンションのデータを分析できます。

  • LogReduceタブ

    [LogReduce] タブで、[LogReduceの有効化] をクリックして、同様のログをクラスター化します。 詳細は、「LogReduce」をご参照ください。

アラートルールの作成

クエリと分析の結果に基づいてアラートルールを作成できます。 アラートルールを作成した後、Log Serviceは関連するクエリと分析結果を定期的にチェックします。 クエリと分析の結果が、アラートルールで指定したトリガー条件を満たしている場合、Log Serviceはアラート通知を送信します。 このようにして、サービスステータスがリアルタイムで監視されます。

クエリと分析ページで、[アラートとして保存] > [新しいアラート] を選択して、クエリと分析の結果に基づいてアラートを設定できます。 詳細については、「アラートルールの設定」をご参照ください。

クエリと分析の例

  • 異なるWAF保護機能によってブロックされたリクエストの数を15分ごとに照会します。 結果には、攻撃時間 (time) 、保護ルールエンジン (wafmodule) によってブロックされたリクエストの数、IPアドレスブラックリストとカスタム保護ポリシー (aclmodule) によってブロックされたリクエスト、およびHTTPフラッド保護とカスタム保護ポリシー (httpfloodmodule) によってブロックされたリクエストが含まれます。

    * |
    選択
      time_series(__time __, '15m', '% H:% i', '0') as time,
      COUNT_if(final_plugin = 'waf') を "wafmodule" として、
      COUNT_if(final_plugin = 'acl') を "aclmodule" として、
      「httpfloodmodule」としてのCOUNT_if(final_plugin = 'cc')
    によるグループ化
      時間
    による注文
      時間 
  • 保護アクションを実行する保護機能 (final_plugin) の内訳を照会します。 結果には、保護機能がトリガーされた回数 (回数) 、要求されたドメイン名 (ホスト) 、および保護機能 (final_plugin) が含まれます。

    * |
    選択
      回数としてカウント (*) 、
      ホスト、
      final_plugin
    によるグループ化
      ホスト、
      final_plugin
    による注文
      回desc 
  • 1秒あたりのクエリ (QPS) を15分ごとに照会します。 結果には、クエリ時間 (time) とQPS (QPS) が含まれます。

    * |
    選択
      time_series(__time __, '15m', '% H:% i', '0') as time,
      カウント (*) / 900としてQPS
    によるグループ化
      時間
    による注文
      時間 
  • 最もHTTPフラッド攻撃を受けるドメイン名を照会します。 結果には、HTTPフラッド攻撃がブロックされた回数 (回数) と要求されたドメイン名 (ホスト) が含まれます。

    *
    acl_action: ブロック |
    選択
      回数としてカウント (*) 、
      ホスト
    によるグループ化
      ホスト
    による注文
      回desc 
  • リクエストに関するログの詳細を1秒ごとに照会します。 結果には、リクエスト時間 (time) 、リクエストされたドメイン名 (host) 、リクエストパス (request_path) 、リクエストメソッド (request_method) 、WAFが応答するHTTPステータスコード (status) 、オリジンサーバーが応答するHTTPステータスコード (upstream_status) 、およびクエリ文字列 (querystring) が含まれます。

    * |
    選択
      date_format(date_trunc('second', __time__), '% H:% i:% s') を時間として、
      ホスト、
      request_path,
      request_method,
      ステータス、
      upstream_status,
      querystring
    リミット
      10 
  • your_domain_name Webサイトに対する最新の10件の攻撃を照会します。 結果には、攻撃時間 (time) 、クライアントの送信元IPアドレス (real_client_ip) 、およびクライアントタイプ (http_user_agent) が含まれます。

    matched_host: your_domain_name
    およびfinal_action: ブロック |
    選択
      時間,
      real_client_ip、
      http_user_agent
    による注文
      タイムdesc
    リミット
      10 
  • your_domain_name Webサイトへの攻撃がWAFによってブロックされてから経過した日数 (days_passed) を照会します。 days_passedの値は小数点以下1桁に丸められます。

    matched_host: your_domain_name
    およびfinal_action: ブロック |
    選択
      時間,
      ラウンド (((to_unixtime(now()))-__time__) / 86400、1) を "days_passed" として、
      real_client_ip、
      http_user_agent
    による注文
      タイムdesc
    リミット
      10 
  • your_domain_name Webサイトでの攻撃数の傾向を日単位で照会します。

    matched_host: your_domain_name
    およびfinal_action: ブロック |
    選択
      date_trunc('day', __time__) as dt,
      PVとしてカウント (1)
    によるグループ化
      dt
    による注文
      date_trunc関数は、攻撃が発生した時刻を日ごとにグループ化するために使用されます。

    関数の詳細については、「日付と時刻の関数」をご参照ください。

  • your_domain_name Webサイトに対して攻撃が開始された国の内訳を照会します。

    matched_host: your_domain_name
    およびfinal_action: ブロック |
    選択
      ip_to_country (
        if(real_client_ip = '-', remote_addr, real_client_ip)
      ) 国として、
      「攻撃の数」としてカウント (1)
    によるグループ化
      country 

    WAFログのreal_client_ipフィールドは、クライアントの送信元IPアドレスを示します。 プロキシサーバーが使用されているか、リクエストヘッダーのIPフィールドが無効な場合、クライアントの送信元IPアドレスを取得できません。 この場合、real_client_ipフィールドの値はハイフン-で表示されます。 remote_addrフィールドの値をクライアントの送信元IPアドレスとして使用できます。 remote_addrフィールドは、WAFへの接続に使用されるIPアドレスを示します。

  • 攻撃が開始された州の内訳をyour_domain_name Webサイトに照会します。

    matched_host: your_domain_name
    およびfinal_action: ブロック |
    選択
      ip_to_province (
        if(real_client_ip = '-', remote_addr, real_client_ip)
      ) 省として、
      「攻撃の数」としてカウント (1)
    によるグループ化
      province 

    ip_to_province関数は、クライアントの発信IPアドレスが配置されている省に関する情報を取得するために使用されます。 関数の詳細については、「IP関数」をご参照ください。