AWS WAF ルールグループ内の特定のルールによってブロックされたリクエストに対して、カスタム応答を設定したいです。
解決策
Count ルールアクションで、カスタム応答を設定する AWS WAF マネージドルールを設定します。次に、マネージドルールグループにカスタムルールを作成し、カスタム応答を生成します。リクエストがマネージドルールが生成するラベルと一致する場合、応答が送信されます。
次の例では、コアルールセット (CRS) マネージドルールグループ内の AWS WAF マネージドルール CrossSiteScripting_QueryArguments に対し、カスタム応答を設定します。
ルールアクションで使用するカスタム応答メッセージを作成する
次の手順を実行します。
- お使いの AWS リージョンで AWS WAF コンソールを開きます。
- ナビゲーションペインで [Web ACL] を選択し、ウェブアクセスコントロールリスト (ウェブ ACL) を選択します。
- [カスタム応答本文] を選択し、[カスタム応答本文の作成] を選択します。
- [応答本文オブジェクト名] に、名前を入力します。
- [コンテンツタイプ] で [プレーンテキスト] を選択します。
注: 応答本文は、JSON、HTML、またはプレーンテキストにすることができます。
- [応答本文] に応答メッセージを入力し、[保存] を選択します。
注: Amazon CloudFront と Amazon API Gateway も、カスタム応答をサポートしています。ただし、Block アクションに対する AWS WAF カスタム応答は、保護されたリソースで定義されている応答仕様よりも優先されます。
カスタムルールを作成してカスタム応答を送信する
次の手順を実行します。
- お使いのリージョンで AWS WAF コンソールを開きます。
- ナビゲーションペインで [ウェブ ACL] を選択し、お使いのウェブ ACL を選択します。
- [ルール] タブを選択し、[ルールを追加] を選択します。
- [独自のルールとグループを追加] を選択します。
- [ルールタイプ] で [ルールビルダー] を選択します。
- 名前 に、ルール名を入力します。
- [タイプ] で [正規ルール] を選択します。
- [リクエストの条件] ドロップダウンリストを選択し、[ステートメントに一致] を選択します。
- [検査] ドロップダウンリストを選択し、[ラベルあり] を選択します。
- [マッチスコープ] で [ラベル] を選択します。
- [マッチキー] に、ルールラベルを入力します。(awswaf:managed:aws:core-rule-set:CrossSiteScripting_QueryArguments など。)
- [アクション] で、カスタムルールに対し [ブロック] を選択します。
- [カスタム応答] を展開し、[有効] を選択します。
- [応答コード] に、応答コード (307 など) を入力します。
- (オプション) [応答ヘッダー] で、[新しいカスタムヘッダーを追加] を選択します。
- [キー] に、ヘッダー名を入力します。
- [値] に、ヘッダー値を入力します。
- [応答本文の指定方法を選択 (オプション)] で、ドロップダウンリストを選択します。
- カスタム応答本文を選択し、[ルールを追加] を選択します。
注: カスタム応答でサポートされる HTTP ステータスコードのリストについては、「カスタム応答でサポートされるステータスコード」を参照してください。
関連情報
複雑なカスタム AWS WAF JSON ルールを作成する方法を教えてください
AWS マネージドルール用のルールグループリスト
AWS WAF カスタムルールが機能しない理由を知りたいです
AWS WAF でリクエストと応答をカスタマイズする