Fastly WAF のログ機能

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

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

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

OWASP ルール

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

waf_debug_log

waf_debug_log サブルーチンでは、単一のリクエストに対して発生した各 OWASP ルールを、それぞれ個別のログとして記録することができます。コントロールパネルまたは API を利用して、ログの配置パラメーターを waf_debug に更新できます。

Fastly コントロールパネルの利用方法

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

  1. Fastly コントロールパネルにログインし。
  2. All services ページから適切なサービスを選択します。検索ボックスを使用すると、ID、名称、ドメインでの検索が行えます。
  3. Edit configuration ボタンをクリックし、オプションを選択してアクティブバージョンをクローンします。設定画面が開きます。
  4. Logging リンクをクリックします。ログエンドポイント設定画面が表示されます。
  5. 編集するには、ログエンドポイントの名前をクリックし、編集ページを開きます。
  6. Advanced options (詳細オプション) リンクをクリックします。
  7. Placement (配置) セクションで、waf_debug (waf_debug_log) 設定を選択します。

    ログの配置設定

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

API での設定

ターミナルアプリケーションで次の cURL コマンドを実行することで、ログの配置パラメーターを 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は、コントロールパネルのみでログ形式を受け付けます。
  • vcl_missvcl_passwaf_debug_log が呼び出されます。ログ形式にはリクエストヘッダー情報および WAF 変数を含めることが出来ます。レスポンスヘッダーの情報を含めるとエラーメッセージが表示されます。
  • <logging_integration> は、リモートログ API にあります。

複数の OWASP ルールで 1 つのリクエストを追跡するための 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 固有の変数を利用する

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 に設定されます。ブロックされた場合は 1(true)、ブロックされていない場合は 0(false) とログファイルに表示されます。
waf.logged リクエストがルールにマッチし、特定のルールまたは OWASP しきい値がログに設定された場合、true に設定されます。アクティブ (ブロック) モードでは、 waf.blockedtrueの場合にも true に設定されます。ログには 1 (true) または 0 (false) と表示されます。
waf.failures リクエストの評価に失敗したため、リクエストが WAF ルールセットをスキップした場合、ログには 1 (true) または 0 (false) と表示されます。
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 ルールセットに該当しない場合を示します。1 (true) または 0 (false) としてログに表示されます。 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