前提
AWS WAF でCOUNT設定したManagedRuleに引っかかったログの内容を取得して「このManagedRuleのWAFをBLOCK設定にしていいか?」を判断したいという話になった。
AWS WAFでBLOCKをする場合は、事前にCOUNTでそのルールを適用してもいいかログ取得して確認するべき。
もし、正常なリクエストをブロックしてしまうと、サービスそのものが停止されてしまう可能性がある。
クエリ
以下のクエリの AWS#AWSManagedRulesBotControlRuleSet の部分を調査したい場合は、そのmanagedruleでcount引っかかったところを取得するクエリを使えばログ取得ができる。
また、webaclIdは各環境によって変更すること。
fields httpRequest.headers.0.value, httpRequest.uri, @message, @timestamp
| filter webaclId = "{WEBACLのIdを入力する}"
| filter @message like /COUNT/
| filter @message like /"ruleGroupId":\s*"AWS#AWSManagedRulesBotControlRuleSet",\s*"terminatingRule":\s*null,\s*"nonTerminatingMatchingRules":\s*\[\s*\{.*"ruleId":/
| sort @timestamp desc
| limit 10000
解説
すまん。解説は後で書く。
とりあえず、ログでそれに当てはまる内容のものを出すという話。
もはや正規表現の解説になってしまうので、長くなりそう。