現代のWeb環境において、個人ブログ、コーポレートサイト、SaaSクラウドプラットフォームを問わず、世界中から押し寄せる自動化ボットネット(Botnet)や悪質なスクレイピングプログラムの脅威に日々晒されています。攻撃者はスクリプトを用いてパスワードを総当たりで試行する「ブルートフォース攻撃(Brute Force)」を仕掛けたり、負荷の高い検索エンドポイントを頻繁に呼び出してサーバーリソースを枯渇させたり、あるいはAPIエンドポイントへ大量のリクエストを浴びせかける「レイヤー7(アプリケーション層)DDoS攻撃」を実行したりします。

世界有数のクラウドセキュリティおよびコンテンツ配信ネットワーク(CDN)を提供するCloudflareは、その「Webアプリケーションファイアウォール(WAF)」において、強力かつ柔軟な「レート制限ルール(Rate Limiting Rules)」機能を提供しています。リクエスト頻度を精密にコントロールすることで、サイト管理者は異常なバーストトラフィックをミリ秒単位で検知・遮断し、バックエンドのオリジンサーバー(Origin Server)の安定稼働を維持することができます。

本記事では、Cloudflare WAFにおけるレート制限ルールの構築手順、主要パラメータの設定テクニック、そして代表的な防御ユースケースをわかりやすく解説します。


Cloudflare WAF レート制限ルールの設定手順

Cloudflareの管理ダッシュボードにログインすれば、直感的なUIまたは複合ルール式を使って即座にデプロイできます。

  1. Cloudflare ダッシュボードへログイン
    Cloudflare Dashboard にアクセスし、アカウントにログインします。
  2. 対象ドメイン(Zone)を選択
    Webサイト一覧から、セキュリティ設定を行いたい対象ドメインをクリックします。
  3. WAF セキュリティ設定画面へ移動
    左側サイドバーのナビゲーションメニューから、「セキュリティ(Security)」 > 「WAF」の順にクリックします。
  4. レート制限ルールタブを開く
    WAF画面上部のタブから「レート制限ルール(Rate limiting rules)」に切り替え、右側の「ルールを作成(Create rule)」ボタンをクリックします。

主要パラメータの詳細と実践設定

レート制限ルールの編集画面では、高度にカスタマイズ可能な条件フィルターと実行アクションを設定できます。

パラメータ項目機能概要と設定のポイント実践設定例
ルール名(Rule Name)将来の運用・管理を見据え、防護目的が明確にわかる名前を付けます。Protect WordPress Login POST
一致条件(Incoming Request)カウント監視の対象とするリクエスト条件をURIパス、HTTPメソッド、クエリパラメータ、ヘッダー等で定義します。(http.request.uri.path eq "/wp-login.php" and http.request.method eq "POST")
カウント基準(Characteristics)どの単位でリクエスト数を個別集計するかを決定します。通常は「IPアドレス(IP Address)」を指定します。上位プランでは特定ヘッダーやCookieも選択可能です。IP
リクエスト閾値(Requests)指定した時間枠内で、単一クライアント(基準単位)に許可する最大リクエスト数を設定します。5 requests
評価期間(Period)リクエスト頻度を算出するスライディングタイムウィンドウ(例:10秒、1分など)。1 minute
アクション(Action)リクエスト頻度が閾値を超えた際に、Cloudflareのエッジノードが実行する処理動作。Managed Challenge(マネージドチャレンジ) または Block(ブロック)
軽減期間(Duration)閾値超過アクションが発動した後、そのクライアントへの制限を継続させる時間(10秒〜数時間)。1 minute

代表的な3大防御シナリオ

シナリオ1:WordPressのログイン画面を保護し、ブルートフォース攻撃を遮断

WordPressのデフォルトの /wp-login.php や /xmlrpc.php は、攻撃スクリプトが辞書攻撃やパスワードクラッキングを最も頻繁に仕掛ける標的です。POSTリクエストの頻度を制限することで、総当たり攻撃を完全に無力化できます。

  • ルール式(Expression):
    (http.request.uri.path eq "/wp-login.php" and http.request.method eq "POST")
  • 閾値設定:1分間に5回を超えるリクエスト
  • アクション:Block(HTTP 429ステータスコードを返却)または Managed Challenge
  • 軽減期間:5分間制限

シナリオ2:機密APIエンドポイントおよびSMS/メール認証コード送信インターフェースの乱用防止

多くのWebサービスが提供する「認証コード送信」や「パスワードリセット」APIは、第三者によって「SMSボミング(大量送信スパム)」のツールとして悪用されやすく、事業者に莫大な従量課金コストを発生させる危険があります。

  • ルール式(Expression):
    (http.request.uri.path starts_with "/api/v1/auth/send-code" and http.request.method eq "POST")
  • 閾値設定:1分間に2回を超えるリクエスト
  • アクション:Block
  • 軽減期間:1時間制限

シナリオ3:社内管理者および既知のオフィスIPのホワイトリスト除外

社内開発チームや正規のクローラー(Googlebotなど)が特定リソースへ高頻度でアクセスする必要がある場合、誤遮断を避けるために例外条件を追加します。

  • ルール式(Expression):
    (http.request.uri.path starts_with "/api/" and not ip.src in {203.0.113.1 198.51.100.5})

ベストプラクティスと誤遮断(フォールスポジティブ)対策

  1. 運用初期は「Log(ログ記録のみ)」モードを活用する
    新しいレート制限ルールを作成した直後は、アクションをまず「Log」に設定し、24〜48時間ほどトリガー状況を観察することをお勧めします。一般ユーザーの正当な操作に悪影響がないことを確認してから、本格的な「Block」や「Managed Challenge」へ切り替えましょう。
  2. NAT共有IPによる一般ユーザーの巻き添え誤遮断に注意
    大学のキャンパス、公共交通機関の無料Wi-Fi、大企業のオフィス回線、モバイル回線などではNATアーキテクチャが採用されており、数百人〜数千人のユーザーが単一のパブリックIPを共有しています。閾値をあまりに厳しく設定しすぎると(例:1秒間に3回で即ブロックなど)、多数の正規ユーザーがサイトを閲覧できなくなる恐れがあります。多くのシナリオにおいて、即座の遮断よりも「Managed Challenge(マネージドチャレンジ)」を採用する方が、ユーザーフレンドリーかつ安全です。
  3. Cloudflareのプラン制限とクォータを把握する
    Cloudflareの無料プラン(Free Tier)では作成可能なレート制限ルールの数や基本枠に制限があります。Pro、Business、Enterpriseプランでは、より詳細なHTTPヘッダー照合、独自のカスタム429エラー画面の提供、そしてより高度な同時アクセス耐性がサポートされています。トラフィック規模の拡大に応じて定期的に利用状況レポートを確認しましょう。
✦ 独立した報道 · 読者サポート ✦

独自の視点と客観的な報道を、あなたの温かい支援で

表面的なトレンドやアルゴリズムに流されず、事実と深い洞察に基づいた独立した記事をお届けし続けるために。

質の高いオリジナル記事と独立した運営を続けるため、1回のみ、または毎月のご支援をGoogleの安全な決済でお願いいたします。

お支払いはGoogleにより安全に処理されます · いつでも管理・解約できます