このサイト(shitate 公式サイト)では、セキュリティ対策にプラグイン CloudSecure WP Security を使っています。エックスサーバー社が無料で提供している国産プラグインで、ログイン画面や管理画面をねらった不正アクセスへの対策がひととおりそろっています。
ここでは実際の設定画面と一緒に、どの機能をどう設定しているかと、なぜそうしているかをまとめます。各機能のくわしい説明は、提供元の解説記事「CloudSecure WP Securityのメリットや設定方法を解説」(エックスサーバー)がわかりやすいので、あわせて読んでみてください。
※ 2026 年 10 月時点の設定です。
設定の全体像
管理画面のメニュー「CloudSecure WP Security」→「ダッシュボード」で、機能ごとのオン・オフを一覧できます。「有効」のラベルが付いているのが、オンになっている機能です。

設定内容と、そうしている理由をひと言でまとめると次のとおりです。
| 機能 | このサイトの設定 | 理由 |
|---|---|---|
| ログイン無効化 | 有効(30 秒以内に 5 回失敗で 3600 秒ブロック) | 総当たり攻撃を長めに止める |
| ログインURL変更 | 有効 | ログイン画面の場所を知られにくくする |
| ログインエラーメッセージ統一 | 有効(初期値) | ユーザー名の正誤を悟らせない |
| 2段階認証 | 無効 | 入口の対策を重ねたうえで、ログインの手軽さを優先 |
| 画像認証追加 | 有効(4 フォームすべて) | ボットによる自動送信を防ぐ |
| ユーザー名漏えい防止 | 有効(初期値) | ログインに使うユーザー名を隠す |
| XML-RPC無効化 | 有効(ピンバック無効) | ピンバックの悪用を防ぐ |
| REST API無効化 | 無効 | ブロックエディターが REST API で動くため |
| 管理画面アクセス制限 | 有効 | 見知らぬ接続元には管理画面ごと見せない |
| 設定ファイルアクセス防止 | 有効(初期値) | 設定ファイルの中身の流出を防ぐ |
| シンプルWAF | 有効(XSS 以外を遮断) | 代表的な攻撃を遮断。XSS は誤検知が多いため外す |
| ログイン通知 | 無効 | 日常のログインで通知が埋もれるため |
| アップデート通知 | 無効 | 更新は管理画面で確認しているため |
| サーバーエラー通知 | 有効 | 不具合に早く気づくため |
ログイン保護
ログイン無効化
決められた時間内にログインを決められた回数失敗すると、その接続元からのログインを一定時間ブロックする機能です。パスワードを片っ端から試す総当たり攻撃(ブルートフォースアタック)への基本の対策になります。

- 間隔:30 秒(初期値は 5 秒)
- ログイン失敗回数:5 回(初期値のまま)
- ログイン無効時間:3600 秒(1 時間)(初期値は 60 秒)
初期値の「5 秒間に 5 回」は、ものすごい速さで試してくるボットには効きますが、少し間をあけながら試してくる攻撃はすり抜けてしまいます。そこで判定する間隔を 30 秒に広げ、ブロックしたら 1 時間は再挑戦できないようにしています。
そのぶん、自分がパスワードを打ち間違え続けたときも 1 時間締め出されます。このサイトはログイン URL の変更と管理画面アクセス制限で、攻撃者がそもそもログイン画面にたどり着きにくい状態にしているので、「たどり着いた相手には厳しく」という考え方です。
ログインURL変更
WordPress のログイン画面は、初期状態では誰でも /wp-login.php で開けてしまいます。この機能で、ログイン画面の URL を推測されにくい文字列に変えています。

「login」や「admin」のような推測しやすい文字列は避けます。変更後の URL を忘れるとログインできなくなるので、変えたらすぐにブックマークしておきましょう(忘れたときは、変更時に管理者宛てに届くメールで確認できます)。
「管理者ページからログインページにリダイレクトしない」には、チェックを入れていません。このサイトでは次に紹介する管理画面アクセス制限を有効にしているため、24 時間以上ログインしていない接続元が /wp-admin/ を開いても 404 になり、ログイン画面へは転送されないからです。転送されるのは直近にログインした接続元だけなので、普段作業している環境からは /wp-admin/ を開くだけでログイン画面に行けます。
管理画面アクセス制限を使わない場合は、このチェックを入れておきましょう。入れないと、/wp-admin/ からの転送で変更後のログイン URL が誰にでも分かってしまいます。
ログインエラーメッセージ統一
ログインに失敗したとき、WordPress は初期状態だと「ユーザー名が登録されていない」「パスワードが違う」のように、原因ごとに違うメッセージを出します。これではユーザー名が合っているかどうかが攻撃者に伝わってしまうため、どの失敗でも同じメッセージ(入力に誤りがあります)を返すようにしています。初期値のまま有効です。
2段階認証
パスワードに加えて、メールまたは認証アプリ(Google Authenticator など)で受け取る 6 桁のコードでも本人確認する機能です。解説記事では有効化が強くすすめられていますが、このサイトでは現在オフにしています。
ログイン URL の変更・管理画面アクセス制限・画像認証・ログイン無効化を重ねて、ログイン画面にたどり着きにくく、たどり着いても試行しにくい状態にしたうえで、毎回のログインの手軽さを優先しているためです。
ただし 2 段階認証は、パスワードが漏れてしまったときの最後の砦になる対策です。複数人で更新するサイトや、クライアントにアカウントを渡すサイトでは有効にしておくことをおすすめします。有効にする場合は対象の権限グループ(このサイトの設定では管理者)を選び、各ユーザーが自分のアカウントで認証方法とリカバリーコードを設定します。
画像認証追加
画像に表示された文字を入力しないと先へ進めないようにする機能です。ボットによる自動ログインや、フォームへの自動送信を防ぎます。ログイン・コメント・パスワードリセット・ユーザー登録の 4 つのフォームすべてで有効にしています。

使っていないフォームがあっても全部オンにしておけば、あとから使い始めたときの付け忘れを防げます。なお、お問い合わせフォームなどに Cloudflare Turnstile のようなスパム対策を入れる場合は、同じフォームに画像認証と重ねないようにします(競合するおそれがあるため)。
公開情報の制限
ユーザー名漏えい防止
WordPress は初期状態だと、/?author=1 のような URL にアクセスすると投稿者アーカイブへ転送され、その URL にログイン用のユーザー名が出てしまいます。この機能でそうしたアクセスをエラーページへ飛ばし、ユーザー名を知られないようにしています。初期値のまま有効です。
あわせて、投稿者の「ブログ上の表示名」もユーザー名とは別の名前にしておくと安心です。
XML-RPC無効化
XML-RPC は、外部のアプリやサービスから WordPress を操作するための古い仕組みです。ピンバック(ほかのサイトからリンクされたときの通知)もこの仕組みを使っていて、大量のリクエストを送りつける攻撃の踏み台に悪用されることがあります。
このサイトでは無効化種別を「ピンバック無効」にして、ピンバックだけを止めています。もう一方の「XML-RPC無効」を選ぶと XML-RPC 全体が止まり、XML-RPC 経由のログインもできなくなります。そのかわり、Jetpack や WordPress のスマホアプリなど XML-RPC を使うツールは動かなくなります。そうした連携を使っていないサイトなら、「XML-RPC無効」で全体を止めてしまうのも手です。
REST API無効化
REST API は、WordPress の外からデータを読み書きするための仕組みです。この機能は悪用を防ぐために REST API 自体を止めるものですが、このサイトではオフにしています(REST API は使える状態のまま)。

ブロックエディターやサイトエディターは、記事の保存やテンプレートの読み込みを REST API 経由で行っています。shitate はブロックテーマなので、REST API を止めると編集画面そのものが正しく動かなくなります。SEO プラグインなど、REST API を使うプラグインも少なくありません。
どうしても止めたい場合は、必要なテーマやプラグインを除外リストに登録してから有効にし、編集画面や各プラグインが問題なく動くか確かめてください。
管理画面・システム保護
管理画面アクセス制限
24 時間以上管理画面にログインしていない接続元 IP アドレスから /wp-admin/ 以下にアクセスされると、404 エラーを返す機能です。攻撃者からは、管理画面がそもそも存在しないように見えます。

ログイン URL の変更と組み合わせると、「ログイン画面の場所が分からない」「管理画面も見えない」状態を作れるので、このサイトでは有効にしています。
固定 IP ではない回線を使っている場合や外出先から作業する場合は、IP アドレスが変わるたびにログインし直しが必要になることがあります。その手間を許容できるかどうかで、有効にするかを決めるとよいでしょう。
除外パスに入っている admin-ajax.php は、サイトの表側の機能(フォーム送信など)からも呼び出されます。除外から外すと表側の機能が動かなくなることがあるので、そのままにしておきます。
設定ファイルアクセス防止
wp-config.php や .htaccess など、ブラウザから直接開かれることを想定していない設定ファイルへのアクセスを 403 エラーで遮断します。データベースの接続情報などの流出を防ぐための機能で、初期値のまま有効です。
シンプルWAF
SQL インジェクションなど WordPress への代表的な攻撃を検知すると、アクセスを遮断(403 エラー)して検知履歴を記録し、管理者にメールで知らせる機能です。初期値はオフなので、有効にしています。

- メール通知:通知する
- 遮断する攻撃種別:SQL インジェクション、OS コマンドインジェクション、コードインジェクション、メールヘッダインジェクション(クロスサイトスクリプティングのみオフ)
- 検査上限を超えたアクセスを遮断する:オン(推奨どおり)
クロスサイトスクリプティング(XSS)だけを外しているのは、誤検知が多かったためです。このサイトのマニュアルには HTML や JavaScript のコード例をたくさん載せているので、記事の保存や自動保存、SEO プラグインの設定保存(どれも REST API 経由)が XSS と判定されて遮断され、編集が進まなくなりました。
WAF で正常な操作が止まったときは、「検知履歴を表示」からどのルールが反応したかを確かめて、そのルールだけを外すのがおすすめです。WAF ごと無効にするより、守りを広く残せます。
通知
通知機能は 3 つあります。このサイトでオンにしているのは、サーバーエラー通知だけです。
- ログイン通知:オフ 管理者が日常的にログインして更新しているため、ログインのたびにメールが届くと通知が埋もれ、本当に怪しいログインに気づきにくくなります。ログインの記録は「ログイン履歴」画面でいつでも確認できます。
- アップデート通知:オフ WordPress 本体・プラグイン・テーマの更新は、管理画面の更新表示を見ながらこまめに対応しているためです。更新をためてしまいがちなサイトでは、オンにしておくと安心です。
- サーバーエラー通知:オン Internal Server Error などが起きたときに、記録を残してメールで知らせてくれます。訪問者からの連絡を待たずに不具合に気づけます。
注意点
- ここで紹介したのは、このサイトの運用に合わせた設定です。セキュリティと使い勝手はトレードオフなので、更新する人数や作業する場所(固定 IP かどうか)に合わせて調整してください。
- ログイン無効化は接続元の IP アドレス単位でブロックします。社内など同じ回線を使う誰かがログインに失敗し続けると、自分まで締め出されることがあります。
- サーバー側にも似た機能がある場合(エックスサーバーの「WordPress セキュリティ設定」など)は、プラグインと併用できます。どちらで止められたのか分からなくならないよう、両方の設定を把握しておきましょう。
- 設定を変えたら、ログイン・記事の保存・お問い合わせフォームの送信など、普段の操作がひととおり問題なくできるか確かめておきます。
参考:CloudSecure WP Securityのメリットや設定方法を解説(エックスサーバー)/CloudSecure WP Security 公式マニュアル
