AWS WAF のマネージドルールにカスタムレスポンスを適用する方法を教えてください。

2023.05.16

困っていた内容

AWS WAF のマネージドルールグループを運用しています。受信したリクエストをブロックすると、デフォルトでレスポンスコードを返送しますが、このデフォルトで表示されるページを任意の表示に変更したい場合、どのような手順で設定すれば良いか教えてください。

具体的な解決方法

デフォルトで表示されるページを任意の表示に変更したい場合、カスタムレスポンス設定を行う必要があります。 WAF のマネージドルールグループを使用されている場合、ルールの編集画面からカスタムレスポンス設定が行えないため、 以下の手順でカスタムレスポンスを適用する必要があります。

  1. Custom response bodies を作成する
  2. マネージドルールグループのアクションを Count に設定する
  3. リクエストをブロックし、カスタムレスポンスをクライアントに送り返すルールを作成する

1. Custom response bodies を作成する

まず初めに、カスタムレスポンスが送信されるときに表示されるメッセージを作成します。

  1. Web ACL ページに移動し、Custom response bodies タブを選択します。
  2. Create custom response body を選択します。
  3. Response body object name にレスポンスの名前を入力します。
  4. レスポンスボディの Content type を選択します。
  5. Response body に、クライアントに送り返すレスポンスを入力します。

2. マネージドルールグループのアクションを Count に設定する

カスタムレスポンスを送信するために使用するルールはカウントモードである必要があるため、マネージドルールグループ内のカスタムレスポンスを送信したいルールのアクションを Count に変更します。

  1. Web ACL ページに移動し、Rules セクションにて、Edit アイコンをクリックします。
  2. Rules セクションにて、カスタムレスポンスを送信したいルールのアクションを Count に変更します。

3. リクエストをブロックし、カスタムレスポンスをクライアントに送り返すルールを作成する

マネージドルールにて Count 処理されたリクエストを、新規にルールを作成し、ラベル機能を用いてカスタムレスポンス処理させる設定を行います。

  1. Web ACL ページに移動し、「Add rules」をクリックし、「Add my own rules and rule groups」を選択します。
  2. レスポンスを送信したいルールが1つの場合は、If a request matches the statement を選択します。
  3. Statement セクションの Inspect を Has a label に設定します。
  4. Match scope の選択を Label に設定し、Match key に、カスタムレスポンスを送信したいマネージドルールを選択します。
  5. Then の Action セクションにて、Block を選択します。
  6. カスタムレスポンスセクションを展開し、Enable を選択します。
  7. カスタムレスポンスコードにてに、クライアントに送り返すカスタム HTTP ステータス コードを入力します。
  8. Choose how you would like to specify the response body にて 1.で設定した Custom response bodies を選択します。

以上の手順にて、AWS WAF のマネージドルールグループに、カスタムレスポンスを適用することが可能です。

参考資料