企業サイト運営担当者であれば、管理画面への不正ログインがもたらす業務停止や情報漏えいのリスクに頭を悩ませているかもしれません。特にWordPressは世界中で利用される反面、攻撃者の標的になりやすく、ブルートフォース攻撃や辞書攻撃による裏口侵入が後を絶ちません。本記事では、ログイン試行回数制限や二段階認証、ログインURL変更からWAF導入に至るまで、具体的な設定手順を豊富なキャプチャ付きで解説します。初心者でもステップバイステップで導入でき、「自力で防御できた」という安心感を提供します。
WordPress不正ログイン攻撃の現状とリスク
WordPressは世界中のWebサイトの約30%以上を占めるCMSですが、その普及率ゆえに攻撃者がログイン画面を狙う主な理由は「成功率の高さ」にあります。セキュリティ対策が不十分なサイトを一覧的にスキャンし、自動化ツールによる大量ログイン試行(いわゆるブルートフォース攻撃)を行うことで、脆弱な認証を突破されてしまうのです。
ログイン攻撃の手口(ブルートフォース/辞書攻撃)
攻撃の手口は大きく二つに分かれます。ひとつはブルートフォース攻撃で、英数字や記号の組み合わせを総当たりで試す方法。もうひとつは辞書攻撃と呼ばれ、よく使われるパスワードやキーワードリストを用いて照合する方法です。いずれも特定のIPやユーザーエージェントを装い、数千〜数万回規模で試行を繰り返すため、放置すれば短時間で侵入を許す可能性が高いです。
強固なパスワード設定と管理ベストプラクティス
パスワードは「鍵」の役割を果たすため、強度・一意性・管理方法の三要素を高めなければ、不正ログイン対策としては不十分です。
結論(Point)
厳格なパスワードポリシーを策定し、パスワードマネージャーを活用して運用することで、認証突破リスクを大幅に低減できます。
具体例(Example)
事例:B社の管理画面侵入
B社は過去に「WordPressAdmin2024」といった8文字以上・大文字/数字混在のパスワードを採用しておりましたが、既知のリストに含まれており、3か月更新の運用ルールを守らず半年そのまま放置しました。攻撃ツールが辞書攻撃リストを毎月更新する中で、同パスワードはすでに新リストにも組み込まれており、夜間に侵入されてしまいましたた。
実践手順
- パスワードポリシー策定
最低12文字以上、かつ大文字・小文字・数字・記号を全て含む。辞書に登録されやすい単語や個人情報の使用禁止。定期的(3か月以内)なパスワード変更を義務付ける。 - パスワードマネージャー導入
Bitwarden、1Password、KeePassXCなどを推奨。マスターパスワードは最も長く・複雑に設定し、チーム機能で権限管理。 - WordPress設定調整
wp-config.php
でFORCE_SSL_LOGINを有効化。wp-adminへのBasic認証併用。 - 運用フロー整備
パスワード変更スケジュールをカレンダー連携+リマインダーで自動管理。変更履歴をログに記録。
ログイン試行回数制限プラグインの導入と具体設定
ログイン試行回数制限は、短時間に大量の認証リクエストを繰り返すブルートフォース攻撃に対し、最も効果的な初動防御策です。
結論(Point)
試行回数制限プラグインを導入し、適切な閾値とロック時間を設定すれば、ブルートフォース攻撃の成功確率を実質ゼロに近づけられます。
おすすめプラグイン比較
プラグイン名 | 無料/有料 | 主な機能 | メリット | デメリット |
---|---|---|---|---|
Limit Login Attempts Reloaded | 無料 | 試行回数制限、ロック時間設定、ホワイトリスト機能 | 軽量かつ日本語対応済み | IP単位ロックのみ、ユーザー名単位設定不可 |
WP Cerber Security | 無料/有料 | 試行回数制限、マルチレイヤー防御、ログ監視 | 高機能(2FA連携、通知機能など) | 設定項目が多く初心者には複雑 |
Login LockDown | 無料 | 試行回数制限、記録ログ出力 | シンプル設定で導入容易 | 更新頻度が低く、最新WPで動作しない場合あり |
Defender Pro (Defender by WPMU DEV) | 有料 | 試行回数制限、WAF、マルウェアスキャン | 総合セキュリティ対策プラグインとの連携で安心 | 有料ライセンスが必要 |
設定例:Limit Login Attempts Reloaded
1. ダッシュボード → プラグイン → 新規追加 → 「Limit Login Attempts Reloaded」を検索し、インストール→有効化
2. 設定 → Limit Login Attempts
- Allowed retries: 5
- Lockout lasting: 30 分
- Lockout increase: 60 分
3. 管理者固定IPをホワイトリスト登録
4. 悪意IPをブラックリスト登録
二段階認証(2FA)の導入と活用方法
二段階認証(2FA)を有効化することで、パスワードが万一漏えいしても、攻撃者がもう一段階の認証を突破しない限りログインできなくなります。
結論(Point)
2FAを導入すればパスワード漏えいだけでは侵入できず、管理者アカウントの防御力が格段に高まります。
Google Authenticator連携設定手順
- プラグイン「Two Factor Authentication」をインストール・有効化
- ユーザー→プロフィール→Two Factor Settings へ移動し「Authenticator App」を選択
- 表示されたQRコードをアプリでスキャン、Save Settings
- バックアップコードを安全に保存
- 運用フロー:新規管理者追加時に必ず設定完了
ログインURL変更と管理者ユーザー名見直し
デフォルトのwp-login.php
や“admin”といった管理者ユーザー名は攻撃者に最初から知られている情報であり、既知の情報を隠すことも有効な防御策です。
結論(Point)
ログインURLの変更と管理者ユーザー名の非公開化により、不要な攻撃対象情報を減らし、スクリプトによる自動攻撃の成功率をさらに低減できます。
WPS Hide Login 設定例
1. プラグイン「WPS Hide Login」をインストール・有効化
2. 設定 → 一般 → Login URL に任意のパスを入力
3. Logout URL、Redirection URL も同様に設定
4. 新URLで動作確認、デフォルトURLは404になることを確認
管理者ユーザー名変更手順
- プラグイン「Username Changer」をインストール・有効化
- ユーザー→プロフィール→Username欄から変更
- テーマやコメント露出箇所をSearch & Replace等で置換
IP制限とWAF導入によるアクセス制御
ネットワークレイヤーで不正アクセスを遮断するには、IPアドレス制限とWAFが有効です。
結論(Point)
許可IPのみアクセス可能に設定し、さらにクラウドWAFでシグネチャ/行動分析による攻撃シグナルをブロックすれば、不正ログイン試行の大半をネットワークレイヤーで排除できます。
.htaccess 設定例
<FilesMatch "^(wp-login\.php|wp-admin)">
AuthType Basic
AuthName "Restricted"
AuthUserFile /path/to/.htpasswd
Require valid-user
Order Deny,Allow
Deny from all
Allow from 203.0.113.10 198.51.100.5
Nginx 設定例
location ~* ^/(wp-login\.php|wp-admin) {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
allow 203.0.113.10;
allow 198.51.100.5;
deny all;
}
今後の攻撃動向と運用フロー提案
WordPressを狙う攻撃は日々進化しており、2025年以降はAIを悪用したログイン試行や分散型攻撃が増加すると予測されます。従来型の対策だけでなく、最新の動向を反映した運用フローを整備し、継続的に防御レベルを向上させることが重要です。
結論(Point)
最新攻撃パターンをウォッチし、定期的なレビューと自動化された運用フローを導入することで、防御の陳腐化を防ぎ、長期的に堅牢なセキュリティ体制を築けます。
定期レビューと運用フロー設計
- セキュリティ月次レビュー:ログイン試行ログを可視化し、閾値やリストを更新
- 四半期ごとの脆弱性診断:外部/社内スキャンで脆弱性チェック
- 自動化アクション:Fail2BanやWAF API連携で動的ルール更新
- インシデント対応手順書の整備:緊急連絡フローと復旧後分析
まとめ
WordPress不正ログイン対策は、基盤となる強固なパスワード管理と多層防御を組み合わせ、さらに最新攻撃動向を反映した運用フローを継続的に見直すことで実現します。今すぐ本記事で紹介したプラグイン設定やサーバー設定を実施し、手順書とレビュー体制を整備してください。行動しないリスクは即企業の信用と売上を直撃します。