Skip to content

hiro-gj/ip-login-restrictor

 
 

Repository files navigation

IP Login Restrictor

WordPress のログイン画面・管理画面、さらに必要に応じてフロントエンド(公開ページ)へのアクセスを、特定の IP アドレスまたは CIDR で簡単に制限できるセキュリティプラグインです。 ※ 本プラグインは、セキュリティの観点から固定IPアドレスの利用を前提として設計されています。

こんなシチュエーションに最適 ✨

  • 開発中・リニューアル中のサイトのテスト公開に
    「関係者だけにサイトを見せたい」「クライアントのオフィスからのみアクセスさせたい」といった場合に、パスワード制限よりも手軽かつ確実にアクセスを制御できます。
  • 管理画面のセキュリティ強化に
    不特定多数からの不正ログイン試行をシャットアウト。自分やスタッフの固定IPのみを許可することで、鉄壁のセキュリティを実現します。
  • 社内ポータルや会員制サイトの基盤として
    特定の社内ネットワーク(VPN等)からのアクセスのみを許可するイントラネット的な運用にも利用可能です。

主な機能 🚀

1. 2つの独立したIPホワイトリスト

用途に合わせて、2種類の制限を個別に設定できます。

  • 管理者・ログイン用リスト:
    管理画面 (/wp-admin/) および ログイン画面 (wp-login.php) へのアクセスを許可するIPリスト。ここに追加されたIPは、フロントエンドへのアクセスも自動的に許可されます。
  • フロントエンド専用リスト:
    通常の公開ページ(フロントエンド)のみ閲覧を許可するIPリスト。外部の制作パートナーやクライアントに「表示確認だけさせたい(管理画面には入らせたくない)」場合に便利です。

2. レスキューURL(緊急避難機能)🚑

「IPアドレスが変わってしまって管理画面に入れない!」 そんな時のために、独自の 「レスキューURL(Rescue URL)」 を生成できます。 あらかじめ設定しておいた秘密のキーを含むURLにアクセスするだけで、その時の新しいIPアドレスを自動的にホワイトリストに追加 し、ロックアウト状態から復帰できます。

  • パラメータ名の変更: URLの ?iplr_rescue= の部分(パラメータキー)も自由に変更可能。推測されにくい独自のURLを作成できます。

3. wp-config.php によるオーバーライド

FTPアクセスが可能であれば、設定ファイル (wp-config.php) を編集することで強制的にアクセスを許可できます。

  • WP_LOGIN_IP_ADDRESS: 緊急許可IPを指定(カンマ区切りで複数可)
  • REMOVE_WP_LOGIN_IP_ADDRESS: true を設定すると、全てのIP制限を無効化

4. ページ単位の臨時IP設定 📄

各投稿や固定ページごとに、そのページ専用の臨時IPアドレスを設定できます。 デフォルトの許可IPリストに加えて、ページ固有の臨時IPからもアクセスを許可できるため、特定のページだけを一時的に特定のユーザーに公開したい場合に便利です。

  • 投稿・固定ページの編集画面にメタボックスを追加: サイドバーに「IP Login Restrictor - 臨時IP設定」が表示されます。
  • 有効期限設定: 指定した日時を過ぎるとページ制限を自動で無効化。空欄にすると無期限で制限を維持します。
  • ページ独自メッセージ: 拒否画面に表示する「そのページ専用のメッセージ」を設定可能。{page_message} トークンで表示を制御できます。
  • 管理画面での一括監視: 設定ページで、現在制限が「有効」になっているページを一覧表示。期限までの残り時間も一目で確認できます。
  • グローバル通知: ページ制限が有効な場合、管理画面全体に警告が表示されるため、管理者が状況を把握しやすくなっています。
  • 投稿一覧で確認可能: 投稿一覧画面に「臨時IP」カラムが追加され、設定状態や有効期限を一目で確認できます。

5. スマートな下書きプレビュー(Draft Preview)📝

ログインしていない外部パートナー(ライターやクライアント)でも、許可されたIPアドレスからであれば、下書き(Draft)やレビュー待ち(Pending) 状態の記事を直接プレビュー可能です。 プレビュー中は画面下部にわかりやすい通知バーが表示されるため、公開状態と間違えることもありません。

6. その他のこだわり機能

  • IPv4 / IPv6 完全対応: 最新のIPv6環境にも対応。アクセス時にIPv6アドレス(もしあれば)を自動検出し、許可リストと照合します。IPv4/IPv6デュアルスタック環境でも、どちらかのIPが許可されていればスムーズにアクセスできます。
  • HTMLメッセージカスタマイズ: アクセス拒否画面のメッセージを自由に編集可能。{ip}, {datetime}, {site_name}, {page_message} 等のトークンが使用可能です。
  • ロケール(タイムゾーン)対応: 有効期限の判定や時刻表示は、WordPress の「タイムゾーン」設定に基づきます。
  • ワンクリック追加: 管理画面にアクセス中の自分のIP(IPv4/IPv6)を、ボタン一つでリストに追加できます。
  • CIDR対応: 個別のIPだけでなく、192.168.1.0/242001:db8::/32 のような範囲指定もサポート。
  • 管理バー連携: 現在の機能有効状態や、自分のIPアドレスをWordPress上部の管理バーですぐに確認できます。

使用方法 🛠️

1. 基本設定

プラグインを有効化したら、管理画面の「IP Login Restrictor」設定ページへ移動します。 初期状態では機能は 「無効」 になっています。

2. IPアドレスの登録

  • Admin & Login Allowed IPs: 自分や管理者のIPを入力します。
  • Frontend Only Allowed IPs: 確認用ユーザーなどのIPを入力します。

「現在のIPを追加」ボタンを押すと、今アクセスしているIPが自動入力されます。

3. 制限の開始

「ステータス」を 「有効」 に切り替えて保存すると、管理画面・ログイン画面への制限が即座に適用されます。 公開ページ(フロントエンド)も制限したい場合は、「フロントエンドの制限」も 「制限する」 に設定してください。

4. レスキューキーの設定(推奨)

万が一のために、「レスキューキー」に任意の英数字(パスワードのようなもの)を設定しておきましょう。 生成された レスキューURL をスマートフォンやブラウザのブックマークに保存しておけば、外出先でIPが変わっても安心です。

5. ページ単位の臨時IP設定(オプション)

特定のページだけを一時的に特定のユーザーに公開したい場合は、投稿・固定ページの編集画面で設定できます。

  1. 投稿または固定ページの編集画面を開きます。
  2. サイドバーに表示される「IP Login Restrictor - 臨時IP設定」メタボックスで 「有効(Enable)」 を選択します。
  3. そのページ専用の臨時IPアドレスを入力します。
  4. 「有効期限」 を設定します(空欄にすると無期限になります)。
  5. 必要に応じて 「専用拒否メッセージ」 を入力します。
  6. 投稿を更新すると、そのページへのアクセスが制限されます。
    • 設定ページ (/wp-admin/admin.php?page=ip-login-restrictor) で、制限中のページ一覧を確認できます。
    • 有効期限を過ぎた場合、IP制限は自動的に適用されなくなります。

注意事項 ⚠️

  • 自分のIPを追加し忘れないように注意してください。 有効化した瞬間から制限が始まります。
  • もし締め出されてしまった場合は、上述のレスキューURLを使うか、FTP等で wp-config.php を編集して復旧してください。

License

GPLv2 or later

About

WordPress用 固定IPアドレスでのログイン制御プラグイン

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages