Cloudflare は、すべての受信リクエストに複数のセキュリティ機能を適用します。各機能は特定の段階で実行され、順序によって先に動作する機能が決まります。この順序を理解すると、競合を避け、誤検知を減らせます。
Ruleset Engine で動く Cloudflare のセキュリティ機能は、固定されたフェーズの順序で実行されます。リクエストが到着すると、各フェーズを順番に通過します。ルールが 終了アクション(たとえば Block や Managed Challenge)を取ると、リクエストはそこで止まり、後続のフェーズには進みません。
セキュリティ関連のリクエストフェーズは、実行順に次のとおりです。
| フェーズ名 | プロダクト |
|---|---|
ddos_l7 |
HTTP DDoS Attack Protection |
http_request_firewall_custom |
カスタムルール |
http_ratelimit |
レート制限ルール |
http_request_firewall_managed |
Managed Rules |
http_request_sbfm |
Super Bot Fight Mode |
各フェーズ内では、アカウントレベルのルールセットがゾーンレベルのルールセットより先に実行されます。
Ruleset Engine は、セキュリティ以外の多くの Cloudflare プロダクトでも使われています。リクエストフェーズとレスポンスフェーズの一覧は フェーズ一覧 を参照してください。
次のセキュリティ機能は Ruleset Engine で動作せず、独立して評価されます。
- IP Access Rules
- Zone Lockdown
- User Agent Blocking
- Browser Integrity Check
- Hotlink Protection
- Security Level
これらの機能は独立して動作するため、上記のフェーズ順には従いません。
DDoS protection は、すべての Cloudflare プランで常時有効です。L7 HTTP DDoS Attack Protection はアプリケーション層の DDoS 攻撃を検出して緩和します。L3/4 Network-layer DDoS Attack Protection はネットワーク層の攻撃を処理します。DDoS protection を動作させるために、有効化や設定は不要です。
カスタムルール は、自分で定義するルールです。http_request_firewall_custom フェーズで実行され、Block、Managed Challenge、Skip、Log などのアクションに対応します。式では bot score フィールド、WAF attack score フィールド、および標準のリクエストフィールドをすべて参照できます。
レート制限ルール は、定義したリクエスト率を超えるトラフィックを抑制またはブロックします。カスタムルールのあとの http_ratelimit フェーズで実行されます。
Managed Rules は、Cloudflare が維持する事前設定済みのルールセットです。Cloudflare Managed Ruleset と OWASP Core Ruleset が含まれます。http_request_firewall_managed フェーズで実行されます。
Bot Fight Mode は Free プランで利用できます。既知のボットのパターンに一致するトラフィックにチャレンジする、シンプルなオン/オフの切り替えです。動作をカスタマイズしたり、カスタムルールでスキップしたりはできません。
Super Bot Fight Mode(SBFM)は、Pro、Business、Enterprise プラン(Bot Management アドオンなし)で利用できます。http_request_sbfm フェーズで実行され、Bot Fight Mode より細かく制御できます。Definitely automated、Likely automated、Verified bots のトラフィックに対して、それぞれ別のアクションを設定できます。カスタムルールの Skip アクション を使うと、特定のリクエストで SBFM をスキップできます。
Bot Management は Enterprise のアドオンです。すべてのリクエストに対して 1 から 99 の bot score を生成します。スコアが低いほど、自動化されたトラフィックである可能性が高くなります。cf.bot_management.score フィールドを使ったカスタムルールを書き、このスコアに基づいてアクションを取ります。詳細は Bot Management variables を参照してください。
セキュリティ機能の連携は、次のルールで決まります。
- 終了アクションは、リクエストの評価ワークフローを止めます。 ルールがリクエストをブロックまたはチャレンジすると、Cloudflare はそのリクエストについて後続のフェーズを評価しません。
- カスタムルールは SBFM より先に実行されます。 カスタムルールの終了アクションは、Super Bot Fight Mode がそのリクエストを評価するのを防ぎます。
- Skip アクションは後続のフェーズをバイパスします。 カスタムルールの Skip アクション を使うと、レート制限ルール(
http_ratelimit)、Super Bot Fight Mode(http_request_sbfm)、Managed Rules(http_request_firewall_managed)をバイパスできます。 - Bot Fight Mode はスキップできません。 Bot Fight Mode は Ruleset Engine の一部ではないため、カスタムルールではスキップできません。ボット対策からトラフィックを除外する必要がある場合は、Super Bot Fight Mode または Bot Management にアップグレードします。
- Bot Management のスコアはカスタムルールで使えます。 Bot Management を契約している Enterprise のお客様は、カスタムルールの式で
cf.bot_management.scoreを使い、パス、ユーザーエージェント、その他のリクエスト属性ごとに独自のしきい値を定義できます。
Free プランには DDoS protection と Bot Fight Mode が含まれます。
- DDoS protection は、すべてのリクエストで自動的に動作します。
- 既知のボットパターンにチャレンジするには、Security > Settings で Bot Fight Mode を有効にします。
- AI クローラーによるコンテンツのスクレイピングを防ぐには、Block AI Bots を有効にします。
Bot Fight Mode はスキップもカスタマイズもできないため、特定のボット向けの例外は作れません。Bot Fight Mode が正当な自動トラフィック(監視サービスや決済処理など)で誤検知を起こす場合は、Super Bot Fight Mode を含む Pro または Business プランへのアップグレードを検討してください。
Pro または Business プランでは、Super Bot Fight Mode、カスタムルール、Managed Rules が追加されます。
- DDoS protection は自動的に動作します。
- 自動化されたトラフィックと、自動化の可能性が高いトラフィックをブロックするには、Super Bot Fight Mode を有効にします。
- SQL インジェクションやクロスサイトスクリプティングなどの既知の脆弱性から守るには、Managed Rules をデプロイします。
- 正当な自動トラフィックを許可しつつ、それ以外では SBFM が不正なボットをブロックするように、Skip アクションのカスタムルールを作成します。次のルール設定を使います。
- ルール式を、決済処理の IP アドレスまたはユーザーエージェントに一致するように設定します。
- アクションを Skip にし、Super Bot Fight Mode を選択します。
Bot Management アドオン付きの Enterprise プランが、最も柔軟です。
- DDoS protection は自動的に動作します。
- Bot Management は、すべてのリクエストで bot score を生成します。
cf.bot_management.scoreを参照するカスタムルールを作成し、独自のしきい値を定義します。たとえば、Web サイトのパスでは bot score が 30 未満のリクエストをブロックし、認証済みパートナーが使う API パスではすべてのスコアを許可します。- 不正なトラフィックパターンを抑制するには、レート制限ルールを使います。
- 既知の脆弱性から守るには、Managed Rules をデプロイします。
セキュリティ機能が正当なトラフィックを妨げる場合は、次の手順で原因を特定し、解消します。
リクエストをブロックした機能の特定には Security Events を使います。
-
Cloudflare ダッシュボードで Analytics ページを開きます。
Analytics を開く ↗ -
Events タブを選択します。
-
ログ内でブロックされたリクエストを見つけます。
-
Service フィールドを確認し、どのプロダクトがアクションを取ったかを判断します。このフィールドで、調整する機能が分かります。
Bot Fight Mode は例外に対応していません。選択肢は次の 2 つです。
- Security > Settings で Bot Fight Mode を完全にオフにします。
- Skip ルールに対応する Super Bot Fight Mode 付きのプランへアップグレードします。
詳細は Bot Fight Mode または Super Bot Fight Mode の誤検知を処理する を参照してください。
影響を受けるトラフィックで SBFM をバイパスするには、Skip アクションのカスタムルールを作成します。
-
Cloudflare ダッシュボードで Security rules ページを開きます。
Security rules を開く ↗ -
Create rule > Custom rules を選択します。
-
正当なトラフィックに一致する式を定義します(特定の IP 範囲やユーザーエージェントなど)。
-
アクションを Skip にし、Super Bot Fight Mode を選択します。
詳細は Bot Fight Mode または Super Bot Fight Mode の誤検知を処理する を参照してください。
マネージドルールが正当なトラフィックをブロックする場合は、次を行います。
- 一致するリクエストに対して特定のルールまたはルールセットをスキップする WAF 例外 を作成します。
- アプリケーションに当てはまらない場合は、マネージドルールセット内の個別ルールを無効にします。
詳しい手順は マネージドルールのトラブルシューティング を参照してください。