【目次】

  1. 1. はじめに
  2. 2. Rate Dashboardとは
  3. 3. 閾値を調査する
  4. 4. 調査した閾値をもとにルールを適用する
  5. 5. おわりに

1. はじめに

2025年12月10日に、WafCharmではAWSユーザー向けにLog Intelligenceオプションという新しいオプション機能をリリースしました。
Log Intelligenceオプションは、購読いただくことで、WAFログを用いた拡張機能をご提供する有料オプションです。詳細は以下のブログ記事をご参考ください。
WAFログストレージ機能およびLog Intelligenceオプションをリリースしました

Log Intelligenceオプションのリリース時には、拡張機能はBot Dashboardのみでしたが、リリース以降Rate Dashboardという機能も追加しています。今回は、そのRate Dashboardについてご紹介します。

2. Rate Dashboardとは

レートダッシュボードは、連携されたWAFログをもとに、レートベースルールの閾値を検討するためのダッシュボード機能です。負荷が増加した場合に、本ダッシュボードをご利用いただくことで、閾値の調査をご実施いただけます。

詳細は、以下のヘルプページもご参考ください。
Rate Dashboardについて

なお、本機能はLog Intelligenceオプションを追加している場合、またAdvanced RuleポリシーにてWAFログ連携を有効化している場合にのみご利用いただける機能となっております。

3. 閾値を調査する

まずRate Dashboardの画面を開くと、以下のスクリーンショットのような対象を検索するための「リクエスト頻度分析」が表示されます。ここで対象のWAF Configや、抽出するデータの条件を決定します。

上記のヘルプページにも記載の通り、評価ウィンドウに応じて抽出期間が異なります。今回は過去6時間以内に急激なリクエストのスパイクがあったと仮定して、評価ウィンドウを5分にし、抽出期間を6時間とします。
終了日時から抽出期間分を遡る形でデータが表示されますので、数日前のスパイクだったとしても、終了日時を調整することでその期間の分のデータを表示できます。

各種設定項目を選択してから「条件を適用する」ボタンをクリックすると、以下のスクリーンショットのようにグラフが表示されます。グラフ上でホバーすると、それぞれのタイミングでどのくらいリクエストがあったのかが、下にある枠の中にIPアドレスなどのリクエスト元の情報と共に表示されます。

例として、以下のグラフにおける500回のリクエストが通常のリクエスト状況とした場合、20時55分ごろからスパイクしているような状況に見えます。「レート上限」に数字を入れるとグラフ上に横の線が描画されますので、今回は正常なリクエスト数より多く、スパイクしていそうな部分に被らない「500」という数値を入力しました。

グラフ上でみても、5分に500回という閾値であれば、スパイクしているものだけを検知対象とすることができそうです。

今回はスパイクしているものとそうでないものに大きな開きがあったため閾値も正常なリクエストに寄せた形にしましたが、正常なリクエストと不審なリクエストの数が近い場合には、もう少し探る必要があるでしょう。また、リクエスト数だけでは違いを出しづらい場合、集約IPアドレスやJA4 fingerprintなども組み合わせた状態で制限する必要があるかもしれません。

なお、JA4 fingerprintはAWS WAFでJA4 fingerprintがサポートされるようになりましたでもご紹介しておりますように、TLS Client Helloをもとに算出した値です。そのため、算出できない場合などにはWAFログ上にも存在せず、Rate Dashboard上でもデータをご確認いただくことができません。

4. 調査した閾値をもとにルールを適用する

上記で確認した500回/5分という閾値を元に、ルールを作る場合の手順を見てみます。方法としては、以下の通り3つあります。

  • WAF Configのルール設定画面から追加する
  • AWS WAFのコンソール画面から追加する
  • カスタマイズを依頼する

WAF Configのルール設定画面から追加する

Rate-baseに記載の通り、Advanced RuleポリシーのWAF Configでは、WafCharmコンソール上から比較的シンプルなレートベースルールの追加が可能です。

500回/5分という閾値で、集約キーはIPアドレス、他の絞り込みは実施しないことを条件にした場合、以下の通りWafCharmコンソールからレートベースルールを追加することが最も素早い対応になるかと思います。

  • ユースケース:カスタマイズ
  • レート計測のキー:IPアドレス(Source IPを使用)
  • ウィンドウサイズ:5分
  • 閾値:500

アクションについては、Count、Block、CAPTCHA、Challengeから選択が可能です。様子見をする場合は最初はCountで登録し、後からBlockに変更することも可能です。検討した閾値では誤検知の可能性が低い場合や、誤検知よりも素早いブロックの方が重要といった場合には、他のアクションで登録してもいいかと思います。

AWS WAFのコンソール画面から追加する

AWS WAFのコンソール画面からも、同じようなルールの追加が可能です。新しいコンソールエクスペリエンス標準コンソールエクスペリエンス(古いWAFコンソール)ではそれぞれ操作方法が異なりますので、詳細はAWS公式ドキュメントをご参考ください。

設定内容は上記のWafCharmコンソールから実施した場合と同様ですが、AWS WAFコンソールからルールを追加する場合は、お客様管理ルール扱いとなります。誤動作などを防ぐため、Priorityは必ず0〜99の間でご利用ください。

カスタマイズを依頼する

500回/5分という閾値で、集約キーはIPアドレス、他の絞り込みは実施しないことが条件の場合は、上記ようにWafCharmコンソールからも設定が可能です。もう少し絞り込みを行いたい場合にはAWS WAFコンソールから設定いただくか、WafCharmの場合はカスタマイズでの対応も可能です。

例えば、スパイクしているリクエストのリクエスト先URIが「/contact」のみに絞られている場合、こちらを絞り込み条件として指定することで、意図せず他のページへの正規リクエストをブロックしてしまうといった状況を避けることができます。
カスタマイズの依頼の際には、Rate Dashboard下部にある「カスタマイズのお問い合わせテンプレートをコピーする」というボタンをクリックし、以下ような形でテンプレートの内容をご調整いただいた上でお問い合わせください。

- Target WAF Config: "指定したWAF Config名"
- レート制限: 500
- 評価ウィンドウ: 5min
- リクエスト集約条件: IPアドレス
- [任意] 絞り込み条件: (URI, ヘッダ など 複数可)
	- URIが /contact で始まる
- アクション: Count

絞り込み条件や集約キーなどの詳細は、以下のブログ記事もご参考ください。

5. おわりに

本記事では、Log Intelligenceオプションに含まれるRate Dashboardという機能についてご紹介しました。

Log Intelligenceオプションでは今後も様々な機能をご提供してまいりますので、ご期待ください。