Fastly WAF のログ (旧バージョン)

悪意のあるトラフィックをモニタリング、特定するための様々な 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. All services ページから適切なサービスを選択します。検索ボックスを使用すると、ID、名称、ドメインでの検索が行えます。
  3. Edit configuration ボタンをクリックし、オプションを選択してアクティブバージョンをクローンします。設定画面が開きます。
  4. Logging リンクをクリックします。Logging endpoints ページが表示されます。
  5. 編集するログエンドポイントの名前をクリックすると、Edit this endpoint ページが表示されます。
  6. Advanced options リンクをクリックします。
  7. Placement セクションで、waf_debug (waf_debug_log) 設定を選択します。

    the logging placement setting

  8. Update ボタンをクリックします。
  9. Activate ボタンをクリックしてサービスをデプロイします。

API を使用する

ターミナルアプリケーションで以下の cURL コマンドを実行することで、 ログの placement パラメーターを waf_debug に設定することもできます。

1
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> は、remote logging API にあるリストから設定可能です。

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

1
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 変数を利用する

悪意のあるトラフィックをモニタリング、特定するための様々な 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 に設定されます。ブロックされた場合は 1 (true)、ブロックされていない場合は 0 (false) とログに記録されます。
waf.logged リクエストがルールにマッチし、ログに設定されている特定のルールに該当するか、もしくはログに設定されている OWASP ルールのしきい値を超えた場合に true に設定されます。アクティブ(ブロック)モードでは、 waf.blockedtrueの場合にも 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
Back to Top