
XServer 固定IPアクセスでWordPress・a-blog cmsの管理ログインを制限する
「XServer 固定IPアクセス」を利用し、CMS(WordPress・a-blog cms)の管理画面に「特定のIPアドレス(自分)」からしかログインできないようにアクセス制限を行いました。
実際のサイトで行った作業を、説明用ドメイン example.com に置き換えています。設定するときは、自分が管理するサイトのドメインへ読み替えてください。
また、この記事は、XServerへログインできる状態から進めます。初めて利用する場合は、先に会員登録などの手続きを済ませてください。
1. 接続方法とプランを選んで申し込む
XServer 固定IPアクセスから申し込みます。XServerアカウントがある場合は既存アカウントでログインし、初めて使う場合は会員登録と申し込みを進めます。
今回の内容
接続方法:専用アプリで接続(WireGuard)
プラン:ライト
ライセンス数:1
端末:Mac 1台
接続方法、プラン、ライセンス数を選び、確認画面で内容を確認します。支払いや更新条件も確認して、画面の案内に沿って手続きを完了します。

2. 発行された固定IPと接続情報を確認する
申し込みが完了すると、登録メールアドレスに案内が届きます。
XServerアカウントの「XServer 固定IPアクセス契約管理」を開き、IPアドレス一覧で、自動割り当てされた「固定IP」と契約の状態を確認します。
ステータスが「有効」になったら、対象IPの「詳細」をクリックしてライセンスの設定画面を開きます。
接続許可が「ON」になっていることを確認し、「設定ファイル(PC)」をダウンロードしておきます(.conf というファイルが保存されます)。

3. WireGuardをインストールして接続する
次に、PC側でVPNに接続するためのアプリを設定します。ここではMacを例に進めます。 各端末への設定方法は、XServerの接続設定マニュアルもあわせて確認してください。
アプリのインストール
WireGuard公式ページからアプリをダウンロードしてインストールします。設定ファイルの取り込み
WireGuardを起動し、「ファイルからトンネルをインポート」を選びます。先ほどダウンロードした .conf ファイルを指定し、VPN構成の追加確認が表示されたら許可します。
※取り込みが済めば、元の .conf ファイルは削除しても構いません接続とIPの確認
WireGuardを「ON(有効化)」にした状態で、ブラウザで「IP確認ページ」を開きます。表示されたIPが、XServerの契約管理画面にあった「固定IP」と一致することを確認してください。
※設定後、接続を止めたいときはMacのメニューバーにあるWireGuardアイコンから「無効化」を選びます。



これでPC側のIP制限の準備が整いまいた。
4. サーバー・CMSに許可する固定IPを登録する
ここからが実際のIP制限の設定になります。サイト側に許可したIPからしか管理画面に入れないようにします。
適用後は、VPNのON/OFFを切り替えてログイン制限が効いているかを確認してください。
WordPress ✕ Xserverの場合
サーバーパネルの「WordPress → WordPressセキュリティ設定」で対象ドメインを選びます。「IPアドレス制限 → ダッシュボード アクセス制限」のホワイトリストを編集し、固定IP 203.0.113.25 を登録します。

WordPress ✕ ロリポップ!の場合
サーバーの管理画面ではなく、WordPressを設置した公開フォルダーにある .htaccess ファイルを直接編集します。 .htaccessの編集は事前にバックアップをとってから行ってください。
以下の記述を、.htaccess の先頭(# BEGIN WordPress などの自動生成ブロックの外側)に追加します。
# BEGIN WORDPRESS DIRECT FIXED IP - MANUAL
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^(?:::ffff:)?203\.0\.113\.25$ [NC]
RewriteRule ^(?:wp-login\.php(?:/|$)|wp-admin(?:$|/(?!admin-ajax\.php$))) - [F,L,NC]
# END WORDPRESS DIRECT FIXED IP - MANUAL固定IPの変更
203\.0\.113\.25 の部分を、ご自身の固定IPアドレスへ変更してください(IPアドレスの各 . の前にはバックスラッシュ \ を付けます)。除外設定について
この設定では、許可IP以外からの /wp-login.php と /wp-admin/ へのアクセスを拒否しますが、公開ページでも使われる /wp-admin/admin-ajax.php はブロックしないよう除外しています。
ログインURLを独自に変更している場合はルールの調整が必要です。
a-blog cmsの場合
対象ブログの「コンフィグ → アクセス設定」を開きます。 「管理ログイン制限 → 許可リスト」に、ご自身の固定IPアドレスに /32 をつけて登録し(例:203.0.113.25/32)、保存します。
※/32 は「このIPv4アドレス1つだけを指定する」という書き方です。
https://developer.a-blogcms.jp/document/operation/access.html

【子ブログがある場合】
子ブログが参照する「共通のコンフィグセット」がある場合はそちらを設定し、分かれている場合は個別に子ブログの「コンフィグ → アクセス設定」で設定を行います。
5. VPNの「あり・なし」で動作をテストする
設定が終わったら、確実に制限が効いているかテストします。
VPN「なし(OFF)」でアクセス
ログインURLへアクセスし、管理画面へのアクセスが拒否されることを確認します。
また、この状態で「公開ページ」や「お問い合わせフォーム」が一般の閲覧者から正常に見えているかも確認してください。VPN「あり(ON)」でアクセス
WireGuardをONにしてからアクセスし、ログイン画面が表示され、正常に管理画面まで入れることを確認します。
ロリポップ+WordPressの結果

Xserver+WordPressの結果

a-blog cmsの結果

おわりに:固定IPでログイン画面へのアクセスを制限する
これで、XServerの固定IPアクセスを使ったCMS管理画面のアクセス制限が完了しました。
管理画面への不正ログイン対策として、IDやパスワードを複雑にする方法に加えて、「あらかじめ許可したIPアドレス以外は、そもそもログイン画面を開けないようにする」設定はとても効果的です。
また、「XServer 固定IPアクセス」と「WireGuard」の組み合わせは動作も軽く、出先のWi-Fiやスマートフォンのテザリングからでも、アプリをオンにするだけでいつもの固定IPで安全に通信できます。
サイトを守るセキュリティ設定の1つとして、ぜひ試してみてください。