WordPressサイトロックアウト通知の正体

はじめに

ある朝、自分のWordPressサイト宛にこんなメールが届いていたとしたら、あなたはどう感じるでしょうか。

件名:

Example Domain

example.com

サイトロックアウト通知

ログインに失敗した回数が多いか、ユーザー名が無効なため、ロックダウンイベントが発生しました。

ユーザー名: 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エラーが返ります。それなのになぜ「ログイン失敗」が記録されるのでしょうか。

答えは、攻撃ボットはブラウザのようにページを表示しないからです。

通常のログイン操作では:

  1. ブラウザがログインページをGETリクエストで取得
  2. フォームに入力して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変更の効果攻撃を確実に空振りさせるハニーポット効果

「ロックアウト通知が届いた=攻撃が防げている」と理解しておけば、焦る必要はありません。とはいえ、通知が頻発する状況は攻撃が継続していることを意味するため、定期的な設定の見直しと多層防御の強化をおすすめします。


参考

← ITQ Lab トップに戻る