本サイトは広告(アフィリエイトリンク・Google AdSense)を含みます。

WordPressを乗っ取られないための10項目

WordPress の乗っ取りは、更新の停止と推測できるパスワードから起きるものが大半です。更新、二要素認証、ユーザー名の露出、XML-RPC、バックアップなど、侵入の入口を順に塞ぐ10項目を、それぞれ何を防ぐのかとあわせて説明します。

乗っ取りの入口

WordPress の乗っ取りは、巧妙な未知の攻撃より、「更新を止めたプラグイン」と「推測できるパスワード」から起きるものが大半です。改ざんされると、スパムページの挿入、閲覧者の別サイトへの転送、管理者の締め出しが起き、検索結果に警告が表示されて回復に数週間かかります。以下の10項目は、その入口を順に塞ぐものです。

1〜4: 更新と認証

1. 本体・プラグイン・テーマを更新する。 公開された脆弱性は、数日のうちに自動化された攻撃の対象になります。本体のマイナー更新は既定で自動ですが、プラグインとテーマの自動更新は一覧画面で個別に有効にできます。1年以上更新のないプラグインは、代替を探して削除します。

2. 使っていないプラグインとテーマを削除する。 無効化しただけではファイルが残り、脆弱性があれば攻撃できる状態のままです。

3. 管理者のパスワードを長くする。 総当たりと、他サイトから漏れたパスワードの使い回し(パスワードリスト攻撃)を防ぐためです。パスワード生成で16文字以上を作り、パスワードマネージャーに保存します。今使っているものはパスワード強度チェックで確かめられます。

4. 二要素認証を入れる。 パスワードが漏れても、ワンタイムコードがなければログインできません。WordPress 本体には標準で含まれていないため、認証アプリ方式(TOTP)に対応したプラグインを使います。管理者権限のアカウント全員に適用してください。

5〜7: 情報の露出

5. ユーザー名を隠す。 既定では ?author=1 へのアクセスや REST API の /wp-json/wp/v2/users から、ログインに使うユーザー名が取得できます。攻撃者はユーザー名が分かれば、パスワードだけを総当たりすればよくなります。表示名をユーザー名と別にし、author アーカイブと users エンドポイントをプラグインか functions.php で塞ぎます。

6. XML-RPC を無効化する。 xmlrpc.php は1回のリクエストに多数のログイン試行を詰め込める仕様で、総当たりの効率を上げる経路になっています。スマートフォンアプリや Jetpack の一部機能で使っていなければ、.htaccess でアクセスを拒否します。

7. バージョン番号と Server ヘッダーを出さない。 generator メタタグや readme.html から本体のバージョンが分かります。隠しても攻撃は防げませんが、古いバージョンを狙う自動スキャンの対象から外れやすくなります。

8〜10: 権限、バックアップ、監視

8. 管理者を最小限にし、日常の作業は編集者で行う。 乗っ取られたときの被害を、そのアカウントの権限の範囲に抑えるためです。退職した担当者や制作会社のアカウントは、作業が終わった時点で削除します。

9. バックアップを別の場所に自動で取る。 改ざんの復旧は「きれいな状態に戻す」ことが基本で、バックアップがなければ手作業で全ファイルを検査することになります。同じサーバー内だけの保存は、サーバーごと失うと意味がありません。サーバー事業者の自動バックアップに加えて外部ストレージへ定期的に保存し、復元の手順を一度は試してください。

10. 外から定期的に点検する。 管理画面に入らなくても、公開されている情報からバージョンの古さや設定の不備は分かります。WordPress安全チェックに自分のサイトの URL を入れ、月1回の点検を習慣にしてください。ログイン画面への IP制限や Basic認証の追加は、.htaccess の基本で扱っています。

確認に使えるツール

最終更新: 2026-10-24 / 監修: 飛田 宏紀(情報処理安全確保支援士(登録セキスペ))