WAF維持管理の助けになるCloudWatch Dashboard for AWS WAFの紹介
こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。
AWS WAF はご利用でしょうか?
公開 Web サービスを AWS 上で展開するケースではほぼ必須といっても過言はないと個人的には思います。
ただ、WAF はログを解析したり、リクエスト数・ブロック数などのメトリクスを一覧するにはひと工夫が必要でした。
そんな悩みを抱えていたところ神のようなダッシュボードを作ってくれるテンプレートが公開されました!!
後で aws-samples とかに移るかも(未定)ですが、Specialist SA の岡さんが WAF のログからダッシュボードをサクッと作るテンプレを作ってくれました!!(これは神)
ワンクリックで展開可能なので是非試してみて頂きたいところCloudWatch Dashboard for AWS WAF https://t.co/RtQ8OYQvYM
— mats (@mats16k) June 23, 2022
やってみます。
Web ACL を作る
まずは Web ACL を作ります。Web ACL を作るところは本題ではないので割愛します。開発者ガイドを参照ください。
Creating a web ACL
Web ACL が作成できたら、Logging and metrics タブから Logging を Enable にします。
Logging destination は CloudWatch Logs log group を必ず選択します。
ここポイントです。S3 や Firehose を選ばないようにしましょう。
CloudWatch Logs ロググループ名は「aws-waf-logs-」で始まるものを作成します。
Web ACL をリソースに関連付ける
CloudFront or ALB に Web ACL を関連付けます。
本記事では CloudFront を使用しています。
アクセスしてみる
Web ACL 関連付けが終わったので CloudFront URL にアクセスしてみます。
ブラウザで何回かリロードしました。
CloudWatch Logs に WAF ログが出力されました。準備完了です。
CloudFormation テンプレートの実行
以下のリポジトリをブラウザで開きます。(またはクローンします)
CloudWatch Dashboard for AWS WAF
Regional WAF、CloudFront WAF 用の CloudFormation テンプレートが公開されています。これを使ってダッシュボードを作成します。
自身のマネジメントコンソールにログインしている状態であれば「Launch Stack」と表示されているリンクをクリックすることでスタック作成画面まで飛ぶことが可能です。
スタック作成途中にパラメーターを指定する箇所があります。自身の環境に合わせた値を指定します。
項目 | 値 |
---|---|
CWWAFLogName | CloudWatch Logs ロググループ名 |
WAFRegion | リージョンの指定。CloudFront は us-east-1 |
WebACLName | Web ACL 名 |
ダッシュボード
スタック作成はすぐに完了するはずです。
出力タブを開くとダッシュボードへのリンクが表示されています。こちらをクリックしてダッシュボードを開きます。
ブロックされてみる
AWS-AWSManagedRulesBotControlRuleSet にブロックされるようなアクセスをしてみます。
$ curl -I https://CloudFrontのURL/ HTTP/2 403
しばらくしてダッシュボードを更新してみると Bot リクエストが確認できます。
ブロックリクエストを示すウィジェットです。2行目に検知されています。
まとめ
WAF の維持管理は楽ではありません。このようなダッシュボードがあるとかなり助かります。
また、ログを可視化するといった観点でもこのテンプレートは勉強になりました。
参考
CloudWatch Dashboard for AWS WAF
以上、吉井 亮 がお届けしました。