WordPressとサーバーはそのまま残し、手前にCloudflareを置くと、怪しい通信やログイン画面への攻撃をサーバーに届く前に減らせます。無料プランでも、WAF、ログイン画面の回数制限、Bot対策の基本はそろいます。ただし、プラグインの穴そのものはふさがらないため、更新は続ける必要があります。設定のときは、元のサーバーを直接狙われない工夫とメールの設定を忘れないことが大切です。
結論:作り直さずに、攻撃を「手前で止める」方法
WordPressをやめる準備がまだできていない、予約や会員の機能があってすぐには移れない。そんなときに、今のサイトを残したまま守りを足す方法が、Cloudflareを手前に置くやり方です。WordPressをCloudflareへ移す4つの方法で「方法① Cloudflareを門番にする」として紹介したものを、この記事では設定の中身まで掘り下げます。
レンタルサーバーにもWAFはありますが、レンタルサーバーのセキュリティだけで大丈夫?で見たとおり、サーバー側の防御だけでは止められない攻撃も多くあります。Cloudflareは、サーバーの外にもう一枚の網を張る役目です。
Cloudflareを前に置くと何が起きるか
ネームサーバーをCloudflareに切り替え、サイトのDNSの記録を「プロキシ済み」(管理画面のオレンジの雲)にすると、通信の流れが次のように変わります。
| 前 | 後 | |
|---|---|---|
| 通信の流れ | 訪問者 → サーバー | 訪問者 → Cloudflare → サーバー |
| ドメインを調べると返るIPアドレス | サーバーのIPアドレス | CloudflareのIPアドレス(サーバーの住所は隠れる) |
| 怪しい通信 | サーバーまで届き、WordPressやサーバーのWAFが相手をする | Cloudflareのルールに当たったものは、サーバーに届く前に止まる |
| メール | MXレコードどおり | 変わらない(MXなどはプロキシできず、常にDNSのみ) |
Cloudflareの公式ドキュメントによると、プロキシできるのはA・AAAA・CNAMEの3種類の記録だけで、MXやTXTは常に「DNSのみ」です。また「DNSのみ」の記録は、問い合わせた人にサーバーの本当のIPアドレスを返します。この点は、あとのつまずきやすい点で大事になります。
できること
WAF(不正な通信を止める)
Cloudflareが用意したルール(マネージドルール)と、自分で書くルール(カスタムルール)の2種類があります。無料プランでも「Free Managed Ruleset」が使え、カスタムルールは5つまで作れます。カスタムルールでは、条件に合った通信を「ブロック」「マネージドチャレンジ(人間か確かめる画面)」「スキップ」などで扱えます。
ログイン画面への回数制限
回数制限のルール(Rate limiting rules)は、Cloudflareの公式ドキュメントでも、ログイン画面を総当たり攻撃から守る使い方が例に挙がっています。無料プランは1ルールで、数える期間と止める時間はどちらも10秒です。短いですが、機械的に大量に試す攻撃を鈍らせる効果は期待できます。
Bot対策
無料プランでは「Bot Fight Mode」が使え、よく知られたボットの特徴に合う通信に、計算の手間がかかる確認を出します。手軽な反面、細かい例外を作れないという弱点があります(後述)。
管理画面へのアクセス制限
カスタムルールで、/wp-adminやwp-login.phpへの接続を、会社のIPアドレスや国で絞れます。さらに強くしたい場合は、Cloudflare Access(Zero Trustの機能)で、管理画面に入る前にCloudflare側のログインを求める方法もあります。Accessは初期状態で「許可した人以外は拒否」になる仕組みです。料金や人数の条件は、契約前に公式で確かめてください。
表示の高速化
画像・CSS・JavaScriptなどは、Cloudflareの拠点にキャッシュされて配られます。HTMLとJSONは初期設定ではキャッシュされないため、ログイン中の管理画面がキャッシュされる心配は、初期設定のままなら小さくて済みます。
WordPress向けの設定例
無料プランのカスタムルール5つと回数制限1つで、当ラボが小さな会社のサイトでまず考える組み合わせです。式はCloudflareの「式エディター」での書き方の例で、使う前にご自分のサイトに合わせて見直してください。
| 目的 | 条件の例 | 動作 | 注意 |
|---|---|---|---|
| XML-RPCを止める | http.request.uri.path eq "/xmlrpc.php" | ブロック | Jetpackやスマートフォンのアプリで使っているなら、止めずに回数制限にする |
| ログイン画面を会社からだけにする | http.request.uri.path eq "/wp-login.php" and not ip.src in {会社のIPアドレス} | マネージドチャレンジ | 在宅や外出先から入る人がいるなら、ブロックではなくチャレンジにする |
| 管理画面を国内からだけにする | starts_with(http.request.uri.path, "/wp-admin") and ip.src.country ne "JP" | マネージドチャレンジ | /wp-admin/admin-ajax.phpはサイトの表側でも使われるので、除外を検討する |
| 置いていないはずのファイルを探す通信を止める | http.request.uri.path in {"/wp-config.php.bak" "/.env" "/backup.zip"} | ブロック | 根本の対策は、そうしたファイルを公開フォルダに置かないこと |
| ログインの連打を鈍らせる(回数制限) | http.request.uri.path eq "/wp-login.php" and http.request.method eq "POST" | 上限を超えたらブロック | 無料プランは10秒ごとに数え、10秒止める。上限は少なめから試す |
できないこと(WordPress本体の脆弱性は残る)
- 穴そのものはふさがらない:プラグイン・テーマ・本体・PHPの更新は引き続き必要です。
- 正規の通信に見える攻撃は見分けにくい:Patchstackの報告は、権限の確認漏れを突く攻撃は通常のログイン済みの通信と見分けがつかず、従来のWAFでは防ぎにくいとしています。CloudflareもWAFの一つで、例外ではありません。
- サーバーを直接狙われると素通り:元のサーバーのIPアドレスが知られていると、Cloudflareを通らずに攻撃されます(次の節)。
- サーバーの中の問題は見えない:すでに入り込んだ不正なプログラム、同じサーバーの別のサイトからの侵入、漏れたパスワードでのログインには効きません。
Cloudflareは「攻撃される回数を減らす」道具で、「攻撃されても大丈夫にする」道具ではありません。更新を続けられないことが根本の悩みなら、攻撃される場所そのものを減らす方法(静的化やEmDashへの移行)も比べてみてください。
設定の流れ
- 今のDNSの記録を書き写す
今のDNSの管理画面で、A・CNAME・MX・TXTなどの記録を全部控えます。メールの設定(MX、SPFのTXT)は特に念入りに。 - Cloudflareにサイトを追加する
無料プランを選び、読み込まれた記録が控えと同じか一つずつ確かめます。足りないものは手で足します。 - プロキシする記録を決める
サイトの記録(ドメイン名とwww)だけをプロキシ済みにし、メールなどの記録はDNSのみのままにします。 - SSLのモードを「フル(厳密)」にする
サーバー側にも有効な証明書があることを確かめてから設定します。 - ネームサーバーを切り替える
ドメインを契約している会社の管理画面で、Cloudflareが示すネームサーバーに変えます。切り替え後、サイトの表示・管理画面へのログイン・フォームの送信・メールの送受信を確かめます。 - 守りの設定を足していく
マネージドルールを確かめ、上の設定例をチャレンジから始めます。数日ようすを見て、問題がなければ強めます。 - 元のサーバーへの直接の接続を絞る
次の節の「元のサーバーを守る」を行います。
ネームサーバーの切り替えでメールを止めないための詳しい注意は、WordPressをCloudflareへ移す4つの方法の「つまずきやすい点」も参考にしてください。
つまずきやすい4つの点
① 元のサーバーのIPアドレスが知られている
Cloudflareの公式ドキュメントは、プロキシ済みの記録でサーバーのIPアドレスを隠すとともに、Cloudflare以外からの通信をサーバー側で止めることをすすめています。また、Cloudflareに移る前のDNSの記録の履歴や、SPFなどのTXTの記録からIPアドレスが漏れることがあるとして、記録の見直しや、移行後にサーバーのIPアドレスを変えることも挙げています。同じサーバーを指すmailやftpの記録がDNSのみのまま残っていないかも確かめましょう。共用のレンタルサーバーでは、Cloudflare以外を止める設定ができるかどうかをサーバー会社に確かめてください。
② SSLのモードを「フレキシブル」にしてしまう
「フレキシブル」は、訪問者とCloudflareの間だけを暗号化し、Cloudflareとサーバーの間は暗号化しないモードです。Cloudflareは「フル」か「フル(厳密)」を強くすすめています。WordPress側の常時HTTPSの設定とかみ合わず、表示がおかしくなる原因にもなりやすいので、最初から「フル(厳密)」を目指しましょう。
③ ログに全員が同じIPアドレスで記録される
Cloudflareを通すと、サーバーのログにはCloudflareのIPアドレスが記録されます。訪問者の本当のIPアドレスはCF-Connecting-IPという項目で届くので、Apacheならmod_remoteipなどで読み取るよう設定します。これをしないと、ログイン回数を制限するプラグインが全員をまとめて締め出したり、逆に誰も止められなかったりします。
④ Bot Fight Modeが必要な通信まで止める
Bot Fight Modeは、スマートフォンのアプリや外部サービスからの通信にも確認を出すことがあり、カスタムルールの「スキップ」などで例外を作れません。アプリからの投稿、決済や予約の外部サービスからの通知、監視サービスなどを使っている場合は、オンにした直後にそれらが動いているかを確かめ、困るなら止めます。
無料プランと有料プランの違い
| Free | Pro | |
|---|---|---|
| 料金 | 0ドル | 年払いで月20ドル、月払いで月25ドル |
| マネージドルール | Free Managed Ruleset | +Cloudflare Managed Ruleset、OWASP Core Ruleset |
| カスタムルール | 5つ | 20 |
| 回数制限のルール | 1つ(10秒で数え、10秒止める) | 2つ(最大1分で数え、最大1時間止める) |
| Bot対策 | Bot Fight Mode(例外を作れない) | Super Bot Fight Mode(スキップのルールで例外を作れる) |
| DDoS攻撃への防御 | 上限なしで含まれる | 同じ |
| APO(WordPressのページの高速化) | 月5ドルの追加 | 含まれる |
当ラボの見立てでは、問い合わせ中心の小さな会社のサイトなら、まず無料プランで十分に始められます。Proプランを考えるのは、WordPressの攻撃に合わせたルールをより多く使いたいとき、アプリや外部サービスのためにBot対策の例外が必要なとき、ログイン画面の回数制限を長めにしたいとき、などです。
よくある質問
Cloudflareを前に置けば、プラグインの更新はしなくてもよいですか?
更新は引き続き必要です。CloudflareのWAFは怪しい通信を減らしますが、プラグインの穴そのものはふさぎません。特に、ログインした人の通信に見える攻撃は、通信の形だけでは見分けにくいとされています。更新までの時間を稼ぐ道具と考えてください。
無料プランだけでも、効果はありますか?
あります。無料プランでも、WAFと無料のマネージドルール、上限のないDDoS攻撃への防御、カスタムルール5つ、回数制限のルール1つ、Bot Fight Modeが使えます。小さな会社のサイトなら、まず無料プランで始め、足りない部分が見えてから有料プランを考えるので十分です。
ネームサーバーを変えると、メールが止まりませんか?
MXレコードなどメールの設定を正しく移せば止まりません。Cloudflareでは、メールに使うMXレコードはプロキシできず、常に「DNSのみ」で動きます。切り替える前に、今のDNSの記録をすべて書き写し、Cloudflare側に同じ内容があるか確かめてください。
Bot Fight Modeをオンにしたら、スマートフォンのアプリから投稿できなくなりました。
Cloudflareの公式ドキュメントは、Bot Fight Modeがスマートフォンアプリや外部サービスからの通信にも確認画面を出すことがあり、カスタムルールで例外を作れないとしています。アプリやJetpackなど外部からの接続を使っている場合は、Bot Fight Modeを止めるか、例外を作れる有料プランの仕組みを検討してください。
ログイン回数を制限するプラグインが、全員を同じ人として扱ってしまいます。
Cloudflareを通すと、サーバーにはCloudflareのIPアドレスが記録されるためです。訪問者の本当のIPアドレスはCF-Connecting-IPという項目で届くので、サーバー側(Apacheならmod_remoteipなど)やプラグインの設定で、そちらを使うようにします。分からなければサーバー会社に相談してください。
Cloudflareを前に置くと、表示は速くなりますか?
画像やCSSなどは、Cloudflareの拠点から配られるため速くなることが多いです。ただし、HTMLは初期設定ではキャッシュされません。WordPressのページそのものまで速くしたい場合は、APO(Automatic Platform Optimization)という仕組みがあり、無料プランでは月5ドルの追加、Proプラン以上では含まれています。
参照元
- Cloudflare Docs:Proxy status(2026年4月21日更新)
- Cloudflare Docs:WAF Managed Rules(2026年9月8日更新)
- Cloudflare Docs:WAF Custom rules(2026年10月16日更新)
- Cloudflare Docs:Rate limiting rules(2026年8月25日更新)
- Cloudflare Docs:Bot Fight Mode(2026年8月3日更新)
- Cloudflare Docs:Self-hosted public application(Access、2026年4月17日更新)
- Cloudflare Docs:Protect your origin server(2026年10月2日更新)
- Cloudflare Docs:Encryption modes(2026年4月16日更新)
- Cloudflare Docs:Restoring original visitor IPs(2026年4月23日更新)
- Cloudflare Docs:Default cache behavior(2026年9月14日更新)
- Cloudflare Docs:Automatic Platform Optimization(2026年4月16日更新)
- Cloudflare:Network & CDN の料金プラン
- Patchstack:State of WordPress Security in 2026(2026年2月25日更新)
- 最終確認日:2026年11月4日
URLを送るだけで、外から確認できる範囲で、今の守りの状態と向いている方法をお返しします。