はじめに
ある朝、自分のWordPressサイト宛にこんなメールが届いていたとしたら、あなたはどう感じるでしょうか。
サイトロックアウト通知
ログインに失敗した回数が多いか、ユーザー名が無効なため、ロックダウンイベントが発生しました。
ユーザー名: admin
IPアドレス: xxx.xxx.xxx.xxx
組織: Cloudflare WARP
AS番号: AS13335 Cloudflare, Inc.
「ハッキングされた?」「サイトが乗っ取られた?」と焦るかもしれません。しかし落ち着いて読み解くと、これはセキュリティが正常に機能している証拠です。
本記事では、この通知が何を意味しているのか、攻撃の仕組み、そして有効な対策について技術的に解説します。
環境
- WordPress 6.9.4
- セキュリティプラグイン:All-In-One Security (AIOS) 5.4.6
- ログインURL:カスタムURLに変更済み
1. ロックアウト通知メールを読み解く
メールに記載された情報を整理します。
| 項目 | 値 |
|---|---|
| ユーザー名 | admin |
| IPアドレス | xxx.xxx.xxx.xxx(Cloudflare管理のIP) |
| 組織 | Cloudflare WARP |
| AS番号 | AS13335 Cloudflare, Inc. |
ここで重要なポイントが3つあります。
① ユーザー名が admin
WordPressのデフォルトユーザー名です。インターネット上の多くのWordPressサイトで使われているため、攻撃ボットが真っ先に試みる定番の標的です。
② 組織が Cloudflare WARP
攻撃元を直接特定できない理由がここにあります(後述)。
③ ロックアウトが「発生した」こと
これはAIOSが不正アクセスを検知して遮断したという意味です。攻撃が成功したわけではありません。
2. なぜ wp-login.php が404なのに「ログイン失敗」が記録されるのか
ログインURLをカスタム変更しているため、/wp-login.php にアクセスすると404エラーが返ります。それなのになぜ「ログイン失敗」が記録されるのでしょうか。
答えは、攻撃ボットはブラウザのようにページを表示しないからです。
通常のログイン操作では:
- ブラウザがログインページをGETリクエストで取得
- フォームに入力してPOSTリクエストを送信
しかし自動化されたボットは手順1をスキップし、最初から wp-login.php のURLにログイン情報を含んだPOSTリクエストを直接送りつけます。
POST /wp-login.php HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded
log=admin&pwd=password123&wp-submit=Log+In
POST /wp-login.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
log=admin&pwd=password123&wp-submit=Log+In
サーバーが表向き404を返しても、AIOSはこのPOSTリクエストを傍受・解析し、無効なユーザー名(admin)による試行として「ログイン失敗」をカウントします。一定回数を超えるとロックアウトが発動し、通知メールが送られます。
3. Cloudflare WARP(AS13335)とは何か
Cloudflare WARPの正体
Cloudflare WARPは、Cloudflareが提供するVPN類似サービスです。ユーザーのトラフィックをCloudflareのネットワーク経由で中継し、実際の接続元IPアドレスをCloudflareのIPに置き換えます。AS13335はCloudflareが運用するネットワーク全体を指すAS(自律システム)番号です。
攻撃者がCloudflareを経由する理由
① 身元の隠蔽
実際の接続元IPが隠されるため、管理者が特定のIPをブロックしても攻撃者の本拠地を特定できません。
② IPアドレスの分散
大規模なブルートフォース攻撃では、単一IPからの集中アクセスを避けるため、多数の異なるIPを使い回します。Cloudflareの広大なネットワークを中継点として使うことで、IPを次々と切り替えながら攻撃を継続できます。
補足: 「Cloudflareが攻撃を野放しにしている」と感じるかもしれませんが、WARPはプライバシー保護を目的としたサービスであり、暗号化通信の中身を検査する設計にはなっていません。Cloudflare自体はBot Management等の製品で対策を講じていますが、悪用されてしまうジレンマを抱えています。
4. 攻撃の全体像:分散型ブルートフォース攻撃
今回の攻撃パターンを整理すると以下の通りです。
[世界中のボットネット] ↓ (Cloudflare WARP経由でIPを匿名化・分散) [WordPressサイト /wp-login.php] ↓ (POSTリクエストで admin + パスワードリストを総当たり) [AIOS がログイン試行を検知] ↓ (閾値超過でロックアウト発動) [通知メール送信]
[世界中のボットネット]
↓ (Cloudflare WARP経由でIPを匿名化・分散)
[WordPressサイト /wp-login.php]
↓ (POSTリクエストで admin + パスワードリストを総当たり)
[AIOS がログイン試行を検知]
↓ (閾値超過でロックアウト発動)
[通知メール送信]
これはクレデンシャルスタッフィングまたはブルートフォース攻撃と呼ばれる手法で、インターネット上のWordPressサイト全般を無差別に標的にしています。特定のサイトを狙った攻撃ではなく、自動ボットが片っ端から試みているものです。
5. ログインURL変更の効果:「意図せぬハニーポット」
ログインURLを /wp-login.php から別のURLに変更していると、攻撃ボットはデフォルトURLに対してPOSTを送り続けます。
この状況を整理すると:
- 攻撃ボットは存在しないURLに対してログイン試行
- AIOSは試行を検知してロックアウト
- 攻撃者の試みは完全に空振り
これは意図せずしてハニーポット的な構成になっています。デフォルトURLに来た試行はすべて失敗が確定しているため、AIOSがその試行を確実に捕捉・遮断できます。
6. さらに強固にするための追加対策
現状でも十分な防御が機能していますが、多層防御の観点から以下の対策も検討する価値があります。
AIOS で設定できる追加対策



| 対策 | 内容 |
|---|---|
| ログイン試行回数の制限 | 失敗N回でロックアウトする閾値を設定 |
| CAPTCHA の有効化 | ログインフォームにGoogle reCAPTCHA等を追加 |
| 国別IPフィルタリング | 日本以外からのアクセスをブロック |
| XML-RPC の無効化 | 別の攻撃経路を塞ぐ |
WordPress設定での対策
- 管理者ユーザー名を
admin以外に変更する(最重要) - 二要素認証(2FA)の導入
インフラレベルの対策
- Cloudflare(CDN)の導入:Botトラフィックの大幅な削減
- WAF(Web Application Firewall)の利用
まとめ
| 項目 | 解説 |
|---|---|
| ロックアウト通知の意味 | AIOSが不正ログイン試行を検知・遮断している証拠 |
ユーザー名 admin への攻撃 | デフォルト名を狙う自動ボットの定番手口 |
| Cloudflare WARP経由の攻撃 | IPを匿名化・分散して追跡を困難にする手法 |
| 404なのにログイン失敗が記録される理由 | ボットがPOSTリクエストを直接送りつけているため |
| ログインURL変更の効果 | 攻撃を確実に空振りさせるハニーポット効果 |
「ロックアウト通知が届いた=攻撃が防げている」と理解しておけば、焦る必要はありません。とはいえ、通知が頻発する状況は攻撃が継続していることを意味するため、定期的な設定の見直しと多層防御の強化をおすすめします。