エックスサーバーとWordPressの設定を見直すと、不正ログインやサイトの改ざんに備えることができます。
この記事では、サーバーパネル、プラグイン、子テーマのfunctions.phpの順に、設定場所ごとに解説します。
SWELLとSEO SIMPLE PACKを使っている人向けに、著者アーカイブの停止方法もまとめました。
この記事で分かること
- サーバー側で先に確認したい設定
- 著者アーカイブとREST APIからのユーザー情報取得への対策
- 設定後にログインや記事の保存ができなくなった場合の戻し方
エックスサーバーのWordPressセキュリティ設定一覧

主なセキュリティ対策と設定場所を確認する
主なセキュリティ対策と、それぞれの設定場所・設定内容をまとめました。
| 対策 | 設定場所 | 設定内容 |
|---|---|---|
| 国外アクセス制限 | サーバーパネル | 国内から運用するなら有効にする |
| ログイン試行回数制限 | サーバーパネル | 有効にする |
| コメント・トラックバック制限 | サーバーパネル | 投稿を受け付ける範囲に合わせて有効にする |
| 管理画面のIPアドレス制限 | サーバーパネル | 固定IPなど接続元を限定できるなら有効にする |
| WAF | サーバーパネル | 有効にする |
| SSL・HTTPS転送 | サーバーパネル/WordPress | 設定する |
| FTP | サーバーパネル | 固定IPなど接続元を限定できるなら有効にする |
| 管理パネルの二段階認証 | エックスサーバーアカウント/サーバーパネル | 設定する |
| WordPressの二段階認証 | プラグイン | 設定する |
| 著者アーカイブの停止 | プラグイン/追加コード | 著者別の記事一覧を使わない場合に設定する |
| REST APIのユーザー情報取得制限 | プラグイン/追加コード | REST APIからの投稿者情報の取得を制限したい場合に設定する |
| 更新・バックアップ・監視 | サーバーパネル/プラグイン | 定期的に更新し、バックアップの保存状況とログを確認する |
最初に設定したい項目と利用環境に合わせて判断する項目
先に取り組みたいのは、最新への更新、HTTPS、二段階認証、ログイン試行回数制限、バックアップの確認です。
パスワードもサービスごとに分け、長く推測されにくいものを使います。
IPアドレス制限やAPI制限は、利用環境を確認してから設定します。
エックスサーバーの「WordPressセキュリティ設定」を見直す
サーバーパネルへログインし、「WordPressセキュリティ設定」を開きます。
操作するドメインを確認してから、各項目を変更します。
この機能はドメイン単位の設定です。サブドメインを使って複数のWordPressを運用している場合は、ほかのサイトへの影響もあります。
| カテゴリ | 項目 | 状態 |
|---|---|---|
| IPアドレス制限 | ダッシュボード アクセス制限 | 接続元を限定できる場合にON(先にホワイトリストへ登録) |
| 国外アクセス制限 | ダッシュボード アクセス制限 | ON |
| XML-RPC API アクセス制限 | ON | |
| REST API アクセス制限 | ON | |
| wlwmanifest.xml アクセス制限 | ON | |
| ログイン試行回数制限 | ログイン試行回数制限 | ON |
| コメント・トラックバック制限 | 単一ユーザーからの大量投稿 | ON |
| 国外からの投稿 | OFF |
IPアドレス制限でダッシュボード アクセスを制限する
管理画面やログインページ(wp-admin、wp-login.php)にアクセスできるIPアドレスを限定します。
固定IPなど、接続元を限定できる場合に設定しましょう。
まず、自分やほかの編集者・管理者のIPアドレスをホワイトリスト(アクセスを許可するリスト)に登録します。
登録後に、「IPアドレス制限」の「ダッシュボード アクセス制限」をONにしてください。
ただし、自宅回線やスマートフォンではIPアドレスが変わり、自分もアクセスできなくなる場合があります。
その場合は、サーバーパネルでホワイトリストのIPアドレスを更新してください。

国外アクセス制限でダッシュボード・APIへのアクセスを制限する
国内から運用し、海外の編集者や外部サービスからの接続が不要な場合は、国外アクセス制限の各項目をONにします。
- ダッシュボード:管理画面やログインページへの国外からのアクセスを制限します。
- XML-RPC:外部アプリからの投稿や管理に使われる機能です。総当たり攻撃にも悪用されるため、国外からのアクセスを制限します。
- REST API:WordPressと外部サービスなどがデータをやり取りする仕組みです。Contact Form 7などでも使われるため、API全体の無効化とは区別して設定します。
- wlwmanifest.xml:ブログ投稿ソフトなどが読み込む設定ファイルです。国外から利用する必要がなければ、アクセスを制限します。
ログイン試行回数制限でパスワードの総当たり攻撃に備える
「ログイン試行回数制限設定」はONにします。
ログイン失敗が短時間に続くとアクセスを制限できます。制限開始から24時間後に解除されます。
コメント・トラックバック制限でスパム投稿を抑える
「大量コメント・トラックバック制限」はONを基本にします。
大量のコメントやトラックバックの投稿を制限できます。制限は6時間後に自動で解除されます。
「国外からのコメント・トラックバック制限」は、海外からの投稿を受け付けるかでON/OFFを判断しましょう。
エックスサーバーのWAF・SSL・接続設定で保護を強化する
続いて、WAFやSSLなど、エックスサーバー側の設定を確認します。

WAFの6項目を設定して不正なアクセスを遮断する
WAFは、送信された内容から攻撃の疑いがあるアクセスを検知する機能です。
サーバーパネルの「セキュリティ>WAF設定」から設定できます。
以下の6項目は、すべてONにするのがおすすめです。
| 設定項目 | 主に検知するもの |
|---|---|
| XSS | 不正なスクリプトを含むアクセス |
| SQL | SQLインジェクションを疑う文字列 |
| ファイル | 設定ファイルなどへの不正アクセス |
| メール | メールの不正送信につながる文字列 |
| コマンド | OSコマンドの不正実行を疑う文字列 |
| PHP | PHP関数などの悪用を疑う内容 |
反映後は、記事の保存、画像のアップロード、お問い合わせフォームの送信を試してエラーがでないか確認してください。
SSLとHTTPS転送でサイトを常時SSL化する
HTTPSは、サイトと閲覧者の間の通信を暗号化する仕組みです。
SSLの設定と、HTTPでアクセスした人をHTTPSへ転送する設定を確認します。
サーバーパネルの「SSL設定」で対象ドメインの証明書を確認できます。
エックスサーバーアカウントとサーバーパネルに二段階認証を設定する
ログイン方法には、エックスサーバーアカウントを使う方法と、サーバーID・サーバーパスワードを使う方法があります。
どちらも二段階認証を設定しておきましょう。

エックスサーバーアカウント側
アカウントログイン後に右上メニュー「ログインセキュリティ」から設定します。認証アプリまたはSMSを選べます。
サーバーパネル側
サーバーパネルの「サーバー>二段階認証設定」から設定します。設定は認証アプリのみです。
バックアップコードは、認証端末を使えなくなったときのために保管しておきましょう。
FTPの接続元IPアドレスを制限する
ファイル転送を使う人は、サーバーパネルの「FTP>FTP制限設定」で接続元IPを登録します。
許可IPを登録すると、パスワードが一致しても登録外のIPからは接続できなくなります。

テストサイト(ステージング)はIP制限とベーシック認証で隠す
先に、ベーシック認証用のユーザーID・パスワードを登録した「.htpasswd」ファイルと、アクセスを許可するIPアドレスを確認します。
次のコードを、テストサイトの「.htaccess」に追加します。WordPressでは、wp-config.phpと同じフォルダにあるファイルです。
この設定では、テストサイトにアクセスするには、許可したIPアドレスから接続とベーシック認証の通過が必要です。
「AuthUserFile」には、準備した.htpasswdファイルのサーバー上の絶対パスを指定します。
「Require ip」には、アクセスを許可するIPアドレスを指定してください。
AuthType Basic
AuthName "Input ID and Password"
AuthUserFile /home/xxxxxx/.htpasswd
<RequireAll>
Require valid-user
Require ip 000.000.000.000
</RequireAll>

Zapierやn8nなどと連携する場合は、接続元IPの許可に加え、ベーシック認証を通過する設定が必要です。
WordPressのプラグインでログインと公開情報を保護する
ここからはWordPress管理画面での設定です。
「プラグイン>新規プラグインを追加」でCloudSecure WP Security(エックスサーバーが提供)を検索し、インストールして有効化します。

CloudSecure WP Securityの主な機能
CloudSecure WP Securityの主な機能は次のとおりです。

ログインURL変更・画像認証・ログイン制限を設定する
「ログイン無効化」では、ログインを制限するまでの失敗回数と、制限を続ける時間を設定します。
「ログインURL変更」を有効にすると、標準のwp-login.phpから別のURLへ変更できます。
「ログインエラーメッセージ統一」は、入力のどこを間違えたかをエラーから推測されにくくする設定です。
「画像認証追加」は、ログインフォームやコメントフォームなど、必要なフォームに画像認証を追加します。
2段階認証でパスワードが知られた場合に備える
「2段階認証」を設定することで、パスワードが知られてもログインを防ぐことができます。
2段階認証は有効にした後に、各ユーザーで認証設定が必要です。
認証を適用する権限グループ(管理者、編集者など)を選び、設定を有効にすると、WordPress管理画面メニューに新しく「2段階認証の設定」が表示されます。
登録しているユーザーごとに、認証アプリまたはメールのコードを選択して、設定を完了させましょう。
XML-RPC無効化を設定する
「XML-RPC無効化」は、IDとパスワードを使ったブルートフォース攻撃(総当たり攻撃)対策です。
XML-RPCを使う外部アプリや連携がなければ、無効化します。
ログイン履歴では、XML-RPC経由で身に覚えのないログイン試行がないかも確認しましょう。
サーバー側は、国外からの接続を制限します。プラグイン側は、XML-RPCの機能自体を無効にできます。
REST API無効化には注意が必要
「REST API無効化」は、Contact Form 7など、REST APIを使うプラグインやテーマにも影響します。
有効にする前に、サイトで利用している機能を確認が必要です。
全部停止で運用に影響がでる場合、必要な機能のみを停止するコードをfunctions.phpに書く必要があります。
管理画面と設定ファイルへのアクセスを制限する
「管理画面アクセス制限」を使うと、ログイン実績のない接続元などからのwp-adminへのアクセスに404を返します。自分が404になった場合は、再ログインURLから入り直します。
「設定ファイルアクセス防止」では、WordPressの設定ファイルなどへの不正アクセスを遮断します。
「シンプルWAF」は、サーバーWAFとは別に検知・遮断します。攻撃種別や通知を設定し、正常な操作が止まらないかを確認しましょう。
筆者の環境では、シンプルWAFを全て有効にするとAFFINGERで下書き保存がエラーになりました。SWELLでは保存できます。「コードインジェクション」のチェックを外すと、AFFINGERでも下書き保存できるようになりました。
ログイン通知・アップデート通知・履歴確認を設定する
「ログイン通知」は、通常のログインページからログインがあったときにメールで知らせます。XML-RPC経由は通知対象外です。
「ログイン履歴」では、成功・失敗などの記録を確認できます。
「アップデート通知」では、WordPress、プラグイン、テーマの更新を通知します。
著者情報からログイン名を推測されるのを防ぐ
記事の投稿者名などから開く著者ページのURLには、「著者スラッグ」という文字列が使われます。
WordPressの標準設定では、著者スラッグはログイン名をもとに作られます。たとえば、ログイン名が「Wporzadmin」、著者スラッグが「wporzadmin」なら、URLからログイン名を推測できます。

WordPressでは、サイトURLに?author=1などを付けると、該当ユーザーの著者アーカイブページ(/author/wporzadmin/)へ転送されます。
このURLからログイン名を推測される可能性があります。
CloudSecure WP Securityの「ユーザー名漏えい防止」を有効にすると、?author=1から著者アーカイブページへの転送を404に変えられます。
「/author/wporzadmin/」などの著者ページには、URLを直接入力するとアクセスできます。著者ページも停止したい場合は、SEO SIMPLE PACKが使えます。
SEO SIMPLE PACKは著者アーカイブページも対策できる
SEO SIMPLE PACKを使っている場合は、著者アーカイブページへのアクセスもホームへ転送できます。
| アクセスするURL | SEO SIMPLE PACKの「著者アーカイブを使用しない」 | CloudSecureの「ユーザー名漏えい防止」 |
|---|---|---|
/?author=1(数字のユーザーID) | ホームへ転送 | 404ページへ転送 |
/author/taro/(著者スラッグ) | ホームへ転送 | 直接アクセスは可能 |
WordPress管理画面で、次の順に開きます。
- 「SEO PACK」の「一般設定」を開く
- 「その他アーカイブ」タブを選ぶ
- 著者アーカイブの使用設定を確認する
- 著者アーカイブを使用しない設定にして保存する
「著者アーカイブを使用しない」に設定すると、著者ページへのアクセスはホームへリダイレクトされます。
「使用する」を選んだ場合は、検索結果への掲載を抑えるnoindexも設定できます。ただし、ページへのアクセスは止められないため、著者ページ自体を使わない場合は「使用しない」を選びましょう。
複数の著者の記事一覧を読者向けに使っているサイトでは、停止するとその一覧も利用できなくなります。著者ページを残す場合は、公開用の著者スラッグとログイン名を別にする方法もあります。
「この記事を書いた人」の画像や名前にリンクを付けない
著者アーカイブのリンクは、「この記事を書いた人」に追加されます。
SWELLは、「カスタマイズ>投稿・固定ページ>記事下エリア」にある「著者ページへのリンクを表示する」のチェックをはずすとリンクを非表示にできます。
ただし、リンクが非表示になっただけで直接アクセスすると表示されます。

著者アーカイブページのURLからログイン名を推測されにくくする
プラグインなどを使わずに著者アーカイブページを変更したい場合は、下記のコードをfunctions.phpに追加します。
これを使うと、著者スラッグを別のものに変えてログイン名を推測されにくできます。
コード内の「'Wporzadmin' => 'abc'」の部分を変更してください。左側にはログインIDを指定し、右側には任意の英数字を指定します。これで著者アーカイブページのURLが「/author/abc/」になります。
【追加対策】REST APIからのユーザー情報取得を制限する
WordPressには、著者ページとは別に、投稿者名や著者ページのURLを取得できる仕組み(REST API)があります。
著者ページの設定とは別に必要です。
REST APIの制限には、プラグインの設定画面を使う方法と、functions.phpにコードを追加する方法があります。
CloudSecure WP Securityを使う方法
利用中のテーマやプラグインへの影響を確認する必要があります。Contact form7を利用している場合は注意が必要です。
functions.phpにコードを追加する方法
標準の投稿者情報を取得する部分だけを制限できます。REST APIで本人確認が済んでいないアクセスを制限します。
ここでは、制御しやすいコードを追加する方法を紹介します。

子テーマのfunctions.phpにユーザー情報取得を制限するコードを追加する
子テーマは、使用中のテーマをカスタマイズするためのテーマです。
追加コードは、子テーマ側のfunctions.phpの最後に記載します。
情報の取得制限とサイトの動作を確認する
ブラウザーのシークレットウィンドウ、またはプライベートウィンドウを開き、WordPressにログインしていない状態で以下のURLを確認します。
以下の「example.com」を自分のサイトのドメインに置き換えてください。
https://example.com/wp-json/wp/v2/users
https://example.com/wp-json/wp/v2/users/1
https://example.com/?rest_route=/wp/v2/users
画面に「ユーザー情報へのアクセスは制限されています。」というメッセージと「403」が表示されればOKです。
次のURLで、投稿データに添付される著者情報も確認できます。
https://example.com/wp-json/wp/v2/posts?_embed=author
表示されたデータの「_embedded」内にある「author」を確認し、「site_rest_users_restricted」というエラーコードが表示されていれば制限できています。
更新・バックアップ・監視でWordPressを安全に運用する

自動バックアップの保存日を確認する
エックスサーバーは、全プランで自動バックアップを提供しています。
サーバーパネルの「バックアップ」「MySQLバックアップ」で、復元に使えるデータの日付を確認しましょう。
バックアップを復元すると、サイトは保存時点の状態に戻ります。
復元前に現在のデータも保存し、ファイルとデータベースは同じ時点のバックアップを選んでください。
WordPress・テーマ・プラグインを更新する
更新情報は、WordPress管理画面の「ダッシュボード>更新」で確認できます。
バックアップを確認してから更新し、記事の表示・保存や、お問い合わせフォームの送信を試しましょう。
使わなくなったプラグインは削除します。
テーマは使用中の親テーマと子テーマなど、必要なものを残して整理しましょう。
PHPのバージョンと対応状況を確認する
PHPは、WordPressを動かすためのプログラミング言語です。
現在のバージョンは、エックスサーバーの場合はサーバーパネルの「PHP Ver.切替」で確認できます。
SWELLならWordPressのダッシュボードのサイト情報でPHPバージョンを確認できます。

切り替えるときは、使用中のWordPress・テーマ・プラグインが対応している推奨バージョンを選びます。
変更前のバージョンを控え、切り替え後に記事の表示やフォーム送信を確認しましょう。
ログでアクセスやエラーの記録を確認する
サーバーパネルの「アクセスログ」ではアクセス先を、「エラーログ」ではエラーの記録を確認できます。
ログインやフォーム送信で問題が起きたときは、発生した時刻を控え、その前後の記録を調べましょう。
CloudSecure WP Securityのログイン履歴では、ログインの成功・失敗を確認できます。
成功したログインの日時や接続元IPアドレスが、自分や共同編集者の操作と一致するかも確認してください。
対象プランではXServer サイトセキュリティを利用する
プレミアム・ビジネスプランでは、「XServer サイトセキュリティ」を無料で利用できます。
無料枠は1サーバーアカウントにつき1サイトで、診断対象はプレミアムが1ページ、ビジネスが50ページです。
新サーバーパネルで診断するサイトのURLと通知先を登録し、診断パネルで実行頻度などを設定します。
結果や通知を確認し、見つかった問題に応じて更新・修正・調査を進めましょう。
セキュリティ設定後に不具合が出たときの対処法

WordPressの管理画面にログインできない場合
エラー画面の文言から、先に確認する設定を選びます。
症状 最初に確認する項目 短時間に連続したログイン処理の案内 サーバーのログイン試行回数制限 一部の利用環境からアクセス制限の案内 国外アクセス制限・接続元IP IP制限を設定したあとに接続できない ホワイトリストに登録したIP wp-adminで404になる 保存したログインURLから入り直す 認証コードを受け取れない 認証アプリ、メール、リカバリーコード サーバー側のログイン制限が原因の場合は、サーバーパネルで該当する制限を一時的にOFFにし、作業後にONへ戻します。
記事の編集・保存やフォーム送信ができない場合
設定直後から失敗する場合は、直前に変更した項目を1つ戻して、同じ操作を試します。WAF、REST API制限、ベーシック認証などを確認します。
海外・VPN・外部サービスから接続できない場合
VPNを使っている場合は、いったんVPNを切って同じ画面を開きます。
通常の回線では入れるなら、VPNの接続元が国外アクセス制限などに該当していないかを確認します。
外部サービスだけ接続できない場合は、XML-RPCとREST APIのどちらを使うかを調べます。必要な接続に合わせて例外や制限を見直します。
functions.phpの編集後にエラーが出た場合
コードを追加したあとに画面が真っ白になったり、「重大なエラー」と表示されたりした場合は、編集前に保存したfunctions.phpを使って元に戻します。
表示が戻ったら、コードを貼り付けた位置やコピーしたコードの抜けがないかを確認しましょう。
まとめ|基本設定から始めて利用環境に合った対策を追加する
まずはWordPressやプラグインの最新への更新、HTTPS、二段階認証、バックアップを確認しましょう。
IPアドレス制限やAPI制限は、編集者の接続環境や外部サービスとの連携に合わせて設定します。
サーバーパネルの「WordPressセキュリティ設定」を開き、現在の設定を確認してみましょう。