- English
- 日本語
WAF カスタムエラーページの作成 (2020年)
最終更新日 2020-07-13
重要
発表された通り、2023年4月30日付けで Fastly WAF (WAF Legacy および WAF 2020) が正式に廃止となります。Fastly Next-Gen WAF では同様の機能を提供しています。疑わしい異常な Web トラフィックをモニタリングし、指定したアプリケーションやオリジンサーバーに対する攻撃からリアルタイムで保護します。
Fastly WAF のレスポンスオブジェクトによってブロックされたユーザーに表示されるカスタム HTML エラーページを作成することができます。レスポンスオブジェクトの属性には、HTTP ステータスコード、HTTP レスポンステキスト、コンテンツタイプ、および返されるコンテンツが含まれます。
この例では、以下の手順をご紹介します。
- 動的 VCL スニペットを使用して、カスタム
req.http.x-request-id
HTTP ヘッダーを作成する方法。 - リクエストと 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 エラーページのシンセティックレスポンスを作成するには、次の手順に従ってください。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
- Content をクリックします。
Set up advanced response をクリックします。
以下の要領で 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>
Create をクリックします。新しいレスポンスがレスポンスリストに表示されます。
- Activate をクリックして設定への変更をデプロイします。
その他の注意点
- トランザクション ID の構成は変更可能ですが、指定された期間内 (1日など) に複数のリクエストに同じトランザクション ID 値が与えられる確率を最小限に抑える必要があります。
- 今回は例を簡略化するために VCL スニペットを使用しましたが、必ずしもカスタム WAF エラーページの作成に必要ではありません。代わりに、カスタム VCL を使用してトランザクション ID を作成することも可能です。
- 同じリクエストに対して生成された複数のメッセージが関連付けられるように、リクエストと WAF のログ形式にトランザクション ID を含めると便利です。
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。