AWS WAFのCustom Responseの機能と注意点

記事タイトルとURLをコピーする

杉村です。 AWS WAF で Custom Response が使えるようになりました。 WAF がリクエストをブロックしたときに、任意のレスポンスを返すように設定できます。
当機能に関する注意点や設定方法などを記載していきます。

関連記事: AWS WAF adds support for Custom Responses aws.amazon.com

1. 今までの挙動とこれからの挙動

これまでは AWS WAF がリクエストをブロックした際のレスポンスは画面に無慈悲な "403 Forbidden" が表示されるという簡素なもの。以下のスクリーンショットは従来のレスポンスです。(今回、クエリ文字列に "block-me" という文字列が入っているとブロックするルールを作成しました)

f:id:swx-yuma-sugimura:20210330121630p:plain
ブロック時のレスポンス(従来)

Custom Response 機能では、ブロックされた際に任意のレスポンスを返すように設定できます。

以下の画像では、設定したカスタムレスポンスが返されています。レスポンスコードも任意のものが返ってきています。

f:id:swx-yuma-sugimura:20210330123226p:plain
カスタムレスポンスの動作確認

2. 注意点

2-1. できないこと

注意点が2点あります。(2021/03/31時点の情報です)

  1. Managed Rule に対しては Custom Response を設定できない
  2. 全ての Rule に共通する設定として Custom Response を設定できない

1は、読んで字のごとくです。 AWS WAF ユーザの多くは Managed Rule を利用していると思いますが、 Managed Rule に対しては Custom Response を設定できません。つまり、現在のところ Custom Response は自前で記述したルールに対してのみ利用できます。

2は言い換えると、「 Custom Response はルールごとに一つ一つ設定する必要がある。共通設定はできない」ということです。一例として AWS WAF を便利に関するための製品である WafCharm などを利用している際に問題になります。 WafCharm ではアクセス解析の内容に応じて AWS WAF の Web ACL に、自動的にユーザー定義ルールを追加していきますが、現在(2021/03/31時点)のところこの自動追加されたルールに Custom Response を自動設定することはできません。ルールが追加されたことを何らかの方法で検知して、 Custom Response を設定するという対応が必要になります。
WafCharm を利用していなくても、例えば10個のユーザー定義ルールを利用しているなら、10個のルールにそれぞれ Custom Response を設定してあげる必要があります。

上記の注意点を理解したうえで、本機能が使えるかどうか判断しなくてはいけません。

2-2. できること

以下のドキュメントにあるように Custom Response は「個々のユーザー定義ルールでブロックした時のレスポンス」「 Web ACL のデフォルトアクションでブロックしたときのレスポンス」として設定できます。

Customizing web requests and responses in AWS WAF - AWS WAF, AWS Firewall Manager, and AWS Shield Advanced

You can specify a custom request or response when you define the following action settings:
- Rule action. For information, see AWS WAF rule action.
- Default action for a web ACL. For information, see Deciding on the default action for a Web ACL.

3. カスタムレスポンスの設定方法

3-1. カスタムレスポンスを作成する

AWS WAF の Web ACL 設定画面に Custom response bodies というタブが増えています。
こちらをクリックしボタン "Create custom response body" を押下します。

f:id:swx-yuma-sugimura:20210330121810p:plain
Web ACL編集画面

カスタムレスポンスは JSON形式 / HTML形式 / プレーンテキスト形式 から選べます。

f:id:swx-yuma-sugimura:20210330122713p:plain
カスタムレスポンス作成画面

3-2. 作成したカスタムレスポンスをルールに紐づける

Web ACL の Rules タブからカスタムレスポンスを編集したいルールを選択して Edit します。 Action を定義するセクションにて、カスタムレスポンスを有効化することができます。先ほど作成したカスタムレスポンスを選択します。なおレスポンスコードも任意のものを選択可能です。

f:id:swx-yuma-sugimura:20210330123006p:plain
Rule編集画面

3-3. 動作確認

設定したカスタムレスポンスが返されています。レスポンスコードも任意のものが返ってきています。

f:id:swx-yuma-sugimura:20210330123226p:plain
カスタムレスポンスの動作確認

杉村 勇馬 (記事一覧)

サーバーワークス → 株式会社G-gen 執行役員CTO

2021 Japan APN Ambassadors / 2021 APN All AWS Certifications Engineers

マルチAWSアカウント管理運用やネットワーク関係のAWSサービスに関するブログ記事を過去に執筆。

2021年09月から株式会社G-genに出向、Google Cloud(GCP)が専門に。G-genでもGoogle Cloud (GCP) の技術ブログを執筆中。