Cloud Service
Web Application Firewall (WAF)
Cloudflareのエッジ上でSQLインジェクションやXSSなどの不正リクエストをアプリ手前で検査・遮断し、オリジンを攻撃から守る。AWS WAFやOCI WAFに相当するマネージドWebアプリケーションファイアウォール。
- 1.Cloudflareのエッジで動く、アプリ手前のレイヤー7防御。
- 2.マネージドルール・レート制限・カスタムルールを組み合わせて構成できる。
- 3.DNSでプロキシ経由にするだけで有効化でき、専用インフラの追加が不要。
解決する課題
- SQLインジェクションやXSSなどOWASP Top 10系の攻撃をアプリ改修せずに防ぎたい
- ボットや総当たり・スクレイピングからの過剰なリクエストをレート制限したい
- 特定の国・地域や悪意あるIPからのアクセスを地理/IPベースで遮断したい
- オリジンサーバーに手を入れずに、エッジの入口で一元的にトラフィックを検査・記録したい
主要概念と用語
- WAFルール: リクエストの検査条件とアクションを定義する設定単位。カスタムルール・マネージドルール・レート制限ルールなどの種類がある
- マネージドルール: Cloudflareが提供・継続更新するシグネチャベースの検出ルール群。OWASP系の攻撃パターンや既知の脆弱性を狙った攻撃を検出する
- カスタムルール: URLパス・ヘッダ・IP・国・ボットスコアなど任意の条件式を組み合わせて作る独自ルール
- レート制限ルール: 一定時間あたりの同一送信元(IPやセッション等)のリクエスト数に上限を設け、超過分をブロック/チャレンジするルール
- アクション: マッチ時の挙動。許可(Allow)/ ログ記録のみ(Log)/ 遮断(Block)/ チャレンジ(Managed Challenge・CAPTCHA)/ JSチャレンジなどから選べる
- フェーズ(実行順序): リクエストはマネージドルール・カスタムルール・レート制限ルールなど、あらかじめ決められた**順序(フェーズ)**で評価される
- セキュリティレベル: サイト単位で設定できる大まかな警戒度合いの指標。既知の悪性シグナルに応じてチャレンジの出しやすさを調整する
仕様・制限・クォータ
- WAFは**プロキシ設定済みのドメイン(オレンジクラウド)**に対してのみ機能する。DNSのみのレコードには適用されない
- ルールはプランごとに使えるルール数や高度な機能(レート制限の粒度、マネージドルールセットの種類など)に差がある
- ルールはリクエストのメソッド・URL・ヘッダ・クエリ文字列・ボディなどを検査対象にできる
- 主にレイヤー7(HTTP/HTTPS)を対象とし、L3/L4のボリューム型DDoSはエッジのDDoS防御機能側で別途吸収される
- カスタムルールは評価順に上から適用され、先にマッチしたルールのアクションが優先されるため、順序設計が重要
新しいカスタムルールやマネージドルールをいきなり遮断に設定すると、正規リクエストを巻き込む誤検知でサービス影響が出やすくなります。まずはログ記録のみのアクションで一定期間の傾向を観測し、誤検知パターンを除外してから遮断へ切り替えるのが安全です。
内部の仕組み
WAFはCloudflareのエッジネットワーク上のリバースプロキシ層で動作します。クライアントからのHTTPSリクエストはまずエッジで終端され、WAFがメソッド・URL・ヘッダ・クエリ・ボディを検査してルールと突き合わせます。マッチした場合は設定済みのアクション(許可/ログ/遮断/チャレンジ)を実行し、問題なければオリジンへリクエストを転送します。
この検査は世界中の各エッジロケーションで分散して行われるため、攻撃トラフィックは発生源に近い場所で早期に遮断され、オリジンやバックボーンへの到達を防げます。マネージドルールは新しい脆弱性や攻撃手法の発見に応じて継続的に更新され、利用者側での個別対応なしに防御対象が広がります。
レート制限ルールは送信元ごとのリクエストカウンタをエッジ側で保持して評価し、しきい値超過時にアクションを発動します。すべての判定結果はログとして記録され、後から検知・遮断状況を分析できます。
カスタムルールは上から順に評価され、最初にマッチしたルールのアクションで処理が確定します。想定と異なる順序でルールを並べると、意図しないルールが先に適用されてしまうことがあるため、優先度の高い遮断ルールほど上位に置くなど順序設計を意識してください。
設計パターン / ベストプラクティス
- ログ記録で慣らしてから遮断: 本番投入前にログのみのモードで運用し、誤検知パターンを洗い出してからブロックへ昇格
- 多層防御の一部として配置: WAFはレイヤー7防御。DDoS防御・アクセス制御(Zero Trust系)・オリジン側のIP制限と組み合わせて使う
- レート制限でボット・総当たりを抑止: ログインフォームや検索APIなど負荷の高いエンドポイントに送信元単位の上限を設定
- 地理/IPフィルタで攻撃面を縮小: サービス提供地域以外や既知の悪性IPをカスタムルールで早期に遮断
- チャレンジでボットを選別: 疑わしいトラフィックにはManaged Challengeを挟み、人間と自動化ツールを切り分ける
- ルールはコード管理(IaC): Terraform等でルールを定義し、環境間の再現性とレビュー可能性を確保
運用・監視
- WAFの判定結果はセキュリティイベントのログとして記録され、検知/遮断の傾向やルール別ヒット数を可視化できる
- ダッシュボードやログ連携でブロック率・チャレンジ発生率の急増を監視し、攻撃や誤検知を早期に検知する
- 誤検知が出た場合は、対象ルールをログ記録のみに戻すか、条件を絞った例外ルールを追加してから再度遮断へ戻す
- Zero Trust系のアクセス制御や証明書管理など他のセキュリティ機能と併用し、公開エンドポイントを横断的に保護する
- ルール変更は段階的に適用し、変更前後のブロック率・エラー率を比較してリグレッションを防ぐ
コスト
| 項目 | 課金の考え方 | 備考 |
|---|---|---|
| 基本的なWAF機能 | 多くはプラン料金に含まれる | 上位プランほど利用できるルール数や機能が広がる |
| カスタムルール | プランごとの上限内での利用 | 上限を超える場合は追加のルール枠が必要になることがある |
| レート制限ルール | ルール数や評価対象リクエスト量に依存 | 高頻度なエンドポイント保護で重要になる |
| マネージドルールセット | 一部は上位プラン/アドオン扱い | 追加の脅威インテリジェンス系ルールセットは別枠のことがある |
具体的な単価やプラン別の上限は変動するため、最新の料金ページで確認してください。ルール数とレート制限の利用範囲が主なコストドライバになります。
セキュリティ
- OWASP Top 10対策: SQLi・XSS等のシグネチャをマネージドルールでカバーし、アプリ改修なしに既知の攻撃を遮断
- 最小公開の原則: WAFを経由するプロキシ設定を徹底し、オリジンのIPアドレスを推測されないようにする
- TLS終端と検査: HTTPSをエッジで終端し、暗号化されたペイロードも検査対象にする
- 権限分離: WAFルールの編集権限を運用担当者に限定し、誤設定の影響範囲を抑える
- 多層防御: WAF単体に依存せず、DDoS防御・Zero Trustアクセス制御・オリジン側のファイアウォールと組み合わせる
WAFを有効にしたからといって、オリジンのIPアドレスを外部に晒したまま直接インターネット公開するのはNGです。WAFを迂回して直接オリジンへ到達されれば検査は無意味になります。オリジン側でCloudflareのIPレンジ以外からの接続を拒否するなど、WAF経由のトラフィックのみを受け付ける構成にしてください。また、検証なしに全ルールをいきなり遮断に設定して本番トラフィックを止めてしまうのも避けるべきです。
関連サービス・比較
| 観点 | Cloudflare WAF | Cloudflare DDoS防御 |
|---|---|---|
| 主な対象層 | レイヤー7(HTTP/HTTPS) | 主にレイヤー3/4・一部レイヤー7 |
| 防御対象 | SQLi・XSS等のアプリケーション層攻撃 | 大量トラフィックによる可用性妨害 |
| 設定単位 | ルール(マネージド/カスタム/レート制限) | 自動検知が基本、必要に応じてルール調整 |
| 典型的なアクション | 許可/ログ/遮断/チャレンジ | トラフィックの吸収・スクラビング |
| 有効化条件 | プロキシ設定済みドメインで利用 | プロキシ設定済みドメインで自動的に有効 |
| 組み合わせ方 | アプリ層の入口検査として併用 | ネットワーク層の土台として常時稼働 |
ハンズオン / CLI例
# wrangler CLIでログインし、アカウントにアクセスできることを確認
wrangler login
wrangler whoami
# ゾーン一覧を確認し、WAFを設定したいドメインのゾーンIDを控える
wrangler zones list
# WAFのカスタムルールやレート制限ルールはダッシュボードまたは
# Cloudflare APIから管理する。API経由でルールセットの一覧を取得する例:
curl -s -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/rulesets" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json"
# 特定のルールセット(例: カスタムWAFルール)の詳細を確認する例:
curl -s -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/rulesets/<RULESET_ID>" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json"
Cloudflare Service
Web Application Firewall (WAF)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
セキュリティ・ID
比較で見る軸
クラウド: Cloudflare / カテゴリ: セキュリティ・ID / 難易度: intermediate
導入後に効く点
マネージドルール・レート制限・カスタムルールを組み合わせて構成できる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Cloudflare
- カテゴリ
- セキュリティ・ID
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- security / reliability
判断チェックリスト
- 自社の用途が「セキュリティ・ID / security」に近いか確認する。
- 強みである「Cloudflareのエッジで動く、アプリ手前のレイヤー7防御。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。