最初の投稿日:2026-08-18
WordPress の防御をサイト側のプラグインだけで頑張るのは、玄関を開けたまま部屋に鍵を付けるようなものです。攻撃はサーバーに届く前に止めるのが一番安い。 Cloudflare を前に置くと、そこがまとめて片付きます。
無料プランで最初にやることを、効く順に並べます。
1. 常時 SSL と HTTPS の強制
SSL/TLS の暗号化モードを Full (strict) にします。Flexible のままだと Cloudflare とサーバーの間が暗号化されません。
そのうえで「Always Use HTTPS」を ON。これで http へのアクセスが全部 https に飛びます。サイト側でリダイレクトを書く必要はありません。
2. wp-login.php と wp-admin を閉じる
一番殴られる場所です。WAF のカスタムルールで、自分の IP 以外からのアクセスをブロックします。
(http.request.uri.path contains "/wp-login.php" and ip.src ne 203.0.113.10)
or (http.request.uri.path contains "/wp-admin" and ip.src ne 203.0.113.10)
固定 IP が無い場合は、国別(日本以外を Managed Challenge)に緩めます。それだけでもログイン試行はほぼ消えます。
自分を締め出すと復旧が面倒なので、別ブラウザで管理画面に入れることを確認してから保存すること。
3. xmlrpc.php を落とす
使っていないなら塞ぎます。ブルートフォースの増幅に使われる古い入り口です。
http.request.uri.path eq "/xmlrpc.php"
これを Block に。Jetpack や外部投稿ツールを使っている場合だけ、例外を足します。
4. レート制限
同じ IP から短時間に大量アクセスが来たら弾きます。無料プランでも 1 ルールは使えます。
- 対象:
/wp-login.php - しきい値: 10 リクエスト / 1 分
- アクション: 1 時間ブロック
総当たりログインはこれで実質止まります。
5. キャッシュを効かせる
守りの設定を入れると、副作用で速くなります。やることは静的ファイル(画像・CSS・JS)のエッジキャッシュを効かせることだけです。
ただしログイン中のページをキャッシュさせないこと。WordPress の場合、wp-admin 配下と wp- 系 Cookie を持つリクエストはバイパスするルールを入れておきます。ここを雑にやると、他人の管理画面が見えるという最悪の事故になります。
画像まで軽くしたいなら、Pro プラン以上で Polish が使えます。メタデータを剥がして可逆・非可逆で圧縮し、キャッシュに最適化済みの画像を置いてくれます。ワンクリックで有効になるので、画像の多いサイトなら費用対効果は高いです。
設定したあとに見るもの
Cloudflare のダッシュボードには、どのルールが何回発動したかが残ります。1 週間ほど眺めると、自分のサイトが何に狙われているかが分かります。
ログの量は人力で追える規模ではないので、私はここを AI に読ませて傾向だけ拾っています。判断は自分でやりますが、探すところは任せたほうが速い。
設定の代行や、今の状態が妥当かの確認は Cloudflare セキュリティ対策 から相談してください。
この記事は人間による下書きからAIのサポートを経て、最後に人間がチェックして投稿しております。
