コンテンツにスキップ

レート制限(旧バージョン)

Cloudflareのレート制限は、特定のURLまたはドメイン全体に対する過剰なリクエストレートを自動的に特定し、軽減します。

リクエストレートは、個々のCloudflareデータセンターでローカルに計算されます。レート制限の最も一般的な使用例は次のとおりです:

個々のIPv4アドレスまたはIPv6 /64 IP範囲がルールの閾値を超えると、オリジンサーバーへのさらなるリクエストはHTTP 429レスポンスステータスコードでブロックされます。レスポンスには、クライアントがリクエストの送信を再開できる時期を示すRetry-Afterヘッダーが含まれます。

レート制限とSEO

キャッシュされたリソースと既知の検索エンジンのクローラーは、レート制限ルール(旧バージョンのみ)から除外されます。したがって、これらはあなたのウェブサイトのSEOランキングに影響を与えません。


利用可能性

許可されるレート制限ルールの数は、ドメインのプランによって異なります:

プランルールレスポンスヘッダーに一致するルールアクションアクションの期間リクエスト期間
無料11ブロック1分または1時間10秒または1分
プロ101ブロック、インタラクティブチャレンジ、JSチャレンジ、管理チャレンジ、またはログ1分または1時間10秒または1分
ビジネス1510ブロック、インタラクティブチャレンジ、JSチャレンジ、管理チャレンジ、またはログ1分、1時間、または24時間10秒、1分、または10分
エンタープライズ10010ブロック、インタラクティブチャレンジ、JSチャレンジ、管理チャレンジ、またはログ10秒から86,400秒(24時間)の間で入力された任意の期間10秒から3,600秒(1時間)の間で入力された任意の値

Cloudflareのレート制限は、ドメインのCloudflareプランに応じて複数のレベルの構成制御をサポートしています。以下の表は、プランに基づいてできることを示しています:

順位タスク利用可能プラン
1基本的なレート制限ルールを構成するすべてのプラン
2高度な基準を構成するビジネスおよびエンタープライズプラン
3高度なレスポンスを構成するビジネスおよびエンタープライズプラン
4バイパスオプションを構成するエンタープライズプラン

レート制限ルールの構成要素

レート制限ルールは、3つの異なるコンポーネントで構成されています:

リクエスト一致基準

受信リクエストは、リクエストパス、リクエストスキーム、リクエストメソッド、および(オプションで)オリジンレスポンスコードに基づいて一致します。

リクエストパス

例えば:

  • http://example.com/example
  • http://example.com/example/*

リクエストパスは大文字と小文字を区別しません。パターンは、クエリ文字列(?)やアンカー(#)の後のコンテンツには一致しません。アスタリスク(*)は、空のシーケンスを含む任意の文字のシーケンスに一致します。例えば:

  • *.example.com/*は、example.comの任意のサブドメインの任意のパスに一致します。
  • *example.com/example.htmlは、example.comまたはexample.comの任意のサブドメインのexample.htmlに一致します。
  • *は、あなたのサイトの任意のページに一致します。

example.com/pathへのリクエストは、example.com/path/とは異なります。このルールの唯一の例外はホームページです:example.comexample.com/に一致します。

リクエストスキーム

HTTPまたはHTTPS。指定がない場合は、両方が一致し、ルールはALLをリストします。

リクエストメソッド

POSTまたはGET。指定がない場合は、すべてのメソッドが一致し、ルールはALLをリストします。

(オプション)オリジンレスポンスコード

例えば、オリジンサーバーがHTTP 401または403ステータスコードを返すときのみ、レート制限ルールに一致させます。レスポンスコード基準に一致するトリガーされたルールは、そのクライアントからの後続のリクエストをオリジンレスポンスコードに関係なくブロックします。

レート一致基準

ルールは、同じクライアントからのすべてのリクエストの数と期間に基づいて一致することができます。

リクエストの数

最低2つのリクエストを指定します。単一リクエストのブロックの場合は、パスを利用できないようにします — 例えば、オリジンサーバーを構成してHTTP 403ステータスコードを返すようにします。

リクエスト期間

クライアントのリクエストが指定された期間内に閾値を超えると、ルールがトリガーされます。

ルールの軽減

ルールの軽減は、軽減アクションと禁止期間で構成されます。

軽減アクション

レート制限アクションは、利用可能性で述べたドメインプランに基づいています:

  • ブロック:閾値を超えた場合、CloudflareはHTTP 429エラーを発行します。
  • JSチャレンジ:訪問者はCloudflareのJavaScriptチャレンジを通過する必要があります。通過した場合、Cloudflareはリクエストを許可します。
  • 管理チャレンジ(推奨):訪問者は、リクエストの特性に基づいてCloudflareによって動的に選択されたチャレンジを通過する必要があります。通過した場合、Cloudflareはリクエストを許可します。
  • インタラクティブチャレンジ:訪問者はインタラクティブチャレンジを通過する必要があります。通過した場合、Cloudflareはリクエストを許可します。
  • ログ:リクエストはCloudflareログに記録されます。これにより、プロダクションに適用する前にルールをテストするのに役立ちます。

チャレンジアクションの詳細については、Cloudflareチャレンジを参照してください。

禁止期間

閾値よりも短いタイムアウトを設定すると、APIは自動的にタイムアウトを閾値と同じに増加させます。

レート制限に達した訪問者は、カスタムエラーページが指定されていない場合、デフォルトのHTMLページを受け取ります。さらに、ビジネスおよびエンタープライズの顧客は、ルール自体でレスポンスを指定できます。詳細については、高度なレスポンスを構成するを参照してください。


レート制限の閾値を特定する

Cloudflareのレート制限の一般的な閾値を特定するには、キャッシュされていないウェブサイトリクエストの24時間を同じ24時間のユニークビジター数で割ります。次に、訪問の推定平均分数で割ります。最後に、あなたのウェブサイトの1分あたりの推定閾値を確立するために4(またはそれ以上)を掛けます。4を超える値は問題ありません。ほとんどの攻撃は、通常のトラフィックレートの桁違いです。

特定のURLのURLレート制限を特定するには、特定のURLのキャッシュされていないリクエストとユニークビジターの24時間を使用します。ユーザーの報告や独自の監視に基づいて閾値を調整します。


タスク1: 基本的なレート制限ルールを構成する

以下のセクションでは、2つの一般的なタイプのレート制限ルールをカバーします。

ログインを保護するを有効にする

レート制限には、5分以内に5回以上のPOSTリクエストを送信したクライアントを15分間ブロックするルールを作成するワンクリックのログインを保護するツールがあります。これは、ほとんどのブルートフォース攻撃をブロックするのに十分です。

  1. Cloudflareダッシュボードにログインし、アカウントとドメインを選択します。
  2. セキュリティ > WAF > レート制限ルールに移動します。
  3. レート制限の下で、ログインを保護するを選択します。
  4. 表示されるログインを保護するダイアログでルール名ログインURLを入力します。
  5. 保存を選択します。
  6. ルール名があなたのレート制限ルールリストに表示されます。

カスタムレート制限ルールを作成する

  1. Cloudflareダッシュボードにログインし、アカウントとドメインを選択します。

  2. セキュリティ > WAF > レート制限ルールに移動します。

  3. レート制限ルールを作成を選択します。新しいルールの詳細を指定するダイアログが開きます。

    レート制限ルール作成ポップアップダイアログの例。ルールは、1時間に150リクエストを超えたIPアドレスからのリクエストをブロックします。

  4. ルール名に説明的な名前を入力します。

  5. URLに一致するトラフィックの場合、ドロップダウンからHTTPスキームを選択し、URLを入力します。

  6. 同じIPアドレスからのリクエストが超えた場合に、サンプリング期間内のリクエスト数を表す1より大きい整数を入力します。

  7. リクエストごとに、サンプリング期間(リクエストがカウントされる期間)を選択します。エンタープライズプランのドメインは、10秒から3,600秒(1時間)の間で任意の期間を手動で入力できます。

  8. 次に、プランに基づいて利用可能なアクションの1つを選択します。詳細については、ルールの軽減セクションを確認してください。

  9. ブロックまたはログを選択した場合、その訪問者からの一致するトラフィックの期間に、閾値がトリガーされた後にオプションを適用する期間を選択します。エンタープライズプランのドメインは、10秒から86,400秒(24時間)の間で任意の値を入力できます。

  10. 新しいルールを有効にするには、保存してデプロイを選択します。

新しいルールがレート制限ルールリストに表示されます。

一般的に、閾値を低く設定する場合:

  1. 既存のルールをそのままにして、低い閾値の新しいルールを追加します。
  2. 新しいルールが設定されたら、古いルールのアクション期間が経過するのを待ってから古いルールを削除します。

高い閾値を設定する場合(正当なクライアントのブロックによる)、既存のルール内で閾値を増加させます。


タスク2: 高度な基準を構成する(ビジネスおよびエンタープライズプランのみ)

高度な基準オプションは、レート制限ルールに一致させるHTTPメソッド、ヘッダー応答、およびオリジンレスポンスコードを構成します。

新しいまたは既存のルールの高度な基準を構成するには:

  1. 高度な基準を展開します。

    レート制限ルールの高度な基準を構成する際の利用可能なフィールド。

  2. メソッドから値を選択します。デフォルト値はANYで、すべてのHTTPメソッドに一致します。

  3. HTTPレスポンスヘッダーでフィルタリングします。オリジンウェブサーバーによって返されるヘッダーを含めるには、ヘッダー応答フィールドを追加を選択します。

    CF-Cache-Statusヘッダーはデフォルトで表示され、Cloudflareがキャッシュされたリソースを提供するため、これらのリソースをレート制限しません。キャッシュされたリソースにもレート制限を適用するには、このヘッダーを選択して削除するか、キャッシュされたアセットにもレート制限を適用を有効にします。

    HTTPレスポンスヘッダーの下に複数のヘッダーがある場合、ANDのブール論理が適用されます。ヘッダーを除外するには、Not Equalsオプションを使用します。各ヘッダーは大文字と小文字を区別しません。

  4. オリジンレスポンスコードの下に、一致させる各HTTPレスポンスコードの数値を入力します。2つ以上のHTTPコードはカンマで区切ります(例:401, 403)。

  5. (オプション)プランに基づいて追加のレート制限機能を構成します。

  6. 保存してデプロイを選択します。


タスク3: 高度なレスポンスを構成する(ビジネスおよびエンタープライズプランのみ)

高度なレスポンスオプションは、ルールの閾値が超えたときにCloudflareが返す情報形式を構成します。静的なプレーンテキストまたはJSONコンテンツを返したい場合は高度なレスポンスを使用します。

プレーンテキストまたはJSONレスポンスを構成するには:

  1. 高度なレスポンスを展開します。

レート制限ルールのための高度な応答を構成する際の利用可能なフィールド。

  1. デフォルト以外のResponse typeフォーマットを選択します: Custom JSONまたはCustom TEXT

  2. 返したいプレーンテキストまたはJSON応答を入力します。最大応答サイズは32 KBです。

  3. (オプション)プランに基づいて追加のレート制限機能を構成します。

  4. Save and Deployを選択します。

カスタムHTMLページまたはリダイレクトの使用

カスタムHTMLページを表示したい場合は、ダッシュボードでHTTP 429エラー(リクエストが多すぎます)用のカスタムページを構成します。Cloudflareは、Response typeDefault Cloudflare Rate Limiting Pageを選択したときにこのページを表示します(フィールドのデフォルト値)。

レート制限されたクライアントを特定のURLにリダイレクトするには、以下の方法を使用できます。

  1. サーバー上に、表示したいページの最終URLにリダイレクトするHTMLページを作成します。以下の例のように、ページコンテンツにmeta refreshタグを含めます:

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>カスタムRLページ</title>
    <meta http-equiv="refresh" content="0; url='https://yourzonename/block'" />
    </head>
    <body> </body>
    </html>

    作成したページの公開URLに注意してください。

  2. Cloudflareダッシュボードで、Account Home > Configurations > Custom Pagesに移動します。

  3. 429 errorsの下で、Custom Pagesを選択します。

  4. サーバー上に作成したページのURL(meta refreshタグを含むページ)を入力し、Publishを選択します。

プレーンテキストまたはJSONコンテンツを返したい場合も同様のアプローチを取りますが、応答が32 KBを超える場合は、リダイレクトURLは表示したいプレーンテキストまたはJSONリソースのURLになります。


タスク4: バイパスオプションの構成(エンタープライズプランのみ)

Bypassは、特定のURLセットに対してアクションが適用されないようにする許可リストまたは例外を作成します。

Bypassを構成するには:

  1. Bypassを展開します。

  2. Bypass rule for these URLsに、レート制限ルールから除外するURLを入力します。各URLを別々の行に入力します。URLに指定されたHTTPまたはHTTPSは、ルールが保存されると自動的に削除され、HTTPとHTTPSの両方に適用されます。

    レート制限ルールのためにバイパスする2つのURLを構成する(1行ごと)。

  3. (オプション)プランに基づいて追加のレート制限機能を構成します。

  4. Save and Deployを選択します。


分析

Analytics > Securityでレート制限の分析を表示します。レート制限の分析は、シミュレートされたリクエストに一致するトラフィックを表すために実線を使用し、実際にブロックされたリクエストを表すために点線を使用します。レート制限ルールによって生成されたログは、エンタープライズ顧客のみがCloudflare Logsを通じて見ることができます。

Cloudflareは、ブロックされたリクエストに対してHTTP 429エラーを返します。場所ごとのブロックされたリクエストの詳細は、Analytics > Trafficで利用可能な分析ダッシュボードのStatus codesの下でエンタープライズ顧客に提供されます。


ルール実行の順序

レート制限ルールは、最も最近作成されたルールから古いルールへと評価されます。

例えば、リクエストが以下の2つのルールに一致する場合:

  • ルール #1: test.example.comに一致(2024-03-01に作成)
  • ルール #2: *.example.com*に一致(2024-03-12に作成)

この場合、ルール #2が最初にトリガーされます。なぜなら、それが最後に作成されたからです。

さらに、一致がありWAFがLogアクションを適用する場合、他のレート制限ルールの評価を続けます。Logは非終了アクションだからです。WAFが他のアクションを適用した場合、他のルールは評価されません。


制限事項

レート制限は、ユーザー定義のレートを超えるトラフィックの急増を制限するように設計されています。このシステムは、オリジンサーバーに到達する正確なリクエスト数を許可するようには設計されていません。リクエストを検出して内部カウンターを更新する間に遅延が発生する場合があります。この遅延は数秒に及ぶことがあり、そのため、ブロックやチャレンジなどのアクションが適用される前に、過剰なリクエストがオリジンに到達する可能性があります。


関連リソース