Fastly WAF のログ機能

重要

発表された通り、2023年4月30日付けで Fastly WAF (WAF Legacy および WAF 2020) が正式に廃止となります。Fastly Next-Gen WAF では同様の機能を提供しています。疑わしい異常な Web トラフィックをモニタリングし、指定したアプリケーションやオリジンサーバーに対する攻撃からリアルタイムで保護します。

Fastly では、悪意のあるトラフィックを監視・特定するための様々な WAF 関連のログ変数を利用することができます。これらの変数によって、リクエストに対して実行された Fastly WAF の動作に関する詳細を確認できます。

ログエンドポイントの設定

悪意のあるアクティビティのリクエストをモニタリングするため、リモートログストリーミングを設定して WAF 変数をログに取得します。既存のログエンドポイント、または Fastly WAF 用の新規ログエンドポイントを作成して使用することも可能です。ログのデータを使用して WAF のイベントをモニタリングすることができます。

OWASP ルール

ひとつのリクエストが複数の OWASP ルールに該当する場合もあります。デフォルトでは、ログは vcl_deliver または vcl_log で記録されます。vcl_deliver または vcl_log でログが記録される場合、リクエストが複数の OWASP ルールに該当していても、異常スコアの累計と最後に該当した WAF ルールの情報のみが表示されます。

waf_debug_log

waf_debug_log サブルーチンでは、1つのリクエストに対してトリガーされた各 OWASP ルールについて個別にログを取得できます。コントロールパネルまたは API を使用して、ログの placement パラメーターを waf_debug に設定します。

コントロールパネルを使用する

以下の手順に従って、ログエンドポイントの placement パラメーターを waf_debug に設定します。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. Logging をクリックします。

  5. ログエンドポイントの名前をクリックして編集します。

  6. Advanced options をクリックします。

  7. Placement セクションで、waf_debug (waf_debug_log) を選択します。

    ログの配置設定

  8. Update をクリックします。

  9. Activate をクリックして設定への変更をデプロイします。

API を利用する

以下の curl コマンドを実行することで、ログの placement パラメーターを waf_debug に設定することもできます。

$ curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -H 'Content-Type: application/json' 'https://api.fastly.com/service/<your Fastly service ID>/version/<version_id>/logging/<logging_integration>/<logging_name>' --data-binary '{"placement":"waf_debug"}'
  • waf_debug_log のログ形式はコントロールパネルからのみ設定可能です。
  • waf_debug_logvcl_missvcl_pass でコールされます。ログ形式にリクエストヘッダー情報と WAF 変数を含むことができます。レスポンスヘッダーの情報を含むとエラーになります。
  • <logging_integration> は、リモートログ API のリストから設定可能です。

複数の OWASP ルールに該当するリクエストをトラックするために request_id ヘッダーを設定することを推奨します。

set req.http.x-request-id = digest.hash_sha256(now randomstr(64) req.http.host req.url req.http.Fastly-Client-IP server.identity);

WAF 変数を利用する

Fastly では、悪意のあるトラフィックを監視・特定するための様々な WAF 関連のログ変数を利用することができます。これらの変数を通じて、リクエストに対して処理された以下のような Fastly WAF の動作を確認することができます。

  • Fastly WAF がリクエストを検査したかどうか。 Fastly WAF はオリジンサーバーへ転送されるリクエストのみを検査の対象とします(キャッシュされていないコンテンツに対する MISS または PASS リクエストなど)。
  • リクエストがルールに該当したかどうか。 Fastly WAF はリクエストを検査する際、設定されているルールセットのいずれかのルールにリクエストが該当しているかどうかチェックします。
  • 該当したルールの重要度。 リクエストがルールに該当した場合、そのルールの重要度がログに示されます。
  • リクエストに対して行った処理 (該当する場合) 。 リクエストがルールまたは OWASP ルールのしきい値に達した場合、Fastly WAF が行った処理(ログに記録、またはブロック)がログに示されます。

以下の変数を利用して Fastly WAF のログイベントを確認できます。

変数説明
waf.executedリクエストが WAF に処理されたかどうかを示すレスポンスヘッダー。処理された場合は 1 (true)、処理されていない場合は 0 (false) と記録されます。
waf.blockedリクエストがルールにマッチし、ブロック設定の特定のルールに該当する、またはブロック設定にされている OWASP のしきい値を超えた場合、true に設定されます。ブロックされた場合は (true)、ブロックされていない場合は 1``0 (false) とログに記録されます。
waf.loggedリクエストがルールにマッチし、ログ設定の特定のルールに該当する、またはログ設定にされている OWASP ルールのしきい値を超えた場合に true に設定されます。アクティブ (ブロック) モードでは、truewaf.blocked の場合にも true に設定されます。ログに true の場合は 1、false の場合は 0 と表示されます。
waf.failuresリクエストが WAF ルールセットによる評価に失敗し、リクエストが WAF の処理をスキップした場合、true と記録されます。ログに true の場合は 1、false の場合は 0 と表示されます。
waf.logdataこのルールに該当する原因となったリクエストの具体的な箇所が記録されます。そのため、ルールによって記録される内容は異なります。
waf.messageルールに該当するための一般的な条件。例えば SLR: Arbitrary File Upload in Wordpress Gravity Forms pluginなど。
waf.rule_idルールの ID。
waf.severityルールの重要度。0 が最も高い重要度、7 が最も低い重要度を表します。99 は、リクエストがどのルールにも該当しなかったなど、重要度が適用されないことを示します。
waf.anomaly_score複数の OWASP ルールに該当した場合、スコアの累積スコアが記録されます。OWASP カテゴリーのスコア変数を確認します。
waf.passedリクエストが WAF ルールセットのどのルールにも該当しなかったことを示します。true の場合は 1、false の場合は 0 とログに記録されます。waf.passedvcl_delivervcl_log で読み取ることができます。waf_debug_log で読み込むことはできません。この値は WAF ルールセットとの照合が完了した後に設定されます。

OWASP カテゴリースコア変数

ある特定のリクエストが OWASP のルールで処理される際、異なる攻撃カテゴリーの複数のルール ID に該当する可能性があります。OWASP カテゴリースコア変数は、リクエストが該当したカテゴリーごとのスコアを記録します。この情報は攻撃カテゴリーごとの最低値、平均値、最大値を把握するために利用され、それぞれのカテゴリーごとに異なるしきい値を設定することが可能です。アクティブ(ブロック)モードに設定されている場合、リクエストがカテゴリーごとのしきい値を超えた場合にリクエストがブロックされます。

  • waf.sql_injection_score
  • waf.rfi_score
  • waf.lfi_score
  • waf.rce_score
  • waf.php_injection_score
  • waf.session_fixation_score
  • waf.http_violation_score
  • waf.xss_score

翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。