2026年9月24日
2026年9月24日
WordPressのセキュリティ強化10の方法|優先順位つきの実践チェックリスト
WordPressのセキュリティ強化は、「更新」「ログインの守り」「バックアップ」の3つを先に固め、そのあとでファイル権限やサーバー設定を詰めていく順番が効率的です。この記事では、運用中のサイトで今日から取り組める10の対策を優先度の高い順に並べ、それぞれ「なぜ効くのか」「どこでつまずくか」「できたかどうかの確認方法」まで説明します。
作業の前に、サイト全体(ファイルとデータベース)のバックアップを取ってください。設定ファイルやサーバー設定の変更は、できればステージング環境で試してから本番に反映するのが安全です。
1. コア・テーマ・プラグインを最新に保ち、使わないものは削除する
公開されている攻撃の多くは、修正版がすでに出ている既知の脆弱性を狙います。更新を続けることが、もっとも費用対効果の高い対策です。
- 管理画面の「ダッシュボード」→「更新」で、コア・プラグイン・テーマの更新状況を確認します。
- プラグインとテーマには自動更新を個別に有効化できます。影響の小さいものから自動更新にし、決済や会員機能など重要なものは手動で検証してから更新する、という分け方が現実的です。
- 停止しているだけのプラグインやテーマも、ファイルが残っていれば攻撃対象になり得ます。使っていないものは削除します。
- サーバーのPHPも、サポートが続いているバージョンかどうかを確認します。各バージョンのサポート期限は php.net の公式ページで確認できます(2026年10月現在)。
WP-CLIが使える環境なら、更新が必要なものを一覧で確認できます。
wp core check-update
wp plugin list --update=available
wp theme list --update=available
更新でレイアウトが崩れるのが心配な場合は、更新前のバックアップと、ステージングでの事前確認をセットにします。
2. 管理者アカウントを最小限にし、強いパスワードを使う
管理者権限を持つアカウントが多いほど、乗っ取られたときの被害範囲が広がります。
- 管理者は必要な人だけにし、記事を書くだけの人は「編集者」や「投稿者」にします。
- 退職者や外注先のアカウントは、作業終了時に削除するか権限を下げます。
- パスワードはパスワードマネージャーで生成した長いものにし、他サービスとの使い回しを避けます。
- 「admin」のような推測しやすいユーザー名は避けます。
管理者の一覧は、管理画面の「ユーザー」で権限グループを絞り込むか、WP-CLIで確認できます。
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
3. 二段階認証を導入する
パスワードが漏れても、二段階認証があればログインは成立しません。認証アプリ(TOTP)方式に対応した、更新が続いているプラグインを使います。代表例は、WordPress.org のコア貢献者が中心となって開発している「Two Factor」や、Wordfence が提供する「Wordfence Login Security」です。
導入時の注意点は次のとおりです。
- まず自分の管理者アカウントで設定し、別のブラウザでログインできることを確かめてから、ほかのユーザーに広げます。
- バックアップコード(リカバリーコード)を発行し、安全な場所に保管します。
- スマートフォンを紛失した場合に備え、FTPやファイルマネージャーで該当プラグインのフォルダ名を変更して一時的に無効化できる手段を残しておきます。
4. ログイン試行回数を制限する
総当たり攻撃(ブルートフォース)は、ログイン画面に大量のパスワードを試す攻撃です。一定回数失敗したIPアドレスを一時的に締め出すだけで、成功の可能性を大きく下げられます。「Limit Login Attempts Reloaded」などの専用プラグインのほか、総合セキュリティプラグインにも同様の機能があります。
つまずきやすいのは、自分自身が締め出されるケースです。CDNやリバースプロキシの背後にあるサイトでは、訪問者のIPアドレスを正しく取得できず、全員が同じIPとして扱われることがあります。プラグインの設定で、IPアドレスの取得元(ヘッダー)がサーバー構成に合っているかを確認してください。
5. バックアップを自動化し、復元まで試す
どれだけ対策しても、侵入や操作ミスの可能性はゼロになりません。最後の砦がバックアップです。
- ファイルとデータベースの両方を、定期的に自動で取得します(UpdraftPlus などのプラグイン、またはサーバー会社のバックアップ機能)。
- 保存先はサーバーと別の場所(クラウドストレージなど)にします。同じサーバー内だけでは、サーバーごと被害を受けたときに失われます。
- 年に数回は、ステージングに実際に復元して、手順と所要時間を確かめます。
6. 管理画面からのファイル編集を無効にする
管理画面のテーマ・プラグインのファイルエディターは便利ですが、管理者アカウントが乗っ取られると、そのままPHPコードを書き換えられてしまいます。wp-config.php に次の定数を追加すると、エディターが無効になります。
// wp-config.php の「編集が必要なのはここまでです」より上に追記
define( 'DISALLOW_FILE_EDIT', true );
あわせて wp-config.php のパーミッションも見直します。推奨値はサーバーの実行方式によって変わるため、レンタルサーバーのマニュアルにある値を優先してください。一般的には、所有者以外が書き込めない設定(例: 600 や 640)が目安です。
7. HTTPSを徹底し、セキュリティヘッダーを追加する
ログイン情報やCookieを平文で送らないために、サイト全体をHTTPSにします。設定の「一般」でサイトアドレスが https:// になっているか、HTTPでアクセスしたときにHTTPSへリダイレクトされるかを確認します。
さらに、X-Content-Type-Options や Referrer-Policy などのセキュリティヘッダーを追加すると、ブラウザ側での攻撃を減らせます。HSTS(Strict-Transport-Security)は効果が大きい反面、一度ブラウザに記憶されるとHTTPに戻せなくなるため、最初は短い max-age で試し、サブドメインを含めてすべてHTTPSで提供できることを確認してから延ばしてください。
8. アップロードフォルダでのPHP実行を禁止する
画像をアップロードする wp-content/uploads/ には、本来PHPファイルは不要です。脆弱性を突いてPHPファイルを置かれても実行されないように、サーバー側で禁止しておきます。
Apacheの場合は、wp-content/uploads/.htaccess に次のように書きます(Apache 2.4 の書式)。
<FilesMatch "\.(php|phtml|phar)$">
Require all denied
</FilesMatch>
Nginxの場合は、サーバー設定の server ブロックに追加します。
location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ {
deny all;
}
一部のプラグインはアップロードフォルダ内に独自のファイルを置くことがあります。設定後にサイトの主要機能が動くかを確認してください。
9. 使っていない機能の入り口を閉じる
XML-RPC(xmlrpc.php)は外部アプリからの投稿などに使う仕組みですが、総当たり攻撃の経路にもなります。使っていなければ、サーバー設定で xmlrpc.php へのアクセスを拒否するか、セキュリティプラグインの機能で無効化します。ただし Jetpack や一部のスマートフォンアプリはXML-RPCを使うため、無効化の前に利用状況を確認してください。
ディレクトリ一覧の表示も、不要な情報を外部に見せる原因になります。Apacheなら Options -Indexes を設定し、/wp-content/uploads/ などをブラウザで開いてファイル一覧が出ないことを確かめます。
10. 改ざん検知とログ監視を仕組みにする
被害は「早く気付けるか」で大きさが変わります。
- WP-CLIで、コアファイルとWordPress.org配布のプラグインが公式の配布物と一致しているかを確認できます。
wp core verify-checksums
wp plugin verify-checksums --all
- Wordfence などのセキュリティプラグインを使うと、ファイルスキャンやファイアウォール、ログイン監視をまとめて扱えます。機能の範囲は無料版と有料版で異なり、内容も変わることがあるため、導入前に公式サイトで確認してください。
- 誰がいつ何を変更したかを残すには、「WP Activity Log」のような操作ログのプラグインが役立ちます。
- サーバーのアクセスログで、
wp-login.phpやxmlrpc.phpへの大量のアクセスがないかを定期的に見ます。
万一改ざんに気付いたら、まずサイトを保護(メンテナンス表示やアクセス制限)し、ログを保全してから、クリーンなバックアップからの復元とパスワードの一斉変更を進めます。
まとめ
- 最優先は「更新」「管理者アカウントの整理」「二段階認証」「ログイン試行制限」「バックアップ」の5つです。
- 次に、ファイル編集の無効化、HTTPSとセキュリティヘッダー、アップロードフォルダでのPHP実行禁止、不要な入り口の閉鎖でサーバー側を固めます。
- 対策は一度で終わりではありません。改ざん検知とログ監視を仕組みにして、異常に早く気付ける状態を保ちます。
- 設定変更の前にはバックアップを取り、可能ならステージングで試してから本番に反映してください。