カスタム AWS WAF ルールを作成しましたが、期待どおりに動作しません。この問題を解決するにはどうすればよいですか。
解決策
**注: ** AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行時にエラーが発生する場合は、『AWS CLI のエラーのトラブルシューティング』を参照してください。また、最新の AWS CLI バージョンを使用していることを確認してください。
カスタム AWS WAF ルールが期待どおりに機能しない場合は、次の設定を確認してください。
ルールの優先度
カスタムルールが正しい優先度で設定されていることを確認してください。AWS WAF はルールを数値順に評価し、Allow、Block、または CAPTCHA の終了アクションを持つ最初のルールで停止します。カスタムルールの数値優先度が終了アクションを持つルールよりも高い場合、AWS WAF はカスタムルールに対してリクエストを評価しません。詳細については、『がルールとルールグループのアクション AWS WAF を処理する方法』を参照してください。
どのルールがリクエストを削除したかを確認するには、WAF ログまたはサンプル化されたリクエストを確認してください。ログエントリの terminatingRuleId フィールドを確認して、一致して以降の評価を停止した正確なルールを特定してください。詳細については、『AWS WAF がリクエストをブロックしたり、403 Forbidden エラーの応答を返したりする理由を知りたいです。』の「AWS WAF ログを使用する」セクションを参照してください。
たとえば、AWS マネージドルールのルールグループがブロックしたリクエストを許可するために、カスタム Allow ルールを作成したとします。AWS マネージドルールのルールグループよりも前に評価されるように、カスタムルールの優先度の数値を下げる必要があります。
AWS WAF コンソールを使用してルールの優先度を更新できます。UpdateWebACL または UpdateRuleGroup API コールを使用してルールの優先度を更新することもできます。あるいは、update-web-acl または update-rule-group AWS CLI コマンドを実行できます。
テキスト変換
カスタムルールでテキスト変換を使用する場合は、ユースケースに合わせて正しく実装されていることを確認してください。
AWS WAF は変換を適用し、リクエストを検査します。複数の変換を指定した場合、AWS WAF はリストされた順序で変換を処理します。カスタムルールで複数の変換を使用する場合は、変換の順序を確認する必要があります。詳細については、『でのテキスト変換の使用 AWS WAF』を参照してください。
例えば、クエリ内の文字列に対して Base64 デコードと URL デコードを実行するカスタムルールを作成したとします。AWS WAF はまず、インバウンドリクエストのクエリ文字列の Base64 デコードを実行します。次に、AWS WAF は結果の文字列に対して URL デコードを実行します。最後に、AWS WAF は結果の文字列を、カスタムルール設定で指定した文字列と照合します。
ブールロジック
ロジックルールステートメントを使用する場合は、ブールロジックを使用して、カスタムルール内の AND、OR、または NOT のロジックが正しいことを検証してください。
たとえば、/test URI を持ち、ソース IP アドレスが IP セット X 内にあるリクエストに一致するカスタムルールを作成したとします。
リクエスト例 1 には /test URI (ブール値 1) があります。リクエストの IP アドレスは IP セット X (ブール値 0) に含まれていません。ブール値 1 と ブール値 0 の結果はブール値 0 になるため、リクエストはカスタムルールと一致しません。
リクエスト例 2 には /test URI (ブール値 1) があります。リクエストの IP アドレスは IP セット X (ブール値 1) にあります。ブール値 1 とブール値 1 の結果はブール値 1 になるため、リクエストはカスタムルールと一致します。
リクエスト例 3 には /test URI (ブール値 0) がありません。リクエストの IP アドレスは IP セット X (ブール値 0) に含まれていません。ブール値 0 とブール値 0 の結果はブール値 0 になるため、リクエストはカスタムルールと一致しません。
カスタムルールのアクションが Block の場合、ルールはリクエスト例 2 のみをブロックします。
関連情報
ルールの優先度を設定する