アプリケーションセキュリティ 推奨事項
Cloudflare WAF & Application Security

Webアプリケーション
セキュリティの推奨事項

Cloudflare 202Cloudflare 101 入門ガイドの次のステップとして、WAF・Rate Limiting・Bot Management・API Shieldなど、レイヤー7(L7)アプリケーションセキュリティの実践的な推奨事項とベストプラクティスを網羅的に解説します。

WAF Rate Limiting Bot Management API Shield Turnstile mTLS Page Shield SSL/TLS
📅 最終更新:2026年5月 | WAF Changelog 対応済み
多層防御アーキテクチャ リクエスト評価順序(上から下へ) 1 L7 DDoS Protection 自動軽減(常時稼働) 2 WAF Custom Rules 許可リスト・早期ブロック 3 Rate Limiting トラフィック制限 4 WAF Managed Rules OWASP・シグネチャ検知 5 Bot Mgmt / Turnstile チャレンジ・検証 オリジンサーバー
⚠️
免責事項:これらはあくまで一般的なガイドラインであり、利用ケースやトラフィックの種類など、さまざまな要因によって有用性が異なります。推奨事項は顧客ごとの要件・ニーズに応じて調整が必要です。設定の実施およびその影響については、顧客自身の責任となります。一部の機能は Advanced Application Security Bundle (WAF Advanced, Advanced Rate Limiting) や Enterprise Bot Management などのエンタープライズ向け機能でのみ利用可能です。
👋

はじめる前に — 基本概念とセットアップ順序

🔑 主要用語の解説

🌐 ゾーン (Zone)

Cloudflareに登録されたドメイン(例:example.com)の単位。WAFなどすべてのルールはゾーン単位で管理されます。ダッシュボード左上のドメイン選択でゾーンを切り替えます。

📋 ルールセット (Ruleset)

複数のルールをまとめたグループ。Cloudflareが管理する「マネージドルールセット」と、自分で作成する「カスタムルール」があります。

⚡ アクション (Action)

  • BLOCK — リクエストを遮断。デフォルトで HTTP 403 を返す
  • LOG — 記録のみ(遮断しない)
  • SKIP — 以降のWAFルール処理をバイパス
  • CHALLENGE / MANAGED CHALLENGE — ブラウザ上で人間確認
  • Rate Limiting BLOCK — 閾値超過時に HTTP 429 を返す

📊 Security Events

WAFルールにマッチしたリクエストのログ。Security › Events から確認できます。ルールが意図通り動いているか確認する際の最重要ツールです。

🔢 WAF攻撃スコア

1〜99の数値1に近いほど攻撃の可能性が高く、99に近いほど正常なリクエスト。cf.waf.score lt 30 は「攻撃の可能性が高いリクエスト」を指します。

🤖 ボットスコア

1〜99の数値1に近いほど自動化ボットの可能性が高く、99に近いほど人間。cf.bot_management.score lt 30 は「ボットである可能性が高いリクエスト」を指します。Enterprise Add-on

📋 推奨セットアップ順序

💡 新規ユーザーは必ず まずLOGモードで有効化 → Security Eventsで動作確認 → BLOCKモードへ移行 というステップを踏んでください。いきなりBLOCKで有効化すると正当なトラフィックを誤ってブロックするリスクがあります。

📦 機能別プラン要件

機能必要プラン該当セクション
WAF マネージドルール・カスタムルール(基本)Pro以上, 2.x
WAF 攻撃スコア (cf.waf.score)Enterprise(全顧客)2.4, 2.13
Advanced Rate LimitingEnterprise Add-on3.x (一部)
Bot Management (cf.bot_management.score)Enterprise Add-on2.14, 2.15, 2.17
Leaked Credentials DetectionEnterprise(全顧客)3.4
Page ShieldBusiness以上4.2
Turnstile(基本)Free4.1

🛡️ セキュリティ用語集(入門向け)

Security SQLi(SQLインジェクション)
危険度:🔴 高 攻撃者が悪意のあるSQLコードをWebフォームなどから送信し、データベースを不正操作する攻撃。顧客情報の窃取やデータ改ざんに繋がる。WAFマネージドルールで自動検出・ブロック可能。
Security XSS(クロスサイトスクリプティング)
危険度:🔴 高 攻撃者が悪意のあるJavaScriptをWebページに埋め込み、ユーザーのブラウザで実行させる攻撃。Cookie窃取やフィッシング詐欺に利用される。Rule ID: 882b37d6... で検出。
Security RCE(リモートコード実行)
危険度:🔴 極めて高 攻撃者がサーバー上で任意のコードを実行できる脆弱性。サーバー完全乗っ取りに繋がる最も危険な攻撃の一つ。WAF攻撃スコア(cf.waf.score.rce)で検出。
Cloudflare JA3フィンガープリント
TLS接続時のクライアント特性(暗号化方式・拡張機能等)をハッシュ化した文字列。同じツールは同じJA3値を生成するため、自動化ボットの識別に有効。フィールド: cf.bot_management.ja3_hash
Cloudflare JA4フィンガープリント
JA3の改良版。TLS接続とHTTPヘッダー情報を組み合わせたより詳細なクライアント識別を実現。TLS 1.3やQUICプロトコルにも対応し、より正確なボット・ツール検出が可能。フィールド: cf.bot_management.ja4
Cloudflare mTLS(相互TLS認証)
通常のTLSではサーバーのみが証明書を提示するが、mTLSではクライアントも証明書を提示して双方向認証を行う。APIアクセスやデバイス認証の強化に使用。Section 2.12参照。
API JWT(JSON Web Token)
APIの認証・認可に使用されるトークン形式。ヘッダー・ペイロード・署名の3部構成。ペイロード部分にユーザー情報(role等)を含むため、WAFルールで内容をチェック可能。Section 2.13参照。
セクション 1

WAF Managed Rules

Cloudflareが管理するルールセットを利用して既知の攻撃パターンを自動的にブロック
01
1.1

WAF Managed Rulesのデプロイ

マネージドルールセットはゾーン全体に適用する前に簡単にレビューを行い、その後デプロイすることが広く推奨されています。必要に応じて、特定の例外ルールを作成してください。

📋 入門向け:ステップバイステップ設定手順

Cloudflareダッシュボードにログイン

保護したいドメイン(ゾーン)を選択します。

Security › WAF › Managed rules を開く

左側メニューから SecurityWAFManaged rules の順にクリックします。

"Deploy managed ruleset" をクリック

Cloudflare Managed Ruleset の Deploy ボタンをクリックします。

アクションを "Log" に設定

重要:最初は必ず Log を選択してください。いきなり Block にすると正当なトラフィックを誤ってブロックする可能性があります。

Payload logging を有効化

ルールにマッチしたリクエストの詳細な内容を記録するため、Payload logging を有効にします。これにより、誤検知の診断やルールの動作確認が容易になります。

Deploy ボタンをクリックして保存

設定を保存すると、WAFが有効化されます(まだブロックはしません)。

Security › Events で動作確認(3日〜1週間)

Security Events 画面で「どのルールが発動したか」「誤検知がないか」を確認します。

必要に応じて例外ルールを追加

誤検知があれば、該当ルールに対して例外(Exception)を作成します。

アクションを "Block" に切り替え

誤検知がないことを確認したら、ルールセットのアクションを Block に変更します。これで攻撃を実際にブロックするようになります。

WAF マネージドルールセットのデプロイ設定例
WAF マネージドルールセットのデプロイ設定例
⚠️
アカウントレベル vs ゾーンレベルのWAF:
Cloudflareには2種類のWAFマネージドルールがあります。
  • アカウントレベル:Cloudflareダッシュボードの Account Home › Application Security › WAF で設定。アカウント内の全ゾーンに一括適用できます。
  • ゾーンレベル:各ゾーンの Security › WAF › Managed rules で設定。そのドメイン専用の設定です。
両方を同時に有効化するとルールが二重に適用され、意図しないブロックが発生する可能性があります。可能であればアカウントレベルのみを使用してください。
📋
WAFブロック時のHTTPレスポンスコード: WAFがリクエストをBLOCKした場合、デフォルトで HTTP 403 Forbidden が返されます。Rate Limitingルールが発動した場合は HTTP 429 Too Many Requests が返されます。カスタムレスポンスを設定することでステータスコードやレスポンスボディをカスタマイズできます。

参考: Cloudflare マネージドルールセット | Security Events

1.2

WAF Managed Rule の推奨設定

Cloudflare WAF Managed Rulesは、数千のルールで構成されており、各ルールには固有のRule IDタグ(攻撃タイプ・カテゴリ)説明が付与されています。デフォルトでコアルールセットが有効化されていますが、追加の、そしてより厳格なセキュリティ対策が必要な場合は、以下の推奨ルールの一部またはすべてをデプロイすることを検討してください:

💡
ルールの構造:
  • Ruleset ID:ルールセット全体を識別するID(例: efb7b8c949ac4650a09736fc376e9aee = Cloudflare Managed Ruleset)。API経由でルールセットを操作する際に使用。
  • Rule ID:各ルールに割り当てられた32文字の一意の識別子(例: 882b37d6bd5f4bf2a3cdb374d503ded0)。カスタムルールでの例外設定や上書きに使用。
  • Action(アクション):ルールがマッチした際の動作。Block(ブロック)、Managed Challenge(Cloudflare Challengeを表示)、Log(記録のみ)、JS Challenge(JavaScript Challengeを表示)、Skip(後続ルールをスキップ)など。
  • Version(バージョン):ルールセットのバージョン番号(例: version: 1version: 2)。Cloudflareによるルール更新だけでなく、ユーザーがアクションを変更したり、ルールの有効/無効を切り替えた場合にも新しいバージョンが作成される。
  • タグ:攻撃タイプ(xsssqlirceなど)やカテゴリ(paranoia-level-1など)でグループ化。タグ単位での一括制御が可能。
  • 説明(Description):ルールが検出する攻撃パターンや推奨アクションの詳細説明(例: "XSS, HTML Injection" → クロスサイトスクリプティング攻撃を検出)。
カテゴリルール名Rule ID推奨アクション説明・注意点
🔴 XSS / インジェクション XSS, HTML Injection 882b37d6bd5f4bf2a3cdb374d503ded0 MANAGED CHALLENGE クロスサイトスクリプティング・HTMLインジェクション攻撃を検出。Managed Challenge推奨(正当なトラフィックへの影響を最小化)。まずLOGで影響確認を推奨。
🟠 URLパス異常 Anomaly:URL:Path - Multiple Slashes 6e759e70dc814d90a003f10424644cfb MANAGED CHALLENGE URLパスの異常(複数スラッシュ、相対パス、CR/LF/NULLバイト)を検出。一部フレームワークで正当なパターンの可能性あり。Managed Challenge推奨。
🟠 大容量ボディ Anomaly:Body - Large ee922cf00077462d9f2f7330b114b839 BLOCK 処理上限を超えるボディペイロードを軽減。ファイルアップロードエンドポイントには必ず例外設定を追加すること。
🟡 非標準ポート Anomaly:Port - Non Standard Port 8e361ee4328f4a3caf6caf3e664ed6fe MANAGED CHALLENGE 80・443以外の非標準ポートへのリクエストを検出。一部アプリケーションで正当に使用される場合あり。Managed Challenge推奨。
🟡 異常HTTPメソッド Anomaly:Method - Unusual HTTP Method ab53f93c9b03472ab34a5405d9bdc7d5 MANAGED CHALLENGE CONNECT・TRACE等の通常使用されないHTTPメソッドを検出。REST APIや一部プロキシで正当に使用される場合あり。Managed Challenge推奨。例外設定も検討。
🟡 不明HTTPメソッド Anomaly:Method - Unknown HTTP Method 6e2240ffcb87477bbd4881b6fd13142f BLOCK HTTPの仕様に存在しない不明なメソッドを検出。ほぼすべての環境でブロック推奨。
🔵 スキャナー検出 脆弱性スキャナー関連ルール(複数) LOG → BLOCK Nikto・Nessus等の脆弱性スキャナーを検出するすべてのルール群を有効化推奨。まずLOGで確認後にBLOCKへ移行。
📖 マッチしたルールのペイロードをログに記録し、ルールの動作を診断する際の参考にしてください。暗号化されたペイロードはファイアウォールイベントログの「メタデータ」フィールドに記録されます。ペイロードを復号化して実際の内容を確認するには、設定時に生成した秘密鍵(private key)が必要です。
WAF Payload Logging
WAF Payload Logging — ペイロード記録の設定例
📅 最新のルール情報:Cloudflare WAFは定期的に新しいルールが追加され、既存のルールも改善されています。WAF Changelogで最新の変更内容を確認し、新しく追加された推奨ルールのデプロイを検討してください。特にゼロデイ脆弱性や新たな攻撃パターンに対応するルールは優先的に有効化することをお勧めします。
1.3

OWASP Core Ruleset のデプロイ

OWASPコア・ルールセットは、SQLインジェクション・XSS・コマンドインジェクションなど幅広い攻撃パターンに対応するルールセットです。ただし、誤検知が発生しやすいため、段階的なアプローチでデプロイすることを強く推奨します。

OWASP Core Ruleset 設定画面
OWASP Core Ruleset 設定画面
💡
OWASPスコアリングの仕組み:
各ルールがマッチするたびに 5点 が累積加算されます。設定した閾値に達すると、指定したアクション(Log/Block)が実行されます:
  • Medium感度(閾値: 40点) → 8個のルールマッチで実行(5点 × 8 = 40点)
  • Low感度(閾値: 60点) → 12個のルールマッチで実行(5点 × 12 = 60点)
推奨:誤検知を最小限に抑えるため、Low感度(60点)から開始してください。観測期間(1〜2週間)で問題がなければ、Medium感度に引き上げることができます。

🎚️ 推奨設定:感度レベル(Sensitivity Level)

  • Low(スコア閾値: 60) — 最初はここから開始することを推奨。誤検知リスクが最も低い。
  • Medium(スコア閾値: 40) — Lowで安定稼働を確認後、必要に応じて段階的に引き上げる。
  • High(スコア閾値: 20) — 誤検知リスクが高いため、十分なテストと例外ルールの設定が必要。

💡 ヒント:スコアが低いほど攻撃の可能性が高いことを示します。High (20) は攻撃の可能性がより高いトラフィックもブロックします。

📋 推奨設定:スコアしきい値(Paranoia Level)

  • Paranoia Level 1(PL1):デフォルト。誤検知が最も少なく、最初のデプロイに最適。
  • PL2以上は徐々に有効化し、例外設定を整備してから適用すること。
  • スコアしきい値は 25以上 から始め、様子を見て下げていくアプローチを推奨。
💡 推奨デプロイ手順: まず Log モード で有効化し、セキュリティイベントで誤検知を確認してから Block モード に移行してください。いきなりBlockモードでデプロイすると、正当なトラフィックを誤ってブロックするリスクがあります。
1.4

WAF Attack Score

WAF Attack Scoreは、Cloudflareの機械学習モデルが各リクエストに割り当てる攻撃可能性スコア(1-99)です。従来のシグネチャベースルール(Managed Rules)を置き換えるものではなく、補完するもので、ゼロデイ攻撃や難読化された攻撃など、Managed Rulesが捕捉できない攻撃のバリエーションを検出します。

⚙️ 設定場所: Attack Scoreの閾値設定はWAF Custom Rulesで行います(Managed Rulesでは設定できません)。Attack ScoreとBot Scoreは異なるMLモデルを使用し、それぞれ異なる目的を持ちます:

🛡️ WAF Attack Score

攻撃の種類を特定
WAF Managed Rulesが捕捉できない攻撃のバリエーション(ゼロデイ、難読化、未知のパターン)を検出

🤖 Bot Score

自動化トラフィックを特定
リクエストが人間からか自動化ボットからかを判定(攻撃性の有無は関係なし)

WAF Attack Score フィールド
WAF Attack Score フィールド
⚠️
スコアの読み方
スコアが低いほど攻撃の可能性が高くなります:
  • 🔴 1-20 = 攻撃トラフィック(高リスク)— ブロック推奨
  • 🟡 21-40 = 疑わしいトラフィック(中リスク)— チャレンジ推奨
  • 🟢 41-99 = 正常なトラフィック(低リスク)— 通過

3つのサブスコア

フィールド対象攻撃
cf.waf.score総合スコア (すべての攻撃タイプ)
cf.waf.score.sqliSQLインジェクション
cf.waf.score.xssクロスサイトスクリプティング
cf.waf.score.rceリモートコード実行

設定アプローチ

Phase 1: 観察モード

Attack Score Custom Rule 設定例
Attack Score Custom Rule 設定例(観察モード)

上記の例では、Attack Scoreが20以下のトラフィックをフィルタリングして分析しています。過去24時間で618リクエストがあり、そのうち414件が悪意のあるリクエストでOriginに到達しています。これらはWAF Managed Rulesや他のApp Securityフィーチャーで防げなかったトラフィックです。

Security Eventsで確認すべき項目:

  • 攻撃対象のパス・エンドポイント(どのURLが狙われているか)
  • 送信元の国・地域(地理的な攻撃パターンの特定)
  • User-Agent・IPアドレス(ボットネットや既知の攻撃ツールの検出)
  • スコアが20以下のトラフィックの共通点(閾値の妥当性を検証)

Phase 2: ログの調査

Attack Score ログ詳細
Attack Score ログ詳細

上記のログ例では、Attack Score = 1(攻撃)、SQLインジェクション サブスコア = 2 となっています。このスコアから、このリクエストはSQLインジェクション攻撃の可能性が非常に高いと判定できます。

スコア解釈のポイント:

  • 総合スコアが1 = 攻撃確実(最高リスク)
  • SQLiサブスコアが2 = SQLインジェクション攻撃として検出
  • 総合スコアとサブスコアを組み合わせて、攻撃の種類と信頼度を判断
  • このようなログパターンを見つけたら、即座にCustom Ruleでブロックまたはチャレンジを検討

Phase 3: ブロックモード (高リスク)

Attack Score ブロックルール設定
Attack Score ブロックルール設定

スコア20未満の高リスクトラフィックを即座にブロック

サブスコアを使った精密な保護

Block SQLi on search endpoint BLOCK
http.request.uri.path contains "/api/search" and cf.waf.score.sqli lt 20

用途: データベースクエリを含むエンドポイントでSQLインジェクションを厳格にブロック(高リスクトラフィック = スコア1-20)

Block XSS on comment submission BLOCK
http.request.uri.path eq "/comment/submit" and cf.waf.score.xss lt 20

用途: ユーザー入力を表示するエンドポイントでXSSを防止(高リスクトラフィック = スコア1-20)

💡 ベストプラクティス: エンドポイント別に閾値を調整し、LOGモードで最低1週間検証してからBLOCKに移行してください。月次レビューで誤検知・漏れを確認し、ビジネス要件の変化に合わせて調整することを推奨します。

参考: WAF attack score documentation

セクション 2

WAF Custom Rules

カスタムルールでビジネス固有のセキュリティポリシーを実装 — Security › WAF › Custom rules
02

このセクションでは、検証済みボットの許可、API保護、地域ブロック、ログイン保護など、実際のユースケースごとにカスタムルールの設定方法をスクリーンショット付きで解説します。Expression Builder(式ビルダー)の使い方も含まれています。

2.1

検証済みボットの許可

一般的に、カスタムルールの中でも最上位に近い位置に、検証済みボット(GoogleBotなどの検索エンジンクローラー)を許可するSKIPカスタムルールを設定することが推奨されています。cf.client.bot はCloudflareが検証した正規のボット(Googlebot・Bingbotなど)を示すフィールドで、悪意のあるボットは含まれません。
📌 SKIPアクションはマッチしたリクエストに対して以降のWAFルール処理をバイパスします。BLOCKとは逆で「通過させる」アクションです。ルールは上から順に評価されるため、このルールは必ずリスト最上位に置いてください。

Allow Verified Bots SKIP

式の例:

cf.client.bot

→ ルール処理をスキップし、検証済みボットを通過させます。

Allow Verified Bots — ルール設定例
Allow Verified Bots — ルール設定例

参考: Verified Bots

2.2

APIの許可

信頼できるAPI(決済コールバックやPreRender IOなど)からのアクセスを許可するために、できるだけ具体的で多くのフィールドを使用したSKIPカスタムルールを、最上位のカスタムルールとして設定することが一般的に推奨されています。

💡 これはAPI Shieldを導入することで、ポジティブセキュリティモデルを追求するための最終目標となります。
Allow APIs — SKIPカスタムルール設定例
Allow APIs — SKIPカスタムルール設定例

参考: API Shield

2.3

フォールスルーAPIリクエストのブロック

ポジティブセキュリティモデルを真に適用するためには、API Shieldで管理されているエンドポイントのいずれにも一致しないリクエストのフォールスルーアクションに対して、WAFカスタムルールを作成してください。

Block Fallthrough API Requests BLOCK
cf.api_gateway.fallthrough_enabled and not cf.api_gateway.match
Block Fallthrough API Requests — ルール設定例
Block Fallthrough API Requests — ルール設定例

参考: Schema Validation

2.4

悪意のあるペイロードの軽減 Enterprise

ペイロードを持つすべてのHTTPリクエストはWAF攻撃スコアを受け取ります。これはSQLインジェクション、XSS、またはRCE攻撃に関連する悪意のあるものが含まれている可能性を示します。

📖 WAF攻撃スコア (cf.waf.score) の見方: スコアは 1〜99 の数値で、1に近いほど攻撃の可能性が高いリクエストです。lt 30(30未満)は「高い確率で攻撃」を意味します。スコアは SQLi・XSS・RCE のカテゴリごとにも提供されます(cf.waf.score.sqli など)。
⚠️ まずLOGモードで確認してください。WAF攻撃スコアは正当なリクエストに対しても誤検知が発生することがあります。最初は BLOCK の代わりに LOG アクションで設定し、Security Eventsで影響範囲を確認してからBLOCKに切り替えてください。
Mitigate likely Malicious Payloads BLOCK
cf.waf.score lt 30 and http.request.method in {"POST" "PUT" "PATCH"}
Mitigate likely Malicious Payloads — WAF攻撃スコア設定例
Mitigate likely Malicious Payloads — WAF攻撃スコア設定例

参考: WAF attack score

2.5

プロキシ・アノニマイザー・VPN・マルウェア・ボットネットの軽減

Cloudflareが管理するIPリスト(独自のカスタムリストを含む)を使用することで、これらのIPカテゴリに対してどのような処理を行うかを決定できます。一般的には、ボットネットやマルウェアをブロックしたいと考えるでしょう。

🚫 ボットネット・マルウェア → BLOCK

Cloudflare Managed Lists のボットネット・マルウェアカテゴリからのトラフィックは完全にブロックすることを推奨。

⚡ VPN・アノニマイザー → CHALLENGE

VPN・オープンプロキシからのトラフィックはユースケースに応じてチャレンジまたはブロックを検討。

Managed IP Lists — プロキシ・ボットネット軽減設定例
Managed IP Lists — プロキシ・ボットネット軽減設定例

参考: Managed IP Lists

2.6

IPリスト(ブラックリスト・ホワイトリスト)

Cloudflareが管理するIPリスト(Managed IP Lists)に加えて、顧客がアップロードしたカスタムIPリストを使用してトラフィックを制御できます。ブラックリストとして特定のIPアドレスをブロックしたり、ホワイトリストとして信頼できるIPアドレスを許可したりすることが可能です。

🚫 ブラックリスト(ブロック)

攻撃元IPや不正アクセスIPをリスト化してブロック。Security › WAF › Tools › Lists からIPリストを作成・管理できます。

✅ ホワイトリスト(許可)

信頼できるIPアドレス(社内IP、パートナーIPなど)をリスト化して優先的に許可。

Block Blacklisted IPs BLOCK
ip.src in $blacklist_ips

$blacklist_ips は Security › WAF › Tools › Lists で作成したカスタムIPリストの名前です。

IP Lists management interface

参考: Custom Lists

2.7

Torトラフィックの軽減

Torトラフィック(匿名通信を可能にするオーバーレイネットワーク)が不要な場合は、単にそれを軽減することができます。この場合、オニオンルーティングも無効にしてください。

Mitigate Tor Traffic BLOCK
ip.src in $cf.anonymizer
Mitigate Tor Traffic — ルール設定例
Mitigate Tor Traffic — ルール設定例

参考: Onion Routing and Tor support

2.8

不要なASNの軽減

📖
ASN(自律システム番号)とは?
ASN(Autonomous System Number)はインターネット上のネットワーク(ISP、クラウドプロバイダー、企業など)に割り当てられた一意の番号です。
なぜクラウドプロバイダーのASNをブロックするのか? 攻撃者はAWS・Azure・GCPなどのクラウドインフラからサーバーを起動して攻撃することが多いため、業務上クラウドからのAPIコールが不要な場合はブロックが有効です。ただし、自社システムがクラウドを使用している場合は適用しないこと。
ASNリストは Security › WAF › Tools › Lists で作成・管理できます。

AWS、Azure、GCPなどのクラウドASNs、またはトラフィックを期待しないその他のASNsからの不要なトラフィックは、軽減したいと考えるかもしれません。これらを簡単に管理するには、ASNsを含むリストを使用してください。

Mitigate unwanted ASNs BLOCK
ip.geoip.asnum in $unwanted_asns_list
Mitigate unwanted ASNs — カスタムASNリスト設定例
Mitigate unwanted ASNs — カスタムASNリスト設定例

参考: Custom Lists

2.9

高リスク国のブロック

高リスク国、例えばOFACの公式リストに掲載されている国は、より高い脅威をもたらす可能性があるためブロックしてください。あるいは、完全にブロックする代わりに、マネージドチャレンジを設定することもできます。

Block High Risk Countries BLOCK
ip.src.country in {"KP" "IR" "SY" "CU"}

国コードはOFACリストなどを参照して適宜調整してください。

Block High Risk Countries — 高リスク国ブロック設定例
Block High Risk Countries — 高リスク国ブロック設定例

参考: Sanctions List Search

2.10

既知のボットUser-Agentのブロック

cURL、go-http-client、あるいは空のユーザーエージェントなど、ボットによって使用されることが知られている不要なユーザーエージェントからのリクエストをブロックします。

Block known Bot User-Agents BLOCK
http.user_agent contains "curl" or http.user_agent contains "Go-http-client" or http.user_agent eq "" or not http.user_agent exists
Block known Bot User-Agents — 悪意のあるUAブロック設定例
Block known Bot User-Agents — 悪意のあるUAブロック設定例

参考: Challenge bad bots

2.11

WP Admin ダッシュボードアクセスの制限

WordPressを使用している場合、/wp-adminへのアクセスを従業員や管理者の特定の静的ソースIPアドレスのみに制限するか、あるいはCloudflare Accessを使用してゼロトラストのアプローチを選択してください。

Restrict WP Admin Dashboard Access BLOCK
http.request.uri.path contains "/wp-admin" and not ip.src in {203.0.113.10 203.0.113.20}
Restrict WP Admin Dashboard Access — WP管理アクセス制限例
Restrict WP Admin Dashboard Access — WP管理アクセス制限例

参考: Allow traffic from IP addresses in allowlist only

2.12

従業員専用アクセスの制限

従業員ポータルやエクストラネットがある場合、従業員が所在する国にアクセスを制限するか、またはゼロトラストのアプローチを選択することをお勧めします。

Restrict Access to Employees Only BLOCK
http.request.uri.path contains "/employee-portal" and not ip.src.country in {"JP" "US"}
Restrict Access to Employees Only — 従業員専用アクセス設定例
Restrict Access to Employees Only — 従業員専用アクセス設定例

参考: Allow traffic from specific countries only

2.13

Mutual TLS 認証

特定のホスト名で相互TLS(mTLS)認証用の有効なクライアント証明書を持たないすべてのリクエストをブロックします。

Block requests without valid mTLS client certificate BLOCK
http.host eq "api.example.com" and not cf.tls_client_auth.cert_verified
Mutual TLS Authentication — mTLSルール設定例
Mutual TLS Authentication — mTLSルール設定例
Mutual TLS Authentication — 失効証明書チェック
Mutual TLS Authentication — 失効証明書チェック
Mutual TLS Authentication — 証明書シリアル番号による制御
Mutual TLS Authentication — 証明書シリアル番号による制御
📖 さらに、デフォルトのCloudflareマネージドCAで生成されたクライアント証明書が失効していないかを確認し、失効している場合はそれらをブロックすることも推奨されます。また、特定のmTLSホスト名をクライアント証明書のシリアル番号(cf.tls_client_auth.cert_serial)と関連付けることで、よりきめ細かい制御が可能になります。

参考: Cloudflare PKI | API Shield mTLS | Learning Path: mTLS

🔗 この機能と組み合わせると効果的:
  • JWT検証 — mTLS(デバイス認証) + JWT(ユーザー認証)で二要素API保護を実現 → Section 2.13参照
  • API Shield — 証明書ベースの認証とスキーマ検証を組み合わせてAPI保護を強化 → Section 4.5参照
2.14

ユーザー固有のJWTクレーム軽減

JSON Webトークン(JWT)に依存するAPIエンドポイントのセキュリティを強化するために、ユーザークレームなどの特定のJWTクレームをターゲットとするルールを作成できます。

💡 この例では、ユーザークレームに基づいて管理者ユーザーからのリクエストがWAF攻撃スコアに基づいて潜在的に悪意があるとフラグ付けされたリクエストにチャレンジします。
Issue challenge for admin user in JWT claim CHALLENGE
http.request.uri.path contains "/api/" and lookup_json_string(http.request.headers["authorization"][0], "$.role") eq "admin" and cf.waf.score lt 60
User-Specific JWT Claim Mitigation — JWT設定例
User-Specific JWT Claim Mitigation — JWT設定例

参考: Issue challenge for admin user in JWT claim based on attack score

🔗 この機能と組み合わせると効果的:
  • mTLS — mTLS(デバイス認証) + JWT(ユーザー認証)で二要素API保護を実現 → Section 2.12参照
  • Rate Limiting — JWT内の特定のクレーム(例: ユーザーロール)に基づいて動的にレート制限を調整 → Section 3.1参照
2.15

自動化されたボットトラフィックの可視化

📋
Bot Management vs Super Bot Fight Mode — 機能比較
機能Super Bot Fight Mode
(Pro / Biz 標準)
Bot Management
(Enterprise アドオン)
ボットスコア(1〜99)✅ 利用可能
カスタムルールでのスコア活用cf.bot_management.score
JavaScript検出(JSD)✅ 利用可能
機械学習ベースの検出限定的✅ フルアクセス
検証済みボットの許可
ボットアナリティクス限定的✅ 詳細アナリティクス
契約形態プランに含まれるEnterpriseアドオン契約が必要

⚠️ cf.bot_management.score などのBot Management変数を使用するカスタムルールは、Bot Management アドオン契約が必要です。Super Bot Fight Mode では使用できません。詳細はアカウントチームにご確認ください。

一般的に、自動化されたトラフィックの可視性を確保したいと考えるでしょう。これは通常、ボットスコアが自動化されている可能性が高いものをすべてログに記録するLOGアクションによって実現できます。

📊
ボットスコアの読み方(重要):
ボットスコアは 1〜99 の数値で、数字が小さいほど自動化ボットである可能性が高いことを示します。
  • スコア 1〜29:ほぼ確実に自動化ボット
  • スコア 30〜79:疑わしいトラフィック(要注意)
  • スコア 80〜99:人間である可能性が高い
代表的なボット例:
  • 🤖 スクレイピングボット - コンテンツや価格情報を自動収集
  • 🤖 AIクローラー - ChatGPT等のAI学習データ収集
  • 🛒 在庫買い占めボット - 限定商品を自動購入(転売目的)
  • 🎫 チケット転売ボット - コンサート・イベントチケットを大量購入
  • 💳 カード情報試行ボット - 盗難カード番号の有効性確認
Visibility into Automated Bot Traffic LOG
cf.bot_management.score lt 30

意味:ボットスコアが30未満のリクエストをログに記録します。
推奨:まずはLOGアクションで影響範囲を確認してから、BLOCKへ移行してください。

Visibility into Automated Bot Traffic — ボットトラフィック可視化設定例
Visibility into Automated Bot Traffic — ボットトラフィック可視化設定例

参考: Bot Management variables

🔗 この機能と組み合わせると効果的:
  • Rate Limiting — ボットスコア30以下に対してレート制限を強化
    cf.bot_management.score lt 30 → 10 req/min → Section 3.1参照
  • Turnstile — 低スコアボットにチャレンジを表示し、人間であることを確認 → Section 4.2参照
2.16

JavaScript検出による偽ブラウザの軽減

BotScoreだけでは人間とボットを確実に区別できないシナリオでは、オプションでJavaScript検出(JSD)を有効にすることで検出を強化できます。

⚠️
重要な制限事項:
  • JSDはHTMLレスポンスにのみ適用でき、ルート/最初のHTMLリクエストには適用できません。
  • 正当なトラフィックへの影響を避けるため、ルールを強制する前にLOGアクションでテストしてください。
  • このルールは重要なパスにのみ適用し、JSがまだ注入されていない可能性のある初期ランディングページには適用しないでください。
Mitigating Pretend-Browsers with JSD MANAGED CHALLENGE
cf.bot_management.score lt 30 and not cf.bot_management.js_detection.passed
Mitigating Pretend-Browsers with JSD — JavaScript検出設定例
Mitigating Pretend-Browsers with JSD — JavaScript検出設定例

参考: Enforcing execution of JavaScript detections

2.17

IPv6 IPの可視化

ほとんどのWebアプリケーションはIPv6アドレス経由で利用可能であることを望んでいます。しかし、IPv6が不要な場合、顧客はWAFを介してIPv6 IPを軽減し、必要に応じてIPv6互換性を無効にすることもできます。

Block or Log IPv6 IPs BLOCK / LOG
ip.src.isipv6
Visibility into IPv6 IPs — IPv6可視化設定例
Visibility into IPv6 IPs — IPv6可視化設定例

参考: IPv6 compatibility

2.18

アカウント乗っ取り(ATO)検出

ログイン失敗などの予測可能なボットの挙動を検知・軽減するために、検知IDを使用できます。これはレート制限ルールでも利用可能です。

🔐 ATO検出はTurnstileと組み合わせることで、より強固な保護が実現できます。
Account Takeover (ATO) Detections — アカウント乗っ取り検出設定例
Account Takeover (ATO) Detections — アカウント乗っ取り検出設定例

参考: Account takeover detections

2.19

サインアップ時の使い捨てメール対策

ユーザーが既知の使い捨てメールアドレスでサインアップするのを防ぐため、Cloudflareの使い捨てメールチェック機能でこの挙動を簡単に確認でき、顧客はこれをブロック、チャレンジ、ログ記録、レート制限、さらにはオリジンサーバーへのリクエストヘッダー追加など、どう処理するかを決定できます。

Mitigate Disposable Emails on SignUps BLOCK
http.request.uri.path contains "/signup" and cf.email_intelligence.disposable
Mitigate Disposable Emails — 使い捨てメール検出設定例
Mitigate Disposable Emails — 使い捨てメール検出設定例
Mitigate Disposable Emails — 別の検出設定例
Mitigate Disposable Emails — 別の検出設定例

参考: Cloudflare Fraud Detection

2.20

時間ベースのルール

時間ベースのルールでは、http.request.timestamp.secフィールドを活用して、特定の時間帯に基づいてロジックを適用できます。たとえば、定義された時間枠内で特定のエンドポイントへのすべてのPOSTまたはPUTリクエストをブロックすることができます。

Block POST/PUT outside business hours BLOCK
http.request.method in {"POST" "PUT"} and http.request.uri.path contains "/api/admin" and not (http.request.timestamp.sec % 86400 >= 32400 and http.request.timestamp.sec % 86400 < 54000)

注:タイムスタンプはUNIX時間で表現され、10桁の値で構成されます(UTC基準)。
上記の例は UTC 09:00〜15:00(= JST 18:00〜24:00)を「業務時間内」として扱っています。
JST(UTC+9)で9時〜18時を業務時間とする場合の計算: JST 9:00 = UTC 0:00 → 秒数: 0、JST 18:00 = UTC 9:00 → 秒数: 32400
したがって JST 9:00〜18:00 の業務時間内ルールは: % 86400 >= 0 and % 86400 < 32400

Time-based Rules — 時間ベースのルール設定例
Time-based Rules — 時間ベースのルール設定例

参考: http.request.timestamp.sec フィールド

2.21

不正なCloudflare Workersの軽減

CF-Workerリクエストヘッダーは、Cloudflare WorkersのサブクエストによってFetch APIを使用する際の元のホストを識別します。

⚠️ CF-WorkerはWAFカスタムルールでは使用しないでください。代わりに、同じ値を持つcf.worker.upstream_zoneを使用してください。
Block a specific Worker BLOCK
cf.worker.upstream_zone eq "example.com"
Block all Worker subrequests except own BLOCK
not (cf.worker.upstream_zone in {"" "your-zone.com"})
Mitigate Unauthorized Cloudflare Workers — Workers設定例
Mitigate Unauthorized Cloudflare Workers — Workers設定例

参考: CF-Connecting-IP in Worker subrequests

セクション 3

Rate Limiting Rules

レート制限により大量リクエストや認証攻撃からアプリケーションを保護
03
3.1

ログインへのIPベースのレート制限

同じIPアドレスからの複数のログイン試行からログインエンドポイントを保護するために、必要な特性に基づいてレート制限を設定します。

IP-based Rate Limiting for Logins BLOCK

式: http.request.uri.path eq "/login" and http.request.method eq "POST"

特性: ip.src

リクエスト数: 5 / 60秒(ユースケースに応じて調整)

IP-based Rate Limiting for Logins — ログインレート制限設定例
IP-based Rate Limiting for Logins — ログインレート制限設定例

参考: Rate limiting parameters

3.2

アップロードのレート制限

POST / PUT / PATCH メソッドを使用した過剰なアップロード/HTTPリクエストを防ぎます。

Rate Limiting Uploads BLOCK

式: http.request.method in {"POST" "PUT" "PATCH"}

特性: ip.src

リクエスト数: 100 / 60秒

Rate Limiting Uploads — アップロードレート制限設定例
Rate Limiting Uploads — アップロードレート制限設定例

参考: Standard fields

3.3

クレデンシャルスタッフィングのレート制限

クレデンシャルスタッフィング攻撃から保護するためには、一般的に多層防御のアプローチを採用することが推奨されます。このレート制限ルールは、複数のアプローチのうちの一例に過ぎません。

🎯 特性:JA3 フィンガープリント

同じTLSフィンガープリントを持つクライアントからのログイン試行を制限します。ツールを使用した攻撃の検出に有効。

🎯 特性:IP + User Agent

同じIPとUser Agentの組み合わせからのリクエストを制限します。より細かい制御が可能。

💡 まずはLOGアクションで適切なレート制限値を見つけてからブロックに移行することを推奨します。Find an appropriate rate limit を参照してください。
Rate Limit Credential Stuffing — クレデンシャルスタッフィング対策設定例
Rate Limit Credential Stuffing — クレデンシャルスタッフィング対策設定例

参考: Protecting against credential stuffing

3.4

疑わしいログインのレート制限

Have I been Pwned (HIBP)に基づき、漏洩した認証情報、特に漏洩したパスワードを使用した疑わしいログイン試行(認証イベント)に対して、レート制限を実装します。

Rate Limit Suspicious Logins BLOCK

式: cf.waf.credential_check.username_and_password_exposed

特性: ip.src

Rate Limit Suspicious Logins — 漏洩認証情報レート制限設定例
Rate Limit Suspicious Logins — 漏洩認証情報レート制限設定例

参考: Leaked credentials detection

3.5

地域ベースのレート制限

一般的に多くのトラフィックが来るとは予想されない市場がある場合、IPアドレスやその他の特性に基づいて、それらの国からのリクエストをレート制限することができます。

Geography-based Rate Limiting BLOCK

式: not ip.src.country in {"JP" "US" "SG"}

特性: ip.src

リクエスト数: 100 / 60秒(通常トラフィックより低い値に設定)

Geography-based Rate Limiting — 地域ベースのレート制限設定例
Geography-based Rate Limiting — 地域ベースのレート制限設定例

参考: Enforcing granular access control

3.6

IPv6ベースのレート制限

IPv6プレフィックス全体を保護するには、cidr6関数とプレフィックス長を指定して、カスタム特性でレートリミットを設定します。

IPv6-based Rate Limiting BLOCK

カスタム特性:

cidr6(ip.src, 64)

→ /64プレフィックス単位でカウントします。プレフィックス長は環境に応じて調整してください。

IPv6-based Rate Limiting — IPv6レート制限設定例
IPv6-based Rate Limiting — IPv6レート制限設定例

参考: Rules language

3.7

クライアント証明書ベースのレート制限

侵害される可能性のある証明書やデバイスの悪用を防ぐため、特定の期間内に同じクライアント証明書が複数回使用されることに基づいてレート制限を設けます。これはmTLS保護の一部です。

Client Certificate-based Rate Limiting BLOCK

カスタム特性:

cf.tls_client_auth.cert_fingerprint_sha256
Client Certificate-based Rate Limiting — 証明書ベースのレート制限設定例
Client Certificate-based Rate Limiting — 証明書ベースのレート制限設定例

参考: SHA-256 fingerprint of the certificate

3.8

Rate Limiting ベストプラクティス

効果的なレート制限を実装するための実践的なガイドラインと推奨設定をご紹介します。

📋 段階的な保護アプローチ

💡 推奨:単一の厳格なレート制限ではなく、段階的に厳しくなる複数のルールを組み合わせることで、正当なユーザーへの影響を最小限に抑えながら攻撃を防御できます。

🟢 第1段階:寛容なルール

比較的高い閾値で LOG または CHALLENGE アクション。正常トラフィックの把握とベースライン確立。

🟡 第2段階:警告ルール

中程度の閾値で MANAGED CHALLENGE。疑わしい動作を早期検出。

🔴 第3段階:厳格なルール

低い閾値で BLOCK。明らかに悪意のあるトラフィックを即座遮断。

🛡️ 実践的な設定例

ログイン保護(多層防御)

単一IPからの連続ログイン試行を段階的に制限:

Login Protection - Stage 1 (Lenient) CHALLENGE

式: http.request.uri.path eq "/login" and http.request.method eq "POST"

特性: ip.src

リクエスト数: 10 / 60秒

→ 1分間に10回を超えるとCHALLENGEを表示

Login Protection - Stage 2 (Moderate) MANAGED CHALLENGE

式: http.request.uri.path eq "/login" and http.request.method eq "POST"

特性: ip.src

リクエスト数: 15 / 600秒

→ 10分間に15回を超えると厳格なCHALLENGE

Login Protection - Stage 3 (Strict) BLOCK

式: http.request.uri.path eq "/login" and http.request.method eq "POST"

特性: ip.src

リクエスト数: 20 / 86400秒(24時間)

→ 24時間で20回を超えたら完全ブロック

失敗したログイン試行の制限

401/403レスポンスをカウント条件に含めることで、失敗したログイン試行のみを対象に:

Rate Limit Failed Login Attempts BLOCK

式(カウント対象):

http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403}

式(適用対象):

http.request.uri.path eq "/login"

特性: ip.src

リクエスト数: 5 / 60秒

💡 ポイント:失敗したログイン(401/403)のみカウントし、閾値超過時は該当IPからのすべてのログインリクエストをブロック

高価な処理の保護

検索・レポート生成など、サーバー負荷の高いエンドポイントを保護:

Rate Limit Expensive Operations BLOCK

式:

http.request.uri.path contains "/search" or http.request.uri.path contains "/report"

特性: ip.src

リクエスト数: 20 / 60秒

→ 高負荷処理を頻繁に実行する自動化ツールを防御

動的コンテンツの保護

キャッシュできない動的ページへのリクエストを制限:

Rate Limit Dynamic Content BLOCK

式:

not cf.edge.server_port in {80 443}

特性: ip.src

リクエスト数: 100 / 60秒

💡 ヒント:キャッシュされていないリクエストのみ対象にすることで、オリジンサーバーへの負荷を軽減

⚙️ 設定のヒント

📊 適切な閾値の見つけ方

  1. まずLOGモードでトラフィックパターンを観察
  2. Security Eventsで正常なトラフィックの最大値を確認
  3. 最大値の1.5〜2倍を初期閾値として設定
  4. 数週間モニタリングして調整

閾値の見つけ方

🎯 特性(Characteristics)の選択

  • ip.src - 標準的な選択
  • cf.unique_visitor_id - より正確な識別
  • カスタム式 - API Key、Session ID等
  • JA3 Fingerprint - ツール検出に有効

⏱️ 時間ウィンドウの選択

短期間(10秒〜1分)は急激な攻撃に、長期間(10分〜24時間)は持続的な攻撃やアカウント乗っ取りに有効。

例:ログインは短期+長期の組み合わせが効果的

⚠️
避けるべきアンチパターン:
  • テストなしでいきなりBLOCKモードで本番適用
  • 閾値を低く設定しすぎて正当なユーザーをブロック
  • すべてのトラフィックに一律の厳しいレート制限
  • モニタリング・調整なしで放置

参考: Rate Limiting Best Practices(公式ドキュメント)

3.9

HTTP DDoS Attack Protection

CloudflareはすべてのプランでL7(アプリケーション層)DDoS攻撃をHTTP DDoS Attack Protection マネージドルールセットにより自動的に軽減します。このルールセットは常に有効であり、無効にすることはできません。ユーザーは動作のカスタマイズのみ可能です。

💡 HTTP DDoS保護は追加設定なしで自動的に機能します。ただし、大規模な正常トラフィックのスパイク(セール・キャンペーン等)がある場合は、誤検知(正常トラフィックが攻撃と判断される)を避けるために設定を調整することを推奨します。

🛡️ 検出対象の攻撃パターン

  • 既知のDDoS攻撃ベクター・ツールのパターン
  • 疑わしいリクエストパターン・プロトコル違反
  • オリジンサーバーに大量エラーを引き起こすリクエスト
  • オリジン/キャッシュへの過剰トラフィック

⚙️ カスタマイズ可能なパラメータ

  • アクション: Block・Challenge・Log・Connection Closeなど
  • 感度レベル: High(デフォルト)/ Medium / Low / Essentially Off
  • Enterpriseユーザーはカスタム式(expression)による詳細な上書きが可能(最大10ルール)

🔍 オリジン保護ルール

オリジンのヘルス状態に基づく緩和も提供。デフォルトで1秒あたり1,000エラーを超えた場合に自動緩和を開始。

Rule ID: dd42da7baabe4e518eaf11c393596a9d

⚠️
大量の正常トラフィックがある場合(誤検知対策):
フラッシュセール・大型キャンペーン・メディア掲載などで急激なトラフィック増加が予想される場合は、誤検知対応ガイドを参考に感度レベルを「Low」または「Essentially Off」に一時調整してください。
プラン利用可否上書き(Override)ルール数カスタム式
Free / Pro / Business✅ 自動保護1ルールのみ(全トラフィックに適用)❌ 不可
Enterprise✅ 自動保護最大10ルール✅ 可能
Enterprise + Advanced DDoS✅ 自動保護最大10ルール✅ 可能(高度な設定)

参考: HTTP DDoS Attack Protection | 設定パラメータ | 変更ログ

セクション 4

その他の推奨事項

Turnstile・Page Shield・SSL/TLS・分析・自動化・オリジン保護
04
4.1

Browser Integrity Check(BIC)

BICはブラウザらしくないHTTPヘッダーを持つリクエストをブロックする機能です(Security › Settings で設定)。デフォルトで有効になっています。

APIや自動化ツール(CI/CDパイプライン、決済コールバックなど)は通常ブラウザヘッダーを持たないため、BICが有効だと誤ってブロックされる場合があります。API・自動化トラフィックがある環境ではBICを無効にすることを推奨します。

4.2

Turnstile

CloudflareのTurnstileは、ウェブサイト上のどこにでもチャレンジを設置できるサービスです。モバイルを含む標準的なブラウザで動作し、iOSおよびAndroidのネイティブアプリではWebView経由で利用できます。

🔄 Implicit Rendering

静的なページで自動的に読み込まれる方式。シンプルなページに最適。

Implicit Rendering Docs

⚙️ Explicit Rendering

表示されるタイミングと場所を細かく制御できる方式。SPAや動的コンテンツに最適。

Explicit Rendering Docs

📋
Turnstile プラン比較
機能Free プランEnterprise プラン(アドオン)
基本的なボット検証
月間リクエスト数100万リクエスト/月まで無制限(SLA付き)
カスタムドメイン数制限あり無制限
WAF・Bot Managementとの連携基本連携✅ 高度な連携・分析
カスタマーサポートコミュニティサポート✅ 専任サポート・SLA
アナリティクス基本✅ 詳細レポート
契約形態無料・セルフサービスEnterpriseアドオン契約が必要
💡 TurnstileをWAFやボット管理と連携させることも推奨されます。モバイル連携時はよくある問題に対処してください。
🔗 この機能と組み合わせると効果的:
  • WAFカスタムルールPre-Clearance設定でTurnstile通過済みトラフィックのみ許可
  • Rate Limiting — Turnstile未通過ユーザーに厳しいレート制限を適用 → Section 3.1参照
4.3

Page Shield

Cloudflare Page Shieldを使用すると、アプリケーションのJavaScript依存関係を監視し、変更があれば通知を受け取ることができます。これはPCI Complianceに関連しています。

  • アプリケーションで実行されているリソースやCookieを定期的に監視することをお勧めします。
  • 特定のリソースのみを許可するポジティブセキュリティモデルを適用するために、ポリシーを作成してください。
4.4

🔐 Leaked Credentials Check(漏洩認証情報チェック)

Leaked Credentials Checkは、ユーザーがログイン時に使用した認証情報(ユーザー名・パスワード)が、過去のデータ漏洩で流出したものかどうかをリアルタイムでチェックする機能です。Credential Stuffing攻撃やアカウント乗っ取り(ATO)を防止します。All Plans

🔍 リアルタイム照合

ログインリクエストの認証情報を、15億以上のレコードを持つ漏洩データベースとリアルタイムで照合

🔒 プライバシー保護

k-匿名性を使用。パスワードのハッシュの一部のみを送信し、プライバシーを保護

⚡ 低レイテンシ

エッジで処理されるため、ログイン体験に影響を与えない

利用可能なフィールド(5種類)

フィールド説明プラン
cf.waf.credential_check.password_leaked パスワードが過去に漏洩したかどうか All Plans
cf.waf.credential_check.username_and_password_leaked ユーザー名とパスワードのペアが過去に漏洩したかどうか Pro+
cf.waf.credential_check.username_leaked ユーザー名が過去に漏洩したかどうか Enterprise
cf.waf.credential_check.username_password_similar 類似バージョンのユーザー名・パスワードが過去に漏洩したかどうか Enterprise
cf.waf.auth_detected リクエストに認証情報が含まれているかどうか Enterprise

主な使用例

  • ログイン保護:cf.waf.credential_check.password_leakedフィールドで漏洩パスワードを検出し、Managed Challengeを表示
  • パスワードリセット促進:Transform RulesでX-Leaked-Credential: trueヘッダーを追加し、オリジンでパスワード変更を促す
  • MFA強制:漏洩認証情報検知時に多要素認証を要求
  • 新規登録時のチェック:漏洩パスワードの使用を禁止し、強力なパスワードの設定を強制
Leaked Credentials Check Custom Rule 設定例
Leaked Credentials Check Custom Rule 設定例

上記の例では、cf.waf.credential_check.username_and_password_leaked/loginエンドポイントで実行されています。マッチした場合、Managed Challengeを表示してボット対策と漏洩認証情報の使用を防ぎます。

💡 推奨:まずLogモードで検知状況を確認し、誤検知がないことを確認してからBlock/Challengeに移行。Rate Limitingと組み合わせて多層防御を構築してください。
🔗 この機能と組み合わせると効果的:
  • ATO検出 — 漏洩認証情報 + アカウント乗っ取りシグナル(異常なログイン位置、デバイス変更など)で複合判定 → Section 2.17参照
  • 使い捨てメール対策 — 疑わしいメールドメイン(temp-mail.orgなど)と漏洩認証情報を同時にブロックし、不正アカウント作成を防止 → Section 2.18参照
4.5

🛡️ API Shield

API Shieldは、APIエンドポイントを保護するための包括的なセキュリティソリューションです。スキーマ検証・mTLS認証・レート制限・異常検知などを組み合わせて、APIへの不正アクセスや悪用を防止します。Enterprise

📋 Schema Validation

OpenAPIスキーマに基づいてリクエストを検証。不正なパラメータを自動ブロック

🔒 mTLS認証

クライアント証明書による相互認証。正規クライアントのみアクセス許可

🔍 API Discovery

トラフィックを分析してAPIエンドポイントを自動検出。シャドーAPIの発見に有効

主な機能

機能説明
Schema Validation OpenAPI 3.0スキーマをアップロードし、リクエストを自動検証。不正なパラメータをブロック
mTLS(Mutual TLS) クライアント証明書による相互認証。モバイルアプリ・IoTデバイスの認証に最適
API Discovery トラフィック分析によりAPIエンドポイントを自動検出。ドキュメント化されていないAPIを発見
Sequence Mitigation MLベースの異常リクエストシーケンス検出
JWT Validation JWTトークンの署名・有効期限・クレームを検証

mTLS実装方法

API Shield(推奨:API/IoT)

APIエンドポイント、IoTデバイス、モバイルアプリ向け。カスタムルールで柔軟な証明書検証が可能

Cloudflare Access(推奨:社内アプリ)

社内アプリケーション、管理画面向け。Zero Trustポリシーと統合。ユーザー+デバイス認証の組み合わせが可能

💡 推奨:まずAPI Discoveryでエンドポイントを把握し、Schema Validationで保護を開始。mTLSでクライアント認証を追加してください。

参考: Schema Validation | mTLS | API Discovery

🔗 この機能と組み合わせると効果的:
  • mTLS — 証明書ベースのクライアント認証とスキーマ検証を組み合わせて、正規クライアントからの正しい形式のリクエストのみ受け入れ → Section 2.12参照
  • JWT Validation — JWTトークンの検証とスキーマ検証で、認証済みユーザーからの正しいAPIリクエストのみ許可 → Section 2.13参照
  • Rate Limiting — エンドポイント別のレート制限で、API Discoveryで発見したエンドポイントを個別に保護 → Section 3.1参照
4.6

SSL/TLS 証明書

📖
Universal SSL vs Advanced Certificate Manager (ACM) の違い:
  • Universal SSL(無料): Cloudflareが自動的に発行・更新するSSL証明書。すべてのプランで標準提供。ドメインとサブドメイン1段階まで対応(例: *.example.com)。
  • Advanced Certificate Manager(ACM・有料アドオン): カスタム証明書設定、複数レベルのワイルドカード、証明書の有効期限カスタマイズなどが可能。より厳格な要件がある場合に推奨。有料アドオン
⚠️
Universal SSLを無効化する前の必須確認:
Universal SSLを無効化すると、ACMが正しく設定・稼働していない場合、サイトがHTTPS接続不可になります。
無効化する前に必ず以下を確認してください:
  1. ACMが設定済みで証明書が「Active」状態であること。
  2. 対象ドメインのすべてのサブドメインがACMでカバーされていること。
  3. 証明書の更新が自動化されていること。

通常、Advanced Certificate Manager (ACM)の利用が推奨されます。より厳格な要件を持つお客様の場合、加えてUniversal SSL証明書を無効にすることをおすすめします(上記の確認を済ませた上で)。

設定項目推奨値参考
TLSバージョン 最小TLS 1.2(TLS 1.3も有効化推奨) Minimum TLS Version
Always Use HTTPS 有効(可能であればHTTPを完全無効化) Always Use HTTPS
Automatic HTTPS Rewrites 有効 Automatic HTTPS Rewrites
オリジンとの暗号スイートの一致 Match on origin で構成 Match on Origin
エッジ証明書 常に有効かつアクティブな状態を維持 Edge Certificates
4.7

Custom Error Page

ブランディングがあなたとあなたのビジネスにとって重要である場合、カスタムページ(エラーおよびチャレンジ)またはカスタムエラーを設定できます。

🎨 カスタムブロックレスポンス

Cloudflare WAFでブロックされたリクエストに対するカスタムレスポンスを設定。ブランドに合わせたメッセージを表示できます。

⚠️ カスタムエラーページ

Cloudflare Rulesに対するカスタムエラーレスポンスを設定。ユーザー体験を向上させます。

Custom Error Pages
Custom Error Pages — カスタムエラーページの設定例
4.8

Analytics & Log Management

マッチしたすべてのルールはSecurity EventsSecurity › Events)で確認できます。すべてのリクエストのより広範な概要はSecurity AnalyticsSecurity › Analytics)で確認できます。

⚠️ Cloudflareダッシュボードのすべてのアナリティクスはサンプリングされています。正確なログが必要な場合はLogpushを利用してください。

🚨 Suspicious Activity(不審アクティビティの監視)

Suspicious Activityは Security Analytics の機能で、有効化済みの各種検出機能が識別した不審なリクエストを一元的に可視化します。新しいセキュリティダッシュボードdash.cloudflare.com/security)でのみ利用可能。

Suspicious Activity Dashboard
Suspicious Activity — 不審アクティビティの監視ダッシュボード
📖
Suspicious Activityで監視できる検出機能:
  • Account Takeover(ATO)検出 — ボット管理機能が検知したアカウント乗っ取り試行。クレデンシャルスタッフィングや不審なログインパターンを特定。
  • Leaked Credential Check(漏洩認証情報) — ユーザー名・パスワードが既知の流出データベースに含まれるログイン試行を検出。全プランで利用可能。
  • Malicious Uploads(悪意のあるアップロード) — アップロードされたファイルにマルウェアや悪意のあるコンテンツが含まれていないかをスキャン。
  • WAF Attack Score — SQLi・XSS・RCEなどの攻撃パターンを機械学習で検出したリクエスト。
  • AI Security for Apps — AIアプリケーションに対するプロンプトインジェクション等の攻撃を検出。
各不審アクティビティには Critical / High / Medium / Low の深刻度スコアが付与されます。フィルタを使用してドリルダウン調査が可能です。

🔍 ATOと漏洩認証情報の調査手順

  • Security › Analytics を開き「Suspicious Activity」セクションを確認
  • ATOまたはLeaked Credentialのイベントをフィルタリング
  • 対象IPアドレス・User-Agent・地域などを特定
  • 「Create custom security rule」からWAFルールを即時作成可能
  • Rate Limiting(Section 3.4)と組み合わせて多層防御を構築

📊 Security Analyticsの活用ポイント

  • Attack analysisタブ:WAF攻撃スコアの分布を確認(Clean / Likely clean / Likely attack / Attack)
  • Bot analysisタブ:ボットスコアの分布を確認(Automated / Likely automated / Human)
  • Request rate analysisタブ:適切なレート制限値を特定するために使用
  • フィルタ適用後に「Create custom security rule」でルールを直接生成

📤 Logpush Enterprise

ログをストレージサービス(R2、S3など)、SIEM(Splunk、Datadog等)、またはログ管理プロバイダーにプッシュします。

Logpush Docs

🔍 Log Explorer Enterprise

ダッシュボード上でログを直接検索・分析できる機能です。Security Analyticsと同じフィルタを使ってドリルダウン調査が可能。

Log Explorer Docs

🔔 通知設定

WAFアラート・DDoSアラート・証明書期限切れアラートなどを設定し、定期的にステータスページを確認してください。

Notifications Docs

4.9

オリジンサーバー保護

オリジンサーバーのIPアドレスを保護し、Cloudflare経由のトラフィックのみを許可することは、最も重要なセキュリティ対策の一つです。攻撃者がオリジンサーバーのIPアドレスを特定すると、Cloudflareのセキュリティ保護を完全にバイパスして直接攻撃することが可能になります。オリジンIPアドレスのローテーション(変更)だけでは不十分です。攻撃者は履歴データ・DNS記録・誤設定・スキャンなどを通じて新しいIPアドレスを再び発見できるためです。Cloudflareは複数のレイヤーでオリジン保護機能を提供しています。

オリジンサーバー保護の比較
オリジンサーバー保護 — Cloudflare IP制限 vs Cloudflare Tunnel の比較
レイヤー 製品・機能 概要・推奨事項
Application Layer
(L7)
Cloudflare Tunnel
(HTTP / WebSockets)
オリジンサーバーからCloudflareへのアウトバウンド接続を確立。ポートを開放せずにトラフィックを受信可能。最も安全なオリジン保護手法。
HTTP Header Validation Managed Transformsでカスタムヘッダーを追加し、オリジン側で検証。Cloudflare経由のリクエストのみを識別可能。
JSON Web Tokens (JWT) Validation API Shieldを使用してJWTトークンを検証。API呼び出しの認証・認可を強化。
Transport Layer
(L4-L5)
Authenticated Origin Pulls クライアント証明書(mTLS)でCloudflareからのリクエストを暗号学的に認証。SSL/TLS Full (Strict)と組み合わせて使用推奨。
Cloudflare Tunnel
(SSH / RDP)
SSH・RDP等のTCPトラフィックもTunnel経由でルーティング可能。管理アクセスの保護に有効。
Network Layer
(L3-L4)
Allowlist Cloudflare IP addresses オリジンファイアウォールでCloudflare IPアドレスのみを許可。最も基本的で重要な対策。必ず実装すること。
Cloudflare Magic Transit ネットワーク層DDoS保護。BGPアナウンスでトラフィックをCloudflareへルーティング。Enterprise専用。
Cloudflare Network Interconnect Cloudflareネットワークとオリジンネットワークを専用接続で直結。最高レベルのパフォーマンスとセキュリティ。Enterprise専用。
Dedicated CDN Egress IPs 専用のegressIPアドレスを割り当て、オリジン側で特定可能に。

参考: Protect your origin server | SSL/TLS Full (Strict) mode

4.10

Terraform & IaC 自動化

WAF設定をコード管理(Infrastructure as Code)することで、変更履歴の追跡、環境間の設定同期、災害復旧が容易になります。Cloudflare WAFはTerraformcf-terraformingツールでコード化できます。

🔄 WAF設定のエクスポート

📖
Cloudflare Rulesets APIを使用して、現在のWAF設定をJSON形式でエクスポートできます。エクスポートしたデータはTerraform化の参照データとして使用できます。
エクスポート可能な設定: カスタムルール、レート制限、Transform Rules、Managed WAFオーバーライド、OWASP設定、ルールセットバージョン

Step 1: 認証情報を設定

export CF_API_TOKEN="your-api-token-here"
export ZONE_ID="your-zone-id-here"

Step 2: Ruleset IDを取得

まず、エクスポートしたいルールセットのIDを取得します。

curl "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/rulesets" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" | \
  jq -r '.result[] | "\(.kind) - \(.name): \(.id)"'

出力例:

zone - default: 4e7d7cfc89e94db8a7071554de00####
zone - Cloudflare Managed Ruleset: efb7b8c949ac4650a09736fc376e####
zone - Cloudflare OWASP Core Ruleset: 4814384a9e5d4991b9815dcfc25d####

Step 3: ルール設定をエクスポート

取得したRuleset IDを使って、各ルールの詳細設定をエクスポートします。

カスタムルールをエクスポート:

RULESET_ID="4e7d7cfc89e94db8a7071554de00####"
curl "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/rulesets/${RULESET_ID}" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" | jq '.result.rules[]'

出力例:

{
  "id": "d686e81f5ab84c20bd7155f5e26683a0",
  "version": "4",
  "action": "block",
  "expression": "(cf.bot_management.score lt 30)",
  "description": "Block suspicious bots",
  "enabled": true
}

Managed WAFルールをエクスポート:

RULESET_ID="efb7b8c949ac4650a09736fc376e9aee"
curl "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/rulesets/${RULESET_ID}" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" | jq '.result.rules[]'

出力例:

{
  "id": "5de7edfa648c4d6891dc3e7f84534ffa",
  "version": "258",
  "action": "execute",
  "action_parameters": {
    "id": "efb7b8c949ac4650a09736fc376e9aee",
    "overrides": {
      "enabled": true
    }
  },
  "description": "Execute Cloudflare Managed Ruleset",
  "enabled": true
}

🚀 cf-terraforming で自動変換

cf-terraformingは、Cloudflare設定を自動的にTerraformコードに変換する公式CLIツールです。

インストール

# macOS
brew install cloudflare/cloudflare/cf-terraforming

# Go経由
go install github.com/cloudflare/cf-terraforming/cmd/cf-terraforming@latest

カスタムルールをTerraform化

# Terraform設定ファイル生成
cf-terraforming generate \
  --resource-type cloudflare_ruleset \
  --zone $ZONE_ID > waf-custom-rules.tf

# 既存リソースをTerraform stateにインポート
cf-terraforming import \
  --resource-type cloudflare_ruleset \
  --zone $ZONE_ID

📝 手動Terraform設定例

カスタムWAFルール

resource "cloudflare_ruleset" "waf" {
  zone_id = var.zone_id
  name    = "WAF Custom Rules"
  kind    = "zone"
  phase   = "http_request_firewall_custom"

  rules {
    description = "Block suspicious bots"
    expression  = "(cf.bot_management.score lt 30)"
    action      = "block"
  }
}

レート制限ルール

resource "cloudflare_ruleset" "rate_limit" {
  zone_id = var.zone_id
  name    = "Rate Limiting"
  kind    = "zone"
  phase   = "http_ratelimit"

  rules {
    description = "API rate limit"
    expression  = "(http.request.uri.path matches \"^/api/\")"
    action      = "block"
    
    ratelimit {
      characteristics     = ["ip.src"]
      period              = 60
      requests_per_period = 100
      mitigation_timeout  = 600
    }
  }
}

🔧 Managed WAF オーバーライド管理

Managed WAFルール自体はTerraformで作成できませんが、オーバーライド(action変更)は可能です。

💡
Managed WAFルールのオーバーライドは、Rulesets APIを使用してアクションを一括変更できます:
誤検知対策: 特定のルールを log モードに変更
カテゴリ別設定: WordPress関連ルールを一括で challenge に変更
テスト運用: すべてのルールを log で動作確認後、段階的に block に移行
# 特定ルールのアクションをオーバーライド
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/rulesets/phases/http_request_firewall_managed/entrypoint" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "rules": [{
      "action": "execute",
      "action_parameters": {
        "id": "efb7b8c949ac4650a09736fc376e9aee",
        "overrides": {
          "rules": [{
            "id": "5de7edfa648c4d6891dc3e7f84534ffa",
            "action": "log"
          }]
        }
      }
    }]
  }'

# WordPress関連ルールを一括でchallengeに変更する場合は、
# タグベースのオーバーライドを使用

📊 バージョン管理とロールバック

WAF設定のバージョン管理とロールバックは、Terraform(コード管理)またはCloudflare API(ルールセットバージョン管理)で実現できます。

現在のバージョン確認

curl "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/rulesets" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" | \
  jq '.result[] | {id, name, version, last_updated}'

出力例:

{
  "id": "efb7b8c949ac4650a09736fc376e9aee",
  "name": "Cloudflare Managed Ruleset",
  "version": "352",
  "last_updated": "2026-04-27T20:47:27Z"
}

特定バージョンへロールバック

上記で確認したRuleset ID(efb7b8c949ac4650a09736fc376e9aee)を使って、バージョン352→351へロールバックします。

# Step 1: バージョン351の設定内容を取得
RULESET_ID="efb7b8c949ac4650a09736fc376e9aee"  # 上記で確認したID
curl "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/rulesets/${RULESET_ID}/versions/351" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" > version-351.json

# Step 2: バージョン351へロールバック
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/rulesets/${RULESET_ID}" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d @version-351.json
💡
2つのアプローチ:
Terraform + Git: 設定ファイルをGitで管理し、git checkout + terraform apply でロールバック。変更履歴・差分確認・環境間同期が容易
Cloudflare API: Rulesets APIで直接バージョン351→352などを指定してロールバック。Terraformなしでも即座に復元可能
⚠️ 注意: Managed WAFルール(Cloudflare提供のマネージドルールセット)自体はTerraformで作成・削除できません。オーバーライド(アクション変更)のみ可能です。カスタムルール、レート制限、Transform RulesはTerraformで完全管理できます。

参考: Terraform Cloudflare Provider - Ruleset | cf-terraforming GitHub

🔧

Troubleshooting

🚨 よくある問題①:正常なトラフィックがブロックされている(誤検知)

WAFルールを有効化した後に正常なユーザーやAPIコールがブロックされている場合、以下の手順で診断します。

Ray IDを確認する

ブロックされたリクエストには Ray ID(例: 7f3a1b2c3d4e5f6a)が付与されます。ブロックページや HTTPレスポンスヘッダー cf-ray で確認できます。Ray IDは特定のリクエストを追跡するための一意の識別子です。

Security Eventsで該当リクエストを検索する

Security › Events を開き、Ray IDまたはIPアドレス・URLなどで絞り込みます。該当イベントをクリックすると「どのルールがマッチしたか」「どのフィールドが条件を満たしたか」が詳細に確認できます。

原因のルールを特定して例外を作成する

原因ルールが特定できたら、WAF例外(Exception)を作成して正常なトラフィックを除外します。例外は特定のパス・IPアドレス・ユーザーエージェントなどで絞り込めます。

それでも解決しない場合はルールをLOGに戻す

問題の原因が特定できない場合は、一時的にルールのアクションを BLOCK → LOG に変更して影響を把握してから再設定します。

📋 サポートへ問い合わせる際に必要な情報

📋
Cloudflareサポートへ問い合わせる際は以下の情報を事前に収集してください:
  • Ray ID:ブロックされたリクエストのRay ID(複数ある場合は複数記載)
  • ゾーンID / アカウントID:ダッシュボードの Overview ページ右側に表示
  • 問題の再現手順:どのURLに、どのような方法でアクセスするとブロックされるか
  • Security Eventsのスクリーンショット:該当イベントの詳細画面
  • 期待する動作と実際の動作:何がどう違うか

🔗 リソース

📡 ステータスページ

cloudflarestatus.com でCloudflareの稼働状況を確認。問題が発生しているときはまずここを確認。

📚 トラブルシューティングドキュメント

Troubleshooting Docs でよくある問題と解決策を参照。誤検知対応ガイドも参照してください。

🎫 Cloudflareサポート

上記の情報を収集の上 Cloudflareサポート に問い合わせ。Enterpriseユーザーは専任サポートを利用できます。

📖

用語集 — Glossary

Cloudflare WAFおよびアプリケーションセキュリティに関連する主要な用語の定義です。

🔐 攻撃・脅威

WAF 攻撃スコア / Attack Score
1〜99の数値でリクエストの悪意の可能性を示す指標。1に近いほど攻撃の可能性が高く、99に近いほど正常。SQLi・XSS・RCEの各カテゴリ別スコア(cf.waf.score.sqli 等)も提供。Cloudflareの機械学習モデルが算出。
WAF クレデンシャルスタッフィング / Credential Stuffing
流出したユーザー名・パスワードの組み合わせを使い、自動化されたログイン試行を大量に行う攻撃手法。Cloudflareの漏洩認証情報検出機能(cf.waf.credential_check)で検知可能。
WAF 漏洩認証情報 / Leaked Credentials
データ侵害や設定ミスなどで外部に流出した認証情報(ユーザー名・パスワード・APIキー等)。Cloudflareはデータベースと照合し、ログインリクエストに流出した認証情報が含まれているかをリアルタイムで検出できる。
WAF プロンプトインジェクション / Prompt Injection
大規模言語モデル(LLM)のシステムプロンプトを上書き・操作する攻撃手法。AIを利用したアプリケーションに対する新種の脅威。Cloudflare WAFは攻撃スコアでLLM関連の攻撃も検知。
Security SQLインジェクション / SQL Injection (SQLi)
悪意のあるSQLコードをリクエストに埋め込み、データベースを不正操作する攻撃。Cloudflare WAFマネージドルールセットで検出・ブロック可能。攻撃スコアフィールド: cf.waf.score.sqli
Security XSS(クロスサイトスクリプティング)
悪意のあるスクリプトをWebページに埋め込み、閲覧したユーザーのブラウザ上で実行させる攻撃。攻撃スコアフィールド: cf.waf.score.xss。WAFマネージドルールおよびRule ID 882b37d6bd5f4bf2a3cdb374d503ded0 で検出。
Security RCE(リモートコード実行)
攻撃者がリモートからターゲットサーバー上で任意のコードを実行できる脆弱性・攻撃手法。攻撃スコアフィールド: cf.waf.score.rce
Security アカウント乗っ取り / ATO(Account Takeover)
不正に取得した認証情報や自動化ツールを使い、他人のアカウントに不正アクセスする攻撃。クレデンシャルスタッフィングや総当たり攻撃(ブルートフォース)がよく使われる手法。

🤖 ボット・フィンガープリント

Bots ボットスコア / Bot Score
1〜99の数値でリクエストが自動化ボットである可能性を示す。1〜29:ほぼ確実にボット、30〜99:人間の可能性が高い。フィールド: cf.bot_management.score。利用にはEnterprise Bot Managementアドオンが必要。
Bots 検証済みボット / Verified Bot
CloudflareがGooglebotやBingbotなど、正規の自動化クライアントとして検証したボット。フィールド: cf.client.bot(true/false)。これらは通常、WAFカスタムルールでSKIPして通過させることを推奨。
Bots JA3フィンガープリント
TLSハンドシェイク時のクライアントパラメータ(TLSバージョン・暗号スイート・拡張機能等)をハッシュ化した文字列。同じクライアントソフトウェアは同じJA3値を生成するため、ブラウザやボットの識別に使用できる。フィールド: cf.bot_management.ja3_hash
Bots JA4フィンガープリント
JA3の後継規格。TLSハンドシェイクの詳細をより細かく・安定的に識別できる新しいフィンガープリント手法。JA3より偽装が困難で、より精度の高いクライアント識別が可能。フィールド: cf.bot_management.ja4
Bots Super Bot Fight Mode
Pro・Businessプランで利用できるボット対策機能。自動化されたボットに対してCHALLENGEやBLOCKアクションを設定できる。Bot Managementスコア変数(cf.bot_management.score)はこのモードでは使用不可。Security › Bots で設定。
Bots JavaScript検出 / JSD(JavaScript Detection)
CloudflareがHTMLレスポンスにJavaScriptを注入し、クライアントがブラウザとして正常に実行できるかを確認する仕組み。ブラウザを偽装するボットの検出に有効。フィールド: cf.bot_management.js_detection.passed。Bot Managementアドオンが必要。
Bots ボットタグ / Bot Tags
なぜそのリクエストに特定のボットスコアが付与されたかの追加情報。「verified_bot」「ai_crawler」「search_engine_crawler」などのタグが付与される。フィールド: cf.bot_management.tags
WAF ゼロショット分類モデル
学習時に見たことのないクラスにもデータを分類できる事前学習済み機械学習モデル。CloudflareはこのモデルをWAF攻撃スコアの算出に利用し、新種の攻撃パターンを既知のシグネチャなしに検出できる。

📋 ルール・設定

WAF マネージドルールセット / Managed Ruleset
Cloudflareが管理・更新するルールの集合体。既知の攻撃パターン(OWASP Top 10等)を自動的に検出・ブロックする。ユーザーはアクションや例外を設定できる。主要なものは「Cloudflare Managed Ruleset」と「OWASP Core Ruleset」の2種類。
WAF WAF例外 / WAF Exception
特定の条件(パス・IPアドレス・User-Agent等)に一致するリクエストを、マネージドルールの検査対象から除外する設定。誤検知を解消するために使用。Security › WAF › Managed rules › Add exception で設定可能。
WAF パラノイアレベル / Paranoia Level (PL)
OWASPコアルールセットの積極性を分類するレベル。PL1(最も保守的・誤検知少)〜PL4(最も積極的・誤検知多)の4段階。新規ユーザーはPL1から始めることを推奨。
WAF ルール特性 / Rule Characteristics
レート制限ルールにおいて、どの基準でリクエスト数をカウントするかを定義するパラメータ。IPアドレス(ip.src)・JA3ハッシュ・Cookie・ヘッダー値などを特性として設定できる。
WAF 軽減済みリクエスト / Mitigated Request
CloudflareがBLOCK・CHALLENGEなどの終端アクション(ターミネーティングアクション)を適用したリクエスト。LOGアクションは記録のみで軽減には含まれない。Security Eventsで確認可能。
WAF コンテンツオブジェクト / Content Object
リクエストボディの中でCloudflareがバイナリとして検出した部分。以下のコンテンツタイプに該当しないもの: text/html・text/x-shellscript・application/json・text/csv・text/xml。WAFのボディ検査に関係する概念。
WAF レート制限 / Rate Limiting
一定時間内のリクエスト数が閾値を超えた場合にアクション(BLOCK・CHALLENGE等)を適用するルール。DoS攻撃・クレデンシャルスタッフィング・スクレイピング対策に有効。Security › WAF › Rate limiting rules で設定。
WAF SIEM
Security Information and Event Management(セキュリティ情報・イベント管理)の略。複数のソースからセキュリティログを収集・分析・相関付けするシステム。CloudflareのLogpushでSIEMにログを転送できる(Splunk・Datadog・Microsoft Sentinelなど)。

🌐 ネットワーク・認証

Network ASN(自律システム番号)
Autonomous System Numberの略。インターネット上の独立したネットワーク(ISP・クラウドプロバイダー・企業等)に割り当てられた一意の番号。WAFルールで特定のASNからのトラフィックをブロック・許可できる。フィールド: ip.geoip.asnum
SSL/TLS mTLS(相互TLS認証)
Mutual TLSの略。通常のTLSがサーバー証明書のみ検証するのに対し、mTLSではクライアントも証明書を提示してサーバーに認証される双方向認証。APIセキュリティやデバイス認証に有効。フィールド: cf.tls_client_auth.cert_verified
SSL/TLS Authenticated Origin Pulls
Cloudflareのエッジからオリジンサーバーへのリクエスト時に、Cloudflareがクライアント証明書を提示して認証する仕組み。オリジンはCloudflare経由のリクエストのみを受け付けることができる。SSL/TLS › Origin Server で設定。
SSL/TLS CA(認証局)/ Certificate Authority
Certificate Authorityの略。SSL証明書を発行・検証する信頼された第三者機関。Cloudflareは独自のPKI(Cloudflare PKI)を提供しており、mTLS用のクライアント証明書を発行できる。
Network Anycast
同一のIPアドレスに対するリクエストを、地理的に最も近いCloudflareのデータセンターにルーティングするネットワーク方式。Cloudflareの300以上のデータセンターでAnycastを採用しており、DDoS緩和やレイテンシ低減に寄与。
WAF Ray ID
Cloudflareが各リクエストに付与する一意の識別子(例: 7f3a1b2c3d4e5f6a)。ブロックページや cf-ray レスポンスヘッダーで確認できる。Security Eventsでの検索やサポートへの問い合わせ時に必須の情報。
Security ゾーン / Zone
Cloudflareに登録されたドメイン(例: example.com)の管理単位。WAF・DNS・SSL等の設定はすべてゾーン単位で行われる。アカウントには複数のゾーンを持つことができる。
Security アローリスト / Allowlist & ブロックリスト / Blocklist
Allowlist(許可リスト):アクセスを許可するIPアドレス・ドメイン等のリスト。Blocklist(ブロックリスト):アクセスを拒否するリスト。Cloudflare WAFの「Lists」機能(Security › WAF › Tools › Lists)でカスタムリストを作成・管理できる。

🔑 JWT・API

API JWT(JSON Web Token)
JSON Web Tokenの略。ヘッダー・ペイロード・署名の3部構成でBase64エンコードされた認証トークン。APIの認証・認可に広く使用される。Cloudflare API ShieldのJWT Validation機能で検証可能。
API API スキーマ / API Schema
APIが受け付けるリクエストの仕様(エンドポイント・HTTPメソッド・パラメータ形式等)を定義したドキュメント(OpenAPI/Swagger形式)。Cloudflare API ShieldのSchema Validationに登録することで、仕様外のリクエストをブロックできる。
API ポジティブセキュリティモデル
既知の「許可すべきリクエスト」のみを通過させ、それ以外はすべてブロックするセキュリティアプローチ。既知の「悪意のあるリクエスト」をブロックするネガティブセキュリティモデルの対義語。API Shieldのスキーマ検証でこのモデルを実現できる。
API フォールスルー / Fallthrough
API Shieldで管理されているどのエンドポイント定義にも一致しないリクエスト。cf.api_gateway.fallthrough_enabledcf.api_gateway.match フィールドを使ったカスタムルールでブロック可能(Section 2.3参照)。

参考: WAF Glossary | Cloudflare Fundamentals Glossary

Cloudflare General Application Security Recommendations — 勉強ガイド
作成: Makoto Nishihara | 最終更新: 2026年5月
非公式ガイド - Cloudflare公式ドキュメントと併用してください