🔥

【備忘録】WordPress セキュリティ確認リスト

に公開

はじめに

最近、他社で構築された WordPressサイトが脆弱性を突かれて被害を受けたという話を耳にしました。
WordPressは便利で柔軟な反面、「適切に守ってあげないと狙われやすい」という一面があります。
そこで、社内での運用経験やトラブル対応を踏まえ、WordPressセキュリティ確認リストを整理しました。すでにご存知の内容も含まれているかもしれませんが、「抜け漏れなく、体系的に把握する」ことを目的にしてまとめています。
優先度(高/中/低)と難易度も合わせて整理しているため、「どこから手を付ければいいの?」という状況でも使いやすいようにしています。

対象読者

この記事は次のような方を想定しています。

・企業サイト / コーポレートサイトで WordPressを運用している方
・既存の WordPressサイトのセキュリティを見直したい方
・セキュリティ対策の“抜け漏れ”をチェックしたい方
・制作会社・開発会社側でクライアントサイトを運用している方

優先度について

本記事では、確認項目を以下のように分類しています。

優先度:高

できるだけ早めに対処したい内容。攻撃リスクや影響範囲が大きいもの。

優先度:中

運用状況を見ながら、計画的に対応したい内容。

優先度:低

余裕があるときに進めておくと安心。
ただし “やらなくていい” という意味ではなく、「後回しにしても影響が出にくいもの」という位置づけです。

本記事のスタンス

机上の理論ではなく、実務運用で必要になる観点を中心にしています。
「やらないとどうなるか?」という リスク(実害イメージ) も合わせて記載しています。
すべてを一気に対応する必要はありません。まずは “優先度が高いものから” 着実に対応していくことを前提とした内容です。

優先度:高

・タスク:WordPressが最新バージョン
 リスク:既知の不具合や脆弱性が残り、外部からの攻撃や想定外の挙動が発生する可能性があります。
 難易度:中
 理由 :テーマやプラグインとの互換性確認が必要で、アップデート後に表示崩れや不具合が起きる可能性があるため。

・タスク:テーマ・プラグインを最新バージョンに保つ
 リスク:過去バージョンに含まれる脆弱性の影響を受け続け、セキュリティ修正や性能改善が反映されません。
 難易度:低~中
 理由 :管理画面から更新できるが、更新により既存機能が壊れるリスクがあるため、検証が必要になる。

・タスク:不要なテーマ・プラグインを削除
 リスク:「admin」は攻撃者に最初に狙われやすいIDであり、ブルートフォース攻撃の対象になりやすい。
 難易度:低
 理由 :使っていないものを削除するだけで、機能影響がほぼ無いため。

・タスク:管理者ユーザー名に「admin」を使わない
 リスク:よく利用されるIDのため、ログイン試行の対象になりやすい傾向があります。
 難易度:低
 理由 :ユーザー名を変更または新規作成すればよく、技術的な作業がほぼ不要。運用に影響が出るため変更前に連絡が必要

・タスク:強力なパスワードを設定する
 リスク:一般的なパスワード推測手法に対して耐性が下がるため、アカウント管理の面で注意が必要になります。8文字以下やパターンのあるPWはクラウドGPUなら 1秒〜数分で解読可能
 難易度:低
 理由 :WordPressの管理画面やパスワードマネージャで簡単に変更できる。運用に影響が出るため変更前に連絡が必要

・タスク:二段階認証(2FA)を導入する
 リスク:パスワードが漏れた場合に、アカウントが即座に乗っ取られる可能性があります。
 難易度:低
 理由 :プラグインで簡単に導入できるが、ユーザー側の運用変更(スマホ登録など)が必要。運用に影響が出るため変更前に連絡が必要

・タスク:セキュリティプラグインを導入
 リスク:不審なアクセスやファイル変更など、トラブルの早期検知が難しくなります。
 難易度:低〜中
 理由 :インストールは簡単だが、誤検知やパフォーマンス影響の調整が必要になる場合がある。

・タスク:ベーシック認証追加
 リスク:ログイン画面が誰でも見える状態だと、攻撃対象になりやすくなります。
 難易度:低
 理由 :.htaccess で設定でき、実装コストが低い。ベーシックがかかるため実施タイミングの調整が必要。

・タスク:テーマ/プラグインエディターを無効化する
 リスク:管理画面を突破されると、PHPファイルを直接改ざんされる危険があります。
 難易度:低
 理由 :wp-config.php に1行追加するだけ。変更前にエンジニアチームとの共有は必要

・タスク:バックアップが設定されている
 リスク:障害や改ざん時に復旧できず、長時間の停止やデータ消失につながります。
 難易度:低〜中
 理由 :プラグインやホスティング機能で簡単に設定できるが、保存先や世代管理の検討が必要。
 
・タスク:XML-RPCを無効化
 リスク:Pingbackを利用した大量ログイン攻撃に悪用されます。
 難易度:低
 理由 :SiteGuardやWordfenceなどでワンクリック対応できる。

・タスク:REST APIでユーザー情報が取得できないようにする
 リスク:ユーザー名が外部に漏れ、攻撃の足掛かりになります。
 難易度:低~中
 理由 :PHPで制御できるが、API連携の有無を考慮する必要がある。

・タスク:/?author=1 によるユーザー名露出
 リスク:ログインIDが推測でき、攻撃対象になりやすくなります。
 難易度:低~中
 理由 :PHPや .htaccess で対策できるが、URL挙動の確認が必要。

・タスク:WAFを有効化する
 リスク:一般的な攻撃(SQL Injection・XSS など)をサーバー側で遮断できず、アプリ側の対策だけに依存する形となり、安全性が下がります。
 難易度:中
 理由 :レンタルサーバーやVPSごとに設定方法が異なり、管理画面や契約権限が必要なため。

・タスク:SSHを特定IPのみに制限する
 リスク:管理者向けのアクセス経路が広いままとなり、意図しないアクセスやログイン試行が増える可能性があります。
 難易度:低~中
 理由 :管理画面やFWで設定可能だが、IP変更時の運用対応が必要。

・タスク:PHPを最新のサポートバージョンにする
 リスク:古いバージョンの場合はサポートされず、改善や不具合修正が反映されず、動作や安定性に影響する可能性があります。
 難易度:高
 理由 :WordPressやプラグインが動かなくなる可能性があり、検証と調整が必須。特にphp_moduleでインストールしている場合は難易度は高い。

・タスク:wp-config.phpなど重要ファイルのパーミッションを確認する
 リスク:必要以上の読み取り・書き込み権限が付与され、ファイル管理や安全性の観点で望ましくない状態が発生する可能性があります。
 難易度:低~中
 理由 :chmodで変更できるが、間違えるとWordPressが動かなくなるリスクがある。

・タスク:wp-adminにIP制限をかける(.htaccess など)
 リスク:世界中から攻撃され、管理画面がDDoSされて落ちる可能性があります。
 難易度:低~中
 理由 :設定は簡単だが、クライアントIP変更時の対応が必要。

優先度:中

・タスク:ログインURLを変更
 リスク:一般的に知られるURLが利用され続けるため、ログイン画面へのアクセスが集中するケースがあります。
 難易度:低
 理由 :プラグインで簡単に設定できる。変更前連絡が必要

・タスク:ファイル変更検知を有効にする
 リスク:サーバー内の変化に気付くまで時間がかかり、原因調査や復旧作業が難航する場合があります。
 難易度:低
 理由 :セキュリティプラグインの機能として簡単に有効化できる。

・タスク:バックアップ&ステージング環境を用意する
 リスク:本番環境で直接作業する場面が増え、意図しない変更が即時反映されるなど、運用上のリスクが高くなります。
 難易度:中〜高
 理由 :サーバー構成・データ同期の設計が必要。

・タスク:不要なテストファイル(info.php など)を削除する
 リスク:サーバー情報や環境設定が閲覧できる状態となり、外部からの情報収集を許してしまう可能性があります。
 難易度:低
 理由 :ファイルを削除するだけ。

・タスク:ファイルパーミッションを適正に保つ
 リスク:本来必要のない読み書き権限が残り、システム管理や安全性の面で不適切な状態になることがあります。
 難易度:中〜高
 理由 :サーバー理解が必要で誤ると障害につながる。

・タスク:DBバックアップを設定する
 リスク:データトラブルや誤操作時の復旧に時間がかかり、運用の継続性に影響が出る可能性があります。
 難易度:中
 難易度:ストレージ・復元手順の設計が必要。

優先度:低

・タスク:データベースを最適化する
 リスク:不要データ(リビジョン・ゴミ箱・一時データ)が蓄積し、サイト表示速度や管理画面の操作性に影響する可能性があります。
 難易度:中
 理由 :プラグインで実行できるが、リビジョン・自動下書き・トランジェントなどを削除するため、
誤操作するとデータを失うリスクがあり、事前バックアップと理解が必要。

・タスク:functions.phpに不要なコードが残っていないか確認する
 リスク:旧仕様のコードや未使用の処理が混在し、予期せぬ挙動や管理の複雑化につながる可能性があります。
 難易度:中〜高
 理由 :コードの意味を理解して判断する必要があり、削除ミスがサイト不具合に直結するため。

・タスク:プラグインを定期的に見直す
 リスク:使われていないプラグインがそのまま残り、更新管理や安全性の面で余計なリスクや負荷が発生します。
 難易度:低〜中
 理由 :プラグインの一覧を確認して不要なものを削除するだけなら簡単だが、実際には「それが本当に使われていないか」を判断する必要があり、プロジェクトの構成理解や動作確認が必要になるケースが多いため。

まとめ

以上、セキュリティ確認リストをまとめました。すでにご存知のあるセキュリティ対策があるかもしれませんが、WordPressを少しでも安心して運用できる一助になれば嬉しいです。

Discussion