本文へスキップ
TYP create

WordPressのセキュリティ対策 最初に見直す基本と優先順位

WordPress
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の保護といった、サーバー側の設定を見直します。古い対策をそのまま真似するのではなく、公式ドキュメントで、いまも推奨されているかを確認してから取り入れましょう。