WafCharmの新機能でAWS WAFログ分析が捗る!Bot DashboardとRate Dashboardを触ってみた
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
突然ですが皆さん、AWS WAFのログはちゃんと活用できていますか?
AWS WAFを導入してマネージドルールをいくつか適用したのは良いものの、「最近リクエストが増えているけど何が来ているんだろう?」「レート制限を入れたいけど、閾値って何回/何分にすればいいんだろう?」と思ったことはありませんか?生のAWS WAFログを地道に掘っていく…という方も多いのではないでしょうか。
そんな悩みを軽減してくれる機能として、CSC社が提供するAWS WAF自動運用サービス「WafCharm」に Log Intelligenceオプション という新しいオプションが登場しました。本記事ではこのオプションで利用できる「Bot Dashboard」「Rate Dashboard」という2つのダッシュボード機能についてご紹介します。
Log Intelligenceオプションとは
WafCharmはAWS WAFの運用を自動化してくれるSaaS製品です。AWS WAFルールの自動運用・チューニングや運用レポートなどを提供してくれるサービスです。
そんなWafCharmに昨年末リリースされたのがLog Intelligenceオプションです。
Log Intelligenceオプションは、AWS WAFのログをより拡張的に分析する機能を提供する有料オプションです。下記の通り、このオプションには本記事執筆時点で2つの機能(ダッシュボード)が含まれます。
| 機能(ダッシュボード) | ざっくり何ができるか |
|---|---|
| Bot Dashboard | AWS WAFログから、Botによるリクエストの傾向を分析する |
| Rate Dashboard | AWS WAFログから、レートベースルールの閾値(しきい値)を検討する |
実際にコンソールを確認すると、どちらもWafCharmコンソールの左メニュー [Analytics] 配下に追加されています。

利用の前提条件
両ダッシュボードに共通して、利用には以下の条件を満たす必要があります。
- Log Intelligenceオプション(有料)を購読していること
- Advanced Ruleポリシーを利用していること(Legacy Ruleポリシーは対象外)
- AWS WAFログ連携を有効化していること
それでは、各ダッシュボードを見ていきます。
Bot Dashboard
Bot Dashboardは、特定のユースケースに当てはまる一定時間内のリクエストを抽出し、そこからリクエストの特徴を洗い出すためのダッシュボードです。
「最近Botっぽいリクエストが急増しているけど、どこから・どんなリクエストが来ているのか?」を把握し、ブロックルールの条件として使えそうな共通の値を見つけ出す、といった用途で活躍してくれます。
画面は大きく [抽出ビュー] → [検索結果] → [詳細分析ビュー] の3段構成になっています。

抽出ビューで条件を指定する
まずは [抽出ビュー] で、どのAWS WAFログを対象に抽出するかの条件を指定します。


指定する項目は以下の通りです。
- Target WAF Config
- 対象のWAF Configを選択
- AWS WAFログ連携済みのAdvanced RuleポリシーのWAF Configのみが表示される
- 対象のWAF Configを選択
- ユースケース
- 抽出したいAWS WAFログの条件を以下の3つから選択可能
- リクエストが多いアクセス元の特徴を抽出する
- Botリクエストの特徴を抽出する
- 「Botリクエストの特徴を抽出する」ユースケースは、AWS WAF Bot Controlルールグループの併用が前提
- 併用していない場合、Bot関連の項目は表示されない
- 「Botリクエストの特徴を抽出する」ユースケースは、AWS WAF Bot Controlルールグループの併用が前提
- 悪性リクエストの特徴を抽出する
- 抽出したいAWS WAFログの条件を以下の3つから選択可能
- 抽出期間
- 対象とするAWS WAFログの期間を以下から選択可能
- 1時間
- 24時間
- 7日
- 30日
- 1〜60日の任意の日数も指定可能
- 対象とするAWS WAFログの期間を以下から選択可能
- 終了日時
- 指定した日時を起点として抽出期間の分だけ過去に遡って抽出
検索結果で傾向を掴む
条件を指定して結果を抽出すると、[検索結果] にタイムラインと集計項目が表示されます。


タイムラインは抽出条件に該当するAWS WAFログのリクエスト数をプロットしたグラフです。そして、その下に以下6種類の集計項目が Top10 + Other の11項目で表示されます。
| 集計項目 | 内容 |
|---|---|
| Bot識別ラベル | Bot Controlルールグループが付与した、Botを識別するためのラベル |
| Bot Signalラベル | Bot Controlルールグループが付与した、シグナルラベル |
| ASN | AWS WAFログ内に存在する場合のASN(自律システム番号) |
| Geo | AWS WAFログ内の country |
| IP | AWS WAFログ内の clientIp |
| JA4 Fingerprint | AWS WAFログ内の JA4 fingerprint |
※ ASNやJA4 FingerprintはAWS WAFログ内に値が存在しない場合は表示されません。特にASNについては、ASN関連のルールが設定されていないとAWS WAFログ自体に含まれない点に注意が必要です。
各項目をクリックすると、タイムラインの内容がその集計結果に応じて切り替わります。「IPで見たらどうか」「Geoで見たらどうか」と、同じ期間のリクエストを様々な角度から眺められるわけです。良いですね。
詳細分析ビューでドリルダウンする
そして個人的に「これは良い!」と感じたのがこの機能です。
集計項目で表示された個別の値(例えば特定のBot識別ラベルやIP)をクリックすると、右側に [詳細分析ビュー] が開き、その値に該当するAWS WAFログの一覧とAWS WAF Actionの集計を確認できます。
Bot識別ラベルで go_http をドリルダウンしてみます。

さらにログ一覧の各行をクリックすれば、個別のAWS WAFログの詳細まで確認できます。

「ざっくり傾向を眺める → 気になるリクエストを見つけたら掘り下げる → 最終的に生ログを確認する」という流れが、画面遷移なく一気通貫で完結するのは非常に快適ですね。
その他機能の詳細は下記の公式ガイドをご参照ください。
ルールカスタマイズの問い合わせフロー
また、上述した詳細分析ビューには「カスタマイズのお問い合わせテンプレートをコピーする」ボタンと「お問い合わせ」ボタンが用意されています。

WafCharmはAWS WAFの自動運用サービスなので、独自のルールカスタマイズを行うためには問い合わせが必要になります。
ということで、「カスタマイズのお問い合わせテンプレートをコピーする」ボタンを押すとこの詳細分析ビューの情報が入ったカスタマイズ問い合わせ文章をコピーすることができます。

「お問い合わせ」ボタンを押下すると問い合わせフォームに遷移します。

先ほどコピーした内容を、問い合わせフォームのメッセージ欄にペーストします。メッセージ内容を適切に書き換え、ルールのカスタマイズ申請をするようなイメージです。

一連のフローがよく考えて設計されているため、実際の運用も直感的に行いやすいのは嬉しいです。
Rate Dashboard
続いてRate Dashboardです。下記は機能紹介のCSC公式ブログです。
こちらは、リクエストの急激なスパイクを確認し、レートベースルールの閾値(しきい値)を検討するためのダッシュボードです。
レートベースルールを設定するとき、実際に「何回/何分」という閾値をいくつにするかを悩んだ方も多いんじゃないでしょうか。低すぎれば正常なリクエストを巻き込んでしまうし、高すぎれば肝心のスパイクを取りこぼしてしまう。
上述の通り、このRate Dashboardを利用することで、その閾値設定を視覚的に簡単に行うことができます。

リクエスト頻度分析で条件を指定する
画面を開くと [リクエスト頻度分析] というパネルが表示されるので、ここで抽出条件を指定します。


指定する項目は以下の通りです。
- Target WAF Config
- 対象のWAF Configを選択
- 集約単位
- リクエスト集約する単位を以下から選択可能
- IPアドレス
- JA4 Fingerprint
- リクエスト集約する単位を以下から選択可能
- 評価ウィンドウ
- リクエスト数を集計するウィンドウを以下から選択可能
- 1分(抽出期間: 2時間)
- 2分(抽出期間: 3時間)
- 5分(抽出期間: 6時間)
- 10分(抽出期間: 12時間)
- リクエスト数を集計するウィンドウを以下から選択可能
- 抽出期間
- 選択した評価ウィンドウに応じて自動で変動(上記参照)
- 終了日時
- 指定した日時を起点として抽出期間の分だけ過去に遡って抽出
評価ウィンドウの値に抽出期間が連動しているのが特徴です。「数日前のスパイクを見たい」といった場合は、終了日時を調整する必要があります。
分析結果で閾値の当たりをつける
条件を適用すると、[分析結果] にリクエスト数の時系列グラフが表示されます。

グラフをマウスでホバーすると、その時点のリクエスト数や集約項目(IPアドレスなど)の上位の値も確認できます。そのため「リクエスト数だけでは区別がつきにくい場合は集約単位も組み合わせる」といった検討も可能です。

ここで本機能の肝となるのが [レート上限] という項目です。ここに値を入力すると、グラフ上の該当する値の位置に横線が描画されます。

今回は「210」を閾値として入力して横線を引いてみました。このように多くのリクエストが一定回数に収まっていてある時間帯だけ大きくスパイクしている場合、閾値を入力することでスパイク部分だけが線を超えていることが視覚的に分かり、「この閾値ならスパイクだけを検知対象にできそうだ」という当たりをつけられるわけです。
ちなみに、この [レート上限] で指定できる値は10〜2,000,000,000です。また、指定した値がグラフの描画範囲外にある場合、横線は表示されません。
ルールカスタマイズの問い合わせフロー
こちらもBot Dashboard同様、カスタマイズの問い合わせフローが整備されています。
Rate Dashboardでは詳細画面などドリルダウンする内容が無いため、この分析結果パネルに問い合わせボタンが付いています。

実際に問い合わせ内容を貼ってみた問い合わせフォームが下図です。

「レート制限の閾値を設定する」という内容のため、Bot Dashboardの問い合わせ内容に比べて問い合わせに必要な情報はほとんど埋まっています。アクションや任意の絞り込み条件を追記するだけで問い合わせが完了しますね。
その他機能の詳細は下記の公式ガイドをご参照ください。
どういう時にどちらを使えばいい?
私が実際に触ってみた、2つのダッシュボードの使い分け方や仕様を簡単に下表にまとめてみました。
| 観点 | Bot Dashboard | Rate Dashboard |
|---|---|---|
| 主な目的 | 不審なBotリクエストの傾向把握・ブロック条件の発見 | レートベースルールの閾値検討 |
| 向いている場面 | 「何が・どこから来ているか」を多角的に知りたい | 「何回/何分で線を引くか」を決めたい |
| 主な入力 | ユースケース・抽出期間 | 集約単位・評価ウィンドウ・レート上限 |
| 主なアウトプット | 6種の集計ランキング+ログへのドリルダウン | リクエスト数の時系列グラフ+閾値ライン |
まだ何もレートベースルールやブロックルールを設定していない場合、以下のような使い方も良いかもしれません。
- まずはRate Dashboardでリクエストのスパイクが起きているかどうかを確認する
- 起きている場合、該当の時間帯についてBot Dashboardでログを抽出し、リクエストの傾向を把握する
- 上記で明らかに不要なBotによるリクエスト かつ 既存ルールでBlockできていないリクエストの場合、特定のリクエストを引っ掛けるルールの設定を検討する
- 特定のリクエストに対処した後、再度Rate Dashboardを確認して正常なリクエストが届かないであろうリクエスト数の閾値を設定する
もちろん他にも様々な使い方はできるでしょうし、定期的にご確認いただく使い方が最も有効だと思います。
最後に
今回はWafCharmの新機能であるBot DashboardとRate Dashboardをご紹介しました。
両ダッシュボードに共通して、「まずはざっくり傾向を掴み、気になるところを掘り下げていく」という思想で作られていると感じました。抽出条件もシンプルで分かりやすく、直感的に操作することができました。生ログを直接掘らずとも、攻撃の傾向把握からレート制限の閾値検討までをGUI上で完結できるのは、運用の負荷が下がるので嬉しいですね。
ブロックされたリクエストなどもBot Dashboardのグラフ上で見られると個人的には嬉しいので、今後の機能拡張にも期待したいと思います。
本記事がどなたかのお役に立てば幸いです。
以上、べこみんでした。






