AWS WAF でブロックされたリクエストを確認する方法を教えてください

AWS WAF でブロックされたリクエストは、ALB のアクセスログで特定できます。
2022.11.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

ALB(Application Load Balancer)に AWS WAF の WebACL を適用しています。 WAF によってブロックされたリクエストを調査したいのですが、どのようにすれば確認できますか?

どう対応すればいいの?

ALB のアクセスログを確認しましょう。
以下の値が記録されているリクエストは、WAF によりブロックされたと判断できます。

① ~ ③ それぞれの意味について解説します。

① "elb_status_code" が "403"
WAF でブロックされていた場合、ALB のステータスコードは 403(Forbidden)になります。

② "target_status_code" が "-"
WAF でブロックされた場合はターゲット(サーバー)へリクエストが到達しないため、ターゲットのステータスコードは "-" と記録されます。

③ "actions_executed" が "waf"
リクエストが WAF に転送されたものの、通過しなかったことを示しています。
(もし WAF を通過している場合は "waf,forward" と記録されます)

AWS WAF によりブロックされたログの例:

どのリクエストが WAF によってブロックされたのか、一目で分かりますね!

なお、ここで確認できるのは「WAF によってブロックされたか否か」のみとなります。
具体的に「リクエスト内のどの部分が、どの WAF ルールに抵触したか」については、Web ACL 側のログを有効化して確認する必要があります。

この情報がどなたかのお役に立てば幸いです!

参考資料

Application Load Balancer のアクセスログ
ウェブ ACL トラフィックのログ記録 - AWS WAF