Cloudflare WAF(ファイアウォール)入門:無料の5つのルールだけで悪意あるトラフィックを80%カットする方法

はじめに
サーバーのログを見て、見知らぬ国からの大量のアクセスや、/wp-login.php への執拗なアタックにうんざりしたことはありませんか?
Cloudflareを導入すればWAF(Web Application Firewall)が使えますが、無料プラン(Free Plan)では**「カスタムルールは5つまで」**という制限があります。Proプランに上げれば20個まで増えますが、まずは無料でなんとかしたいですよね。
「たった5個で守れるの?」
答えはYESです。実は、サイバー攻撃の8割は単純なBotやスクリプトキディによるものです。これらは「黄金の5ルール」を正しい順序で配置するだけで、驚くほど効果的にシャットアウトできます。
この記事では、私が実際に運用している「無料版最強のWAF設定」を公開します。コピペで使えるルール式も用意しました。
ルールの優先順位(Priority)の極意
WAF設定で最も重要なのは順番です。Cloudflareのルールは上から順に評価され、条件に合致した時点でアクションが実行されます。
間違って「全ての海外IPをブロック」を一番上に書いてしまうと、その下にある「Google Botは許可」というルールが読み込まれず、SEOが死にます。
正しい順序(鉄則):
- 絶対に通すもの(Allow): 自分のIP、検索エンジンのBotなど。
- 明らかに怪しいもの(Block/Challenge): データセンターIP、脅威スコアが高いIPなど。
- 特定の攻撃パターン(Block): SQLインジェクション試行、異常なUser-Agentなど。
【実践】黄金の5ルール設定ガイド
Cloudflareダッシュボードの Security > WAF > Custom rules から設定します。
上から順に、Priority 1〜5として作成してください。
ルール1(最優先):ホワイトリスト - 味方を守る
誤爆を防ぐため、確実に許可したい通信を最優先で通します。
- 名前:
Whitelist - Reliable Sources - Expression:
(cf.client.bot) or (ip.src in {1.2.3.4 5.6.7.8})cf.client.bot: Google, Bingなどの「検証済み良性Bot」を自動判別します。ip.src: あなたの自宅やオフィスのIPアドレス(必要なら記述)。
- Action:
Skip(All remaining custom rules) またはAllow- 推奨:
Skipを選び、Log以外の全てのチェックをスキップさせると確実です。
- 推奨:
ルール2:データセンター/クラウド経由のアクセス制限
一般ユーザーがAmazon Web Services (AWS) や Google Cloud (GCP) のサーバーからWebサイトを見ることはまずありません。そこから来るのはBotかスクレイピングツールです。
- 名前:
Challenge - Data Centers - Expression:
(ip.geoip.asnum in {13335 15169 16509 14618 45090})- これらはAWS, GCP, Azure, Alibaba Cloud, Tencent Cloudなどの主要なASN(自律システム番号)です。
- Action:
Managed Challenge- 重要: いきなりBlockせず「Challenge(人間確認)」にします。万が一VPN経由の人間がいても、クリック認証で通れます。
ルール3:脅威スコア(Threat Score)フィルター
Cloudflareは全アクセスの「評判」をスコアリングしています。これを利用します。
- 名前:
Block - High Threat Score - Expression:
(cf.threat_score gt 10) - Action:
Managed Challenge(スコア50以上ならBlockでも可)- スコアが高い=過去に悪さをしたIPです。問答無用でチェックを入れます。
ルール4:異常なUser-Agentの排除
ブラウザではない、明らかなスクリプトツールを弾きます。
- 名前:
Block - Bad User Agents - Expression:
(http.user_agent eq "") or (http.user_agent contains "python") or (http.user_agent contains "curl") or (http.user_agent contains "wget") or (http.user_agent contains "java") - Action:
Block- 一般のブラウザがUAを空にしたり、“python-requests”と名乗ることはありません。これは即ブロックでOK。
ルール5:重要パスの保護(管理画面など)
最後に、攻撃されやすい特定のURLを守ります。
- 名前:
Protect - Admin Area - Expression:
(http.request.uri.path contains "/wp-login") or (http.request.uri.path contains "/wp-admin") or (http.request.uri.path contains "/.env") - Action:
Managed ChallengeまたはBlock- ルール1で自分のIPを許可済みなので、ここでは厳しめに制限しても自分は入れます。
運用のアドバイス
最初は「Log」モードで様子を見る
ルールを作ってすぐ Block にするのは怖いです。誤設定で全ユーザーを遮断してしまう可能性があります。
最初はActionを Log(記録のみ)にして数日運用し、Security > Events ログを確認しましょう。「あ、このルールでGoogle Botが引っかかってる!」といったミスに気づけます。
Managed Challenge(マネージドチャレンジ)を活用する
昔の「CAPTCHA(信号機の写真を選ぶやつ)」はユーザー体験最悪でしたが、今のCloudflareの「Managed Challenge」は優秀です。
多くの場合、ブラウザの挙動を裏でチェックするだけで、ユーザーは何も気づかずに通過できます(JSチャレンジ)。怪しい時だけ「人間であることを確認します」というチェックボックスが出ます。Block するか迷ったら、とりあえず Managed Challenge にしておけば間違いありません。
まとめ:無料でもここまで守れる
- ホワイトリスト(自分とGoogle)
- データセンターBot
- 高脅威IP
- スクリプトUA
- 管理画面
この5段構えで、あなたのサイトのセキュリティレベルは劇的に向上します。
サーバーのCPU負荷が下がり、ログが綺麗になり、夜もぐっすり眠れるようになるはずです。さあ、今すぐCloudflareのダッシュボードを開いて設定しましょう!
Cloudflare無料WAF設定フロー
5つのルール枠で最大効果を出す設定手順
⏱️ Estimated time: 30 min
- 1
Step1: ルール1作成(ホワイトリスト)
Custom rulesで「Create rule」。cf.client.bot または自分のIPを指定し、Actionを「Skip」に設定。これをPriority 1にする。 - 2
Step2: ルール2作成(Bot対策)
AWSやGCPなどの主要データセンターASN(AS16509など)を指定し、Actionを「Managed Challenge」に設定。 - 3
Step3: ルール3作成(脅威スコア)
cf.threat_score > 10 を指定し、Actionを「Managed Challenge」に設定。 - 4
Step4: ルール4・5作成(攻撃遮断)
異常なUser-Agentや、/wp-adminなどの特定パスを指定し、Actionを「Block」または「Managed Challenge」に設定。 - 5
Step5: ルールの順序確認
一覧画面で、ルール1(ホワイトリスト)が一番上にあることを再確認する。これが最重要。
FAQ
自分のIPが変わったらどうなりますか?
Managed ChallengeとJS Challengeの違いは?
5つじゃ足りない場合は?
3 min read · 公開日: 2025年12月1日 · 更新日: 2026年1月22日
関連記事
Next.js ファイルアップロード完全ガイド:S3/Qiniu Cloud 署名付き URL 直接アップロード実践

Next.js ファイルアップロード完全ガイド:S3/Qiniu Cloud 署名付き URL 直接アップロード実践
Next.js Eコマース実践:カートと Stripe 決済の完全実装ガイド

Next.js Eコマース実践:カートと Stripe 決済の完全実装ガイド
Next.js ユニットテスト実践:Jest + React Testing Library 完全設定ガイド

コメント
GitHubアカウントでログインしてコメントできます