WordPressのログイン画面は、企業規模に関係なく毎日機械的な攻撃を受けています。対策として紹介される手法は多岐にわたりますが、実務で効果が大きいのは限られています。この記事では、費用をかけずに実装できる対策を、効果の大きい順に整理します。
効果が大きいのは二要素認証とアクセス制限
まず優先順位を明確にします。
対策の効果と手間の比較
| 対策 | 効果 | 手間 | 優先度 |
|---|---|---|---|
| 強固なパスワードへの変更 | 大きい | 小さい | 最優先 |
| 二要素認証の導入 | 極めて大きい | 中程度 | 高い |
| ログイン試行回数の制限 | 大きい | 小さい | 高い |
| 管理画面へのIP制限 | 極めて大きい | 中程度 | 条件次第 |
| ログインURLの変更 | 中程度 | 小さい | 補助的 |
| ユーザー名の秘匿 | 中程度 | 小さい | 高い |
パスワードの強化が土台になる
どれだけ他の対策を入れても、パスワードが「会社名+設立年」であれば意味が薄れます。12文字以上のランダムな文字列にし、パスワード管理ツールで保管する。ここが出発点です。
二要素認証があれば漏洩しても入られない
パスワードに加えて、スマートフォンのアプリで生成される確認コードを求める仕組みです。パスワードが漏れても、それだけではログインできません。WordPress公式も、セキュリティ強化の観点から認証の強化を挙げています(出典 WordPress Developer Resources Hardening WordPress)。
二要素認証の導入手順
実装は30分もかかりません。
プラグインで実装する
Wordfence、Two Factor、WP 2FAなどのプラグインで実装できます。管理者アカウントだけでも設定しておけば、最悪の事態は防げます。
- プラグインをインストールして有効化する
- 自分のユーザープロフィールで二要素認証を有効にする
- スマートフォンの認証アプリでQRコードを読み取る
- 表示されたコードを入力して設定を完了する
- リカバリーコードを保存する
- 一度ログアウトして、実際にログインできるか確認する
リカバリーコードの保管が必須
スマートフォンを紛失・機種変更した場合、認証アプリが使えなくなります。リカバリーコードを保管していないと、自分がログインできなくなります。印刷して施錠できる場所に保管するか、パスワード管理ツールに保存してください。
複数の管理者で設定する
1人だけが二要素認証を設定していても、他の管理者アカウントが弱いままなら意味がありません。管理者権限を持つ全アカウントで設定してください。
二要素認証を設定する前に、管理者アカウントが2つ以上あることを確認してください。1つしかない状態で認証に失敗すると、誰もログインできなくなります。
IP制限は条件が合えば最も強力
効果は最大ですが、使える環境が限られます。
固定IPの環境でのみ実用的
管理画面へのアクセスを特定のIPアドレスからだけに限定する設定です。攻撃者は物理的にログイン画面へ到達できなくなります。ただしオフィスの回線が固定IPでない場合、IPが変わるたびに自分が閉め出されます。
使える条件
- オフィスの回線が固定IPアドレスである
- 更新作業をオフィス内でのみ行う
- 外出先や自宅から作業する必要がない
- IPが変わった際に解除できる人がいる
設定場所と解除方法を必ず記録する
IP制限はサーバーの管理画面か設定ファイルで行います。設定した本人しか解除方法を知らない状態は非常に危険です。設定内容と解除手順を、運用マニュアルに記載してください。
代替としてベーシック認証を使う方法もある
IPが固定でない場合、管理画面のディレクトリにサーバー側の認証を追加する方法があります。WordPressのログイン画面が表示される前に、別のIDとパスワードを求める仕組みです。攻撃の大半はこの段階で止まります。多くのレンタルサーバーで管理画面から設定できます。
ログイン試行の制限とユーザー名の秘匿
手間が小さく効果が大きい対策です。
試行回数を制限すれば総当たりは成立しない
同じIPから一定回数ログインに失敗したら一時的に遮断する仕組みです。Wordfence、SiteGuard WP Plugin、Limit Login Attempts Reloadedなどで実装できます。機械的に何千回も試す攻撃が、物理的に不可能になります。
ユーザー名を推測されないようにする
攻撃はユーザー名の推測から始まります。以下を確認してください。
- adminというアカウントが存在しないか
- 会社名やドメイン名をユーザー名にしていないか
- 記事の著者表示がログイン名になっていないか
- プロフィールの「ブログ上の表示名」がログイン名と別か
著者ページからユーザー名が漏れることがある
WordPressの初期設定では、著者ページのURLにユーザー名が含まれることがあります。この状態では、記事を見るだけでログイン名が判明します。SEOプラグインの設定で著者ページを無効にするか、表示名を変更してください。
やりすぎると運用が回らなくなる
バランスの話です。
対策を入れすぎると自分が困る
IP制限、ログインURL変更、ベーシック認証、二要素認証をすべて入れると、担当者が変わったときに誰もログインできない状態になります。緊急時に告知を出せないというリスクも生まれます。
記録と共有が対策とセットになる
導入した対策は、必ず以下を記録してください。
| 記録項目 | 内容 |
|---|---|
| ログインURL | 変更している場合の実際のURL |
| ベーシック認証 | 設定の有無とIDの保管場所 |
| IP制限 | 許可しているIPと解除手順 |
| 二要素認証 | 設定者とリカバリーコードの保管場所 |
| 使用プラグイン | 名称と設定内容 |
最低限やるなら3つ
時間がないなら、パスワードの強化・ログイン試行の制限・二要素認証の3つです。この3つで、自動化された攻撃はほぼ通用しなくなります。IP制限とログインURL変更は、余裕があれば追加する補助的な対策と考えてください。
最後に
不正ログイン対策で効果が大きいのは、強固なパスワード、ログイン試行の制限、二要素認証の3点です。この3つは30分程度で実装でき、費用もかかりません。IP制限は最も強力ですが、固定IPの環境でなければ自分が閉め出されるリスクを伴います。そして何を設定したかを記録し、複数人で共有することが、対策そのものと同じくらい重要です。
Web管理では、月額1万円からWordPressサイトの運用保守を代行しています。セキュリティ設定の実施、二要素認証の導入支援、設定内容の記録整備まで対応可能です。「対策しているつもりだが実際どうなのか診断してほしい」というご相談も歓迎します。

