言語を切り替える
テーマを切り替える

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

はじめに

サーバーのログを見て、見知らぬ国からの大量のアクセスや、/wp-login.php への執拗なアタックにうんざりしたことはありませんか?
Cloudflareを導入すればWAF(Web Application Firewall)が使えますが、無料プラン(Free Plan)では**「カスタムルールは5つまで」**という制限があります。Proプランに上げれば20個まで増えますが、まずは無料でなんとかしたいですよね。

「たった5個で守れるの?」
答えはYESです。実は、サイバー攻撃の8割は単純なBotやスクリプトキディによるものです。これらは「黄金の5ルール」を正しい順序で配置するだけで、驚くほど効果的にシャットアウトできます。

この記事では、私が実際に運用している「無料版最強のWAF設定」を公開します。コピペで使えるルール式も用意しました。

80%削減
悪意あるトラフィック

ルールの優先順位(Priority)の極意

WAF設定で最も重要なのは順番です。Cloudflareのルールは上から順に評価され、条件に合致した時点でアクションが実行されます。
間違って「全ての海外IPをブロック」を一番上に書いてしまうと、その下にある「Google Botは許可」というルールが読み込まれず、SEOが死にます。

正しい順序(鉄則):

  1. 絶対に通すもの(Allow): 自分のIP、検索エンジンのBotなど。
  2. 明らかに怪しいもの(Block/Challenge): データセンターIP、脅威スコアが高いIPなど。
  3. 特定の攻撃パターン(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 にしておけば間違いありません。

まとめ:無料でもここまで守れる

  1. ホワイトリスト(自分とGoogle)
  2. データセンターBot
  3. 高脅威IP
  4. スクリプトUA
  5. 管理画面

この5段構えで、あなたのサイトのセキュリティレベルは劇的に向上します。
サーバーのCPU負荷が下がり、ログが綺麗になり、夜もぐっすり眠れるようになるはずです。さあ、今すぐCloudflareのダッシュボードを開いて設定しましょう!

Cloudflare無料WAF設定フロー

5つのルール枠で最大効果を出す設定手順

⏱️ Estimated time: 30 min

  1. 1

    Step1: ルール1作成(ホワイトリスト)

    Custom rulesで「Create rule」。cf.client.bot または自分のIPを指定し、Actionを「Skip」に設定。これをPriority 1にする。
  2. 2

    Step2: ルール2作成(Bot対策)

    AWSやGCPなどの主要データセンターASN(AS16509など)を指定し、Actionを「Managed Challenge」に設定。
  3. 3

    Step3: ルール3作成(脅威スコア)

    cf.threat_score > 10 を指定し、Actionを「Managed Challenge」に設定。
  4. 4

    Step4: ルール4・5作成(攻撃遮断)

    異常なUser-Agentや、/wp-adminなどの特定パスを指定し、Actionを「Block」または「Managed Challenge」に設定。
  5. 5

    Step5: ルールの順序確認

    一覧画面で、ルール1(ホワイトリスト)が一番上にあることを再確認する。これが最重要。

FAQ

自分のIPが変わったらどうなりますか?
ルール1でIP指定している場合、IPが変わると自分がホワイトリストから外れてしまいます。固定IPでない場合は、ルール1には「自分へのIP制限」を含めず、ルール5(管理画面保護)のアクションを「Managed Challenge」にしておけば、IPが変わっても認証(クリック)だけで通過できるので安心です。
Managed ChallengeとJS Challengeの違いは?
Managed ChallengeはCloudflareが状況に応じて最適な検証方法(裏でのJS計算、クリック認証、パズルなど)を自動で選びます。JS Challengeは必ずJavaScriptの計算をさせます(5秒待たされるアレです)。基本的には、ユーザー体験が良いManaged Challengeを選んでおけばOKです。
5つじゃ足りない場合は?
「OR」条件を使って、類似のルールを1つにまとめましょう。例えば「悪いUser-Agent」と「悪いReferer」は1つのルール内で「OR」で繋げば1枠で済みます。それでも足りない場合は、月額20ドルのProプランを検討する価値があります。

3 min read · 公開日: 2025年12月1日 · 更新日: 2026年1月22日

コメント

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

関連記事