福岡 ワードプレス システム開発 株式会社ジーティーアイ のブログ

DB不要!.htaccessとPHPだけで作る、管理画面を守るIPゲートウェイの開発記

DB不要!.htaccessとPHPだけで作る、管理画面を守るIPゲートウェイの開発記

「特定のディレクトリだけにIP制限をかけたい」
「でも、Basic認証だとスマホでの入力が面倒だし、かといってWordPressをわざわざ入れるほどでもない……」

開発の現場やサイト運用の中で、一度はこんな悩みに直面したことはありませんか?

今回、そんな「ちょうどいい制限」を実現するために、
データベース不要、ファイルを置くだけで即座に本格的なIPゲートウェイを構築できる
『GTI IP Gate』を開発しました。

エックスサーバーやロリポップ!などの共用レンタルサーバーでも、
PHP 8.0以上があれば今すぐ使えます。
今回は、このツールの設計思想や技術的なポイントについてご紹介します。


目次[閉じる]

なぜ「IP制限」なのか、なぜ「シンプル」なのか

管理画面や限定ページを守る方法として、
真っ先に思いつくのは BASIC認証 かもしれません。

  • スマホやタブレットでの入力が面倒
  • パスワード管理が煩雑
  • 一時的な共有がやりづらい

一方で、WordPressなどのCMSを導入すると、
それはそれでオーバースペックになることもあります。

そこで目指したのが、
「ファイルを置くだけで、ちゃんと安全」
という、現場で使いやすい落としどころでした。


GTI IP Gate の基本コンセプト

  • WordPress 非依存
  • データベース不要
  • 設定はテキストファイル1枚
  • FTPだけで復旧可能

Apacheの .htaccess と最小限のPHPを組み合わせ、
軽量だが妥協しないIP制限を実現しています。


単一エントリーポイントによる多段ゲート設計

GTI IP Gate では、Apache側ではすべてのリクエストを
1つのPHPファイルに集約します。

  • 許可されたIPかどうか
  • パスが正規化されているか
  • 実在するファイルかどうか

これらを段階的に評価し、
すべてを満たした場合のみ処理を継続します。

IP制限「だけ」に頼らず、
「IP × 実在ファイル」という二条件で守る設計です。

インストール手順(最短5分)

GTI IP Gate の導入は非常にシンプルです。
サーバーにファイルを配置し、IPを1つ書くだけで動作します。

  1. ZIPファイルをダウンロードして解凍
    GitHub Releases または本ページのダウンロードリンクから取得します。
  2. 任意のディレクトリにアップロード
    例:/secret/ や /admin_gate/ など
    ※このディレクトリ全体がIP制限対象になります。
  3. IP設定ファイルをリネーム
    admin/allow_ips_conf.sample.cgi を
    admin/allow_ips_conf.cgi に変更します。
  4. 自分のIPアドレスを1行で記述
    例:203.0.113.10 ※CIDR表記(例:203.0.113.0/24)も使用可能です。
  5. ブラウザでアクセスして確認
    https://example.com/secret/
    許可IPからは表示され、それ以外は403になります。

これでインストールは完了です。

初回につまずきやすいポイント

管理画面に入れなくなった
→ FTPで admin/allow_ips_conf.cgi を直接編集すれば必ず復旧できます。

403が出てアクセスできない
→ allow_ips_conf.cgi に自分のIPが書かれていない可能性が高いです。

スマホ・テザリングでアクセスできない
→ モバイル回線ではIPが頻繁に変わります。
必要に応じて固定IPやCIDR指定を検討してください。

GTI IP Gate には、一般的な会員管理や多段認証のログイン画面は存在しません。


管理画面について

上述した通り、GTI IP Gate には、一般的なログイン画面は存在しません。

管理画面に入る条件は非常にシンプルで、
許可されたIPからアクセスしていること
ただそれだけです。

管理画面へのアクセス時は ID/パスワード を入力します。

ここで ログインID、パスワードを入力してログインできます。ログインIDの変更等はREADME.md をご覧ください。

管理画面では IPを入力して 追加、 許可済みIPのゴミ箱をクリックして除去の簡単操作で管理できます。

管理画面へは、次のURLにアクセスしてください。

https://example.com/secret/admin/admin.php

※ secret の部分は、設置したディレクトリ名に置き換えてください。

また、「ログイン情報の変更」から admin/admin.php へのログインID/パスワード の変更を行えます。


このツールが向いているケース

  • 開発・検証環境をサクッと守りたい
  • 簡易的な管理画面を限定公開したい
  • 共用レンタルサーバーで使いたい
  • 締め出し事故を極力避けたい

このツールが向いていないケース

  • 不特定多数が利用する会員制サービス
  • 頻繁にIPが変わるモバイル回線主体の運用
  • 厳密な認証や監査が必要な環境

GitHub Releases として公開しています

GTI IP Gate は、GitHub上で Releases として公開しています。

https://github.com/taman777/gti-ip-gate/releases

実運用を前提としたツールとして、
バージョン管理と変更履歴を明確にしています。


ダウンロード

サイト上からもダウンロードできるようにしています。

こちらからダウンロードしてください。説明も読んでください。

⚠️ 免責およびお願い

本ツールは「指定ディレクトリのIP制御」を目的として、
株式会社ジーティーアイ(GTI)が独自に開発・公開しているものです。

オープン配布のため、動作保証・個別サポート・苦情対応は一切行いません。
ご利用は自己責任でお願いいたします。

任意のサーバーにて運用テスト・バックアップを行ったうえでご利用ください。
ご意見・ご要望があればお知らせください。

まとめ

GTI IP Gate は、
「特定のディレクトリだけを、ちょうどよく守りたい」
という現場の感覚から生まれたツールです。

  • DB不要
  • WordPress不要
  • .htaccess + PHPのみ
  • FTPで即復旧可能

やりすぎない、でも妥協しない。
そんなIP制限を探している方には、
きっと刺さるはずです。

この記事をシェアする

記事一覧へ戻る

コメント Comments

コメント一覧

コメントはありません。

コメントする

Throws SPAM Away を使っていますよ、もちろん。

トラックバックURL

https://blog.gti.jp/post-75298/trackback/

関連記事 Relation Entry

IP あなたが接続中のIPアドレス:216.73.216.31