WordPressのセキュリティ対策 最初に見直す基本と優先順位
WordPressのセキュリティ対策は、項目が多くて、どこから手を付ければよいか迷いがちです。この記事では、WordPress公式ドキュメントに書かれている対策を、更新・ログイン・バックアップ・サーバー設定に整理して、優先順位つきでまとめます。個別の設定手順は、サイト内の詳しい記事にリンクします。
先に結論:まずは「更新」「ログイン」「バックアップ」の3つ
- 更新:WordPress本体・テーマ・プラグインを最新に保ちます。公式は、常に最新版にしておくよう案内していて、古いバージョンにはセキュリティ更新が提供されないと説明しています。
- ログイン:強いパスワードと2要素認証で、ログイン画面を守ります。「admin」のような推測されやすいユーザー名は避けます。
- バックアップ:データベースとファイルの両方を、更新の前に必ず取ります。
- そのあとで:ファイルの権限、wp-config.phpの保護、管理画面でのファイル編集の無効化といった、サーバー側の設定に進みます。
どれか1つで完全に守れる、という対策はありません。公式のブルートフォース対策のページでも、複数の対策を組み合わせることが前提になっています。
対策の全体像と優先順位
優先度は、この記事での目安です。上から順に取り組むと、手戻りが少なくなります。
| 守る場所 | 主な対策 | 優先度 | 詳しい記事 |
|---|---|---|---|
| 更新 | 本体・テーマ・プラグインの更新、使わないものの削除 | 高 | プラグインに脆弱性が見つかったときの対応 |
| ログイン | 強いパスワード、2要素認証、adminを使わない、CAPTCHA、XML-RPC | 高 | 2段階認証の設定手順、Cloudflare Turnstile |
| バックアップ | データベースとファイル、世代、保存先 | 高 | 変更前のバックアップ |
| サーバー・ファイル | 権限、wp-config.php、ファイル編集の無効化、HTTPS | 中 | この記事 |
| 攻撃を受けたとき | 設定の確認、原因の切り分け | 必要なとき | PHPの攻撃を受けたときの対策 |
対策1:更新を止めない
WordPressの公式ドキュメント(Hardening WordPress)は、脆弱性への対策の最初の具体策として、更新を挙げています。更新には、次の3つがあります。
- WordPress本体:WordPress 3.7以降は、軽微な更新(メンテナンス更新とセキュリティ更新)が、既定で自動適用されます。大きな更新の自動適用は、既存のサイトでは既定でオフで、5.6以降の新規インストールでは既定でオンと説明されています。自動で適用されない更新は、管理画面から実行します。
- プラグインとテーマ:常に更新しておきます。使っていないプラグインは、無効化するだけでなく、システムから削除するよう公式は案内しています。テーマも同じ考え方で、使わないものは整理しておくと管理が楽になります。
- 入手元:WordPress本体は、公式のwordpress.org以外のサイトからダウンロードしないようにします。プラグインやテーマも、WordPress.orgのディレクトリか、よく知られた会社のものに絞るのが公式の考え方です。
更新の前には、バックアップを取っておくと安心です。WordPress本体の更新では、本体のファイルが入れ替わるため、本体のファイルを直接書き換えていた場合は、その変更点を把握して、新しいコードに移し替える必要があると公式に書かれています。
プラグインに脆弱性が見つかったときの動き方は、WordPressプラグインに脆弱性が見つかったときの対応にまとめています。
対策2:ログインを守る
ログイン画面は、攻撃の入り口になりやすい場所です。公式のブルートフォース対策のページ(Brute Force Attacks)では、次のような対策が挙げられています。
- 強いパスワードと、パスワードマネージャ:辞書に載っている単語や、自分に関する情報を避け、使い回しをしません。
- 2要素認証:管理者アカウントすべてに有効にするよう案内されています。WordPressのコアには2要素認証の機能がないため、プラグインなどで追加します。設定手順は、WordPressのログインに2段階認証を入れる方法で解説しています。
- パスキー(WebAuthn):評判のよいプラグインを使って、フィッシングに強いログインにする選択肢も挙げられています。
- CAPTCHAやTurnstile:ボットの動きを遅らせるために、ログイン画面に置く方法です。Cloudflare Turnstileを入れる方法で、無料で設定する手順を紹介しています。
- ログイン試行の制限:公式は、WAFやCDN、Webサーバーの側で制限する方法を先に挙げています。プラグインで制限する方法は、PHPの中で動くため、攻撃が多いときはサーバーの負荷になると説明されています。
- XML-RPCの扱い:
xmlrpc.phpは、ブルートフォース攻撃の標的になりやすいファイルです。使っていなければ無効にし、使っているなら、アクセスの制限と回数の制限をかけるよう案内されています。外部のアプリやサービスと連携していないかを確認してから、無効にします。
ユーザー名と権限
公式は、管理者のユーザー名に「admin」や「webmaster」のような推測されやすい名前を使わないよう案内しています。あわせて、管理者の人数は必要な分だけに絞り、そのほかの人には、必要最小限の権限のロールを割り当てます。
対策3:バックアップを取る
更新やログインの対策をしても、トラブルを完全には防げません。元に戻せる状態を作っておくのが、バックアップの役割です。公式のバックアップのページ(WordPress Backups)には、次のように書かれています。
- 頻度:データベースは定期的に、そして更新の前には必ず取ります。目安として、小規模なサイトは週に1回、更新が多いサイトは毎日です。公式は、あくまで目安で、決めるのは自分だと断っています。
- 対象は2つ:データベースと、ファイル(wp-config.phpや.htaccessなどを含む)の両方が必要です。バックアップはデータベースが先、復元はファイルが先です。
- 世代と保存先:少なくとも最新の3〜5世代を残します。保存先は、ホスティングサーバー、クラウドストレージ、手元のパソコンの3か所に分けるのが目安とされています。
- 自動バックアップの確認:自動バックアップを使っていても、ときどき手動でも取り、仕組みが動いているかを確かめるよう案内されています。
プラグインでの取り方と、元に戻せる「控え」の作り方は、WordPressの変更前に取りたいバックアップで解説しています。
対策4:サーバーとファイルの設定を見直す
ここからは、サーバーの設定やwp-config.phpを触る作業です。設定を変える前に、バックアップを取ってください。レンタルサーバーによっては、権限の設定や推奨値が異なるため、先にサーバーの案内を確認します。
ファイルの権限
公式の Hardening WordPress では、ファイルの権限をできるだけ絞るよう案内されています。次の表は、公式が挙げている権限の一例で、必須の基準ではありません。
| 対象 | 公式の説明 |
|---|---|
| ディレクトリ(フォルダ) | 755 |
| ファイル | 644 |
| /、/wp-admin/、/wp-includes/、/wp-content/plugins/ | 自分のアカウントだけが書き込める状態(/ では、自動で書き換わる.htaccessだけが例外) |
| /wp-content/ | 自分のアカウントとWebサーバーの両方が書き込める状態 |
| wp-config.php | 自分とWebサーバーだけが読める状態(一般的には400または440) |
WordPressが自動更新を行うときは、ファイルを644、ディレクトリを755に設定すると公式に書かれています。
管理画面でのファイル編集を無効にする
管理画面のテーマエディタやプラグインエディタは、万一ログインを乗っ取られたときに、コードを書き換えられる入り口になります。wp-config.php に次の1行を追加すると、管理画面からのファイル編集ができなくなります。
define( 'DISALLOW_FILE_EDIT', true );
追加する場所は、wp-config.php の中で、ほかの設定が並んでいるあたりです。公式には、この設定で、攻撃者が不正なファイルをアップロードすること自体は防げないが、一部の攻撃を止められる可能性がある、という注意が書かれています。テーマやプラグインのコードを、管理画面で直接編集している場合は、できなくなるので注意してください。
管理画面をHTTPSで守る
公式は、さらに守りを固める方法として、管理画面の通信をHTTPS(SSL)で暗号化するよう勧めています。ファイルのアップロードにFTPを使うなら、ホスティング会社が対応していれば、暗号化されたSFTPを使うようにします。
古い対策には注意する
ネットには、以前からある対策が、いまも載っていることがあります。公式のブルートフォース対策のページには、次の方法について、当てにならない、AJAXを使うプラグインが動かなくなる、使い勝手が悪くなる、といった問題があると書かれています。
- .htaccessの大がかりな書き換え
- 国ごとのIPブロックリスト:公式は、恒久的に国別でブロックするのは避けるよう案内しています。
- /wp-admin全体へのBasic認証:Hardening WordPress にも、wp-admin/admin-ajax.php のようなAJAXの処理が動かなくなる場合があると書かれています。公式は、wp-login.php に範囲を絞った例も載せているので、問題になるのは、範囲を絞らずに広くかける方法です。
いまは、WAF、2要素認証、パスキー、限定的な回数制限が、公式の推奨です。
攻撃を受けたときは
ログに不審なアクセスが並んでいたり、見覚えのないファイルが見つかったりしたときは、慌てて設定を変える前に、状況の確認から始めます。サーバー側とWordPress側に分けて確認するチェックリストは、WordPressがPHPの攻撃を受けたときの対策にまとめています。
今日できるチェックリスト
- 更新:WordPress本体・テーマ・プラグインに、未適用の更新はないか。使っていないプラグインとテーマを、削除しているか。
- ユーザー:「admin」というユーザー名を使っていないか。管理者の人数は、必要な分だけか。
- ログイン:管理者アカウントに、2要素認証を入れているか。パスワードは、使い回していない強いものか。
- XML-RPC:使っていないなら、無効にしているか。
- バックアップ:データベースとファイルの両方を、最新の状態で取っているか。保存先は、サーバーの外にもあるか。
- サーバー設定:ファイルの権限は、公式の目安から外れていないか。wp-config.phpを保護しているか。
- 管理画面:HTTPSで接続しているか。ファイル編集の無効化は、必要か。
よくある質問
セキュリティ系のプラグインは入れたほうがよいですか?
公式のドキュメントには、WAFの利用や、ファイルの変更の監視といった方法が挙がっていて、例としてプラグイン名も出てきますが、特定のプラグインが必須だとは書かれていません。まずは、更新・ログイン・バックアップの3つを整えるのが先です。そのうえで、足りない部分を補う目的で選びます。
2要素認証は、どのアカウントに入れればよいですか?
公式のブルートフォース対策のページでは、管理者アカウントすべてに有効にするよう案内されています。
バックアップは、どのくらいの頻度で取ればよいですか?
公式の目安は、小規模なサイトで週に1回、更新が多いサイトで毎日です。どちらの場合も、WordPress本体やプラグインを更新する前には、必ず取ります。
ファイルの権限を変えたら、サイトが動かなくなりました。
権限を変えたあとに、画像のアップロードや更新が失敗するようになった場合は、/wp-content/ など、WordPressが書き込む必要のある場所を、絞りすぎている可能性があります。先に取ったバックアップで戻し、サーバーの案内も確認してください。
※出典:WordPress公式ドキュメント(Hardening WordPress、Brute Force Attacks、WordPress Backups、Updating WordPress)。内容は変更される場合があります。
まとめ
WordPressのセキュリティ対策は、更新・ログイン・バックアップの3つから始めるのが基本です。そのあとで、ファイルの権限やwp-config.phpの保護といった、サーバー側の設定を見直します。古い対策をそのまま真似するのではなく、公式ドキュメントで、いまも推奨されているかを確認してから取り入れましょう。



