WAF カスタムエラーページの作成 (2020年)

重要

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

Fastly WAF のレスポンスオブジェクトによってブロックされたユーザーに表示されるカスタム HTML エラーページを作成することができます。レスポンスオブジェクトの属性には、HTTP ステータスコード、HTTP レスポンステキスト、コンテンツタイプ、および返されるコンテンツが含まれます。

この例では、以下の手順をご紹介します。

  • 動的 VCL スニペットを使用して、カスタム req.http.x-request-idHTTP ヘッダーを作成する方法。
  • リクエストと WAF のログの両方で使用できるように、そのヘッダーをグローバル変数として使用し、リクエストのトランザクション ID として保存する方法。
  • シンセティックレスポンスを作成してユーザーに HTML レスポンスを表示する方法。

エラーページには、ユーザーがサポートチームに連絡する場合などに便利なトランザクション ID が表示されます。

動的 VCL スニペットの作成

トランザクション ID 用の動的 VCL スニペットを作成するには、ターミナルアプリケーションで次の API コールを実行します。

$ curl -X POST -s https://api.fastly.com/service/<Service ID>/version/<Editable Version Number>/snippet -H "Fastly-Key:FASTLY_API_TOKEN" -H 'Content-Type: application/x-www-form-urlencoded' --data $'name=my_dynamic_snippet_name&type=recv&dynamic=1&content=if (!req.http.x-request-id) {\n set req.http.x-request-id = digest.hash_sha256(now randomstr(64) req.http.host req.url req.http.Fastly-Client-IP server.identity);\n}'

シンセティックレスポンスの作成

カスタム HTML エラーページのシンセティックレスポンスを作成するには、次の手順に従ってください。

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

    Create a synthetic response ページ

  6. 以下の要領で Create a synthetic response ページの各フィールドに入力します。

    • Name フィールドに WAF_Response と入力します。

    • Status メニューから 403 Forbidden を選択します。

    • MIME Type フィールドでは、レスポンスの Content-Type (text/html など) を指定します。

    • Response フィールドに、次の HTML を入力します。このレスポンスには req.http.x-request-id の値が表示されます。

      1<html>
      2 <head>
      3 <title>403 Forbidden</title>
      4 </head>
      5 <body>
      6 <p>The requested URL was rejected.</p>
      7 <p>For additional information, please contact support and provide this reference ID:</p>
      8 <p>"} req.http.x-request-id {"</p>
      9 <p><button onclick='history.back();'>Go Back</button></p>
      10 </body>
      11</html>
  7. Create をクリックします。新しいレスポンスがレスポンスリストに表示されます。

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

その他の注意点

  • トランザクション ID の構成は変更可能ですが、指定された期間内 (1日など) に複数のリクエストに同じトランザクション ID 値が与えられる確率を最小限に抑える必要があります。
  • 今回は例を簡略化するために VCL スニペットを使用しましたが、必ずしもカスタム WAF エラーページの作成に必要ではありません。代わりに、カスタム VCL を使用してトランザクション ID を作成することも可能です。
  • 同じリクエストに対して生成された複数のメッセージが関連付けられるように、リクエストと WAF のログ形式にトランザクション ID を含めると便利です。

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

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