LQアクセス制限ライブラリ

(旧「プロキシ制限ライブラリ」)
モノホンのアドレス→http://www2s.biglobe.ne.jp/~cru/library/lq/index.html

目次

履歴


用途

 任意の perl スクリプトのCGIに組み込むことにより、このCGIへの特定の相手からのアクセスを制限します。

沿革

 lq.pl の初版(Ver.0.92)は、1998年6月のリリースなので、バグ取りを除いて約2年半ぶりのバージョンアップとなります。 初版は、プロキシサーバーを利用した当面の荒らし行為を防止したい、ということでとりあえず作成したものであるため、多くの問題を残しながら、そのまま放置していました(苦笑)
 今回の新版は、これらの問題を解消すると共に、プロキシサーバー経由の場合に限らず、ホスト名なども含む種々のアクセス制限を行えるようにし、設置方法やWeb上での操作性も改善しました。
 また、これに伴い、名称も「プロキシ制限ライブラリ」から「LQアクセス制限ライブラリ」に変更しました。

概要

 このライブラリが提供するアクセス制限の概要を以下に説明します。 (ユーティリティCGIに付属のヘルプファイルも参照してみて下さい。)

 なお、これらのアクセス制限は、いずれもWeb上の操作により、簡単に登録/削除、設定/解除を行うことができます。

IPアドレスやホスト名に基づくアクセス制限


ユーザーIDに基づいたアクセス制限

ユーザーIDは、クッキーによってアクセスの相手(のブラウザ)に設定します。

プロキシサーバー関連のアクセス制限


その他のアクセス制限


使用例

 このライブラリを組み込む perl のCGIとして、KENTさんの「プチ☆ボード」を利用させて頂きました。
 KENT WEB さんの PETIT v4.5 を使用しました。)

プチ☆ボードLQアクセス制限ライブラリを組み込んだ掲示板CGI

まずは、こちらの掲示板CGIを参照して、 LQアクセス制限ライブラリがあなたのアクセスログを記録するようにして下さい。

なお、以前に参照した人の設定が残っていて、 掲示板CGIがいきなりアクセス禁止になる場合には、 この設定ファイルの初期化 をクリックしてから、再度アクセスし直して下さい。

LQアクセス制限ライブラリのユーティリティCGI

掲示板CGIを参照したら、 このユーティリティCGIであなたのアクセスログを参照して下さい。
ここで、あなた自身にアクセス制限を行えば、 実際にアクセス制限が有効かどうかを上の掲示板CGIにアクセスしてみることで 確認することができます。

なお、アクセス制限の登録を行っても、 設定変更ページで「アクセス制限の実行」を「制限する」に設定しなければ、 実際にアクセスは禁止されません。
設定ファイルの初期化を実行すると、 この「アクセス制限の実行」も「制限しない」に戻ります。


使用条件

 このLQアクセス制限ライブラリの全ての perlスクリプトやドキュメント、サンプルデータなどは、PDS(Public Domain Software)として扱って下さい。
 即ち、作者に無断で、以下の行為を無償で自由に行うことができます。  上記行為は、営利目的によるものの場合にも制限されません。
 サブルーチンなどのスクリプトの一部についても同様に扱って下さい。

 オリジナル版を再配布する場合や修正/改造版を配布する際に、オリジナル版の作者や出所URLを表示されることは歓迎します。
 ただし、単にこのLQアクセス制限ライブラリをCGIに組み込んで使用するだけの場合には、その性格上秘密にしておいた方がよいことが多いので、少なくともこれを組み込んだCGIの出力には、作者表示や出所URLの表示などは行わないで下さい。

 作者は、LQアクセス制限ライブラリを使用した結果について、perlスクリプトの実行結果を含め、一切の責任を負いません。

 作者に連絡する必要がある場合には、mmにお願いします。
 ただし、通常のCGIの設置は経験のある方の利用を対象にしているので、基本的なCGIの設置方法などに関する質問には応じかねます。
 また、作者が多忙な場合や、内容的に対応不要と判断したメールには返信致しませんので、この点も予めご了承下さい。


LQアクセス制限ライブラリのダウンロード

 LQアクセス制限ライブラリは、ファイル名が固定されていると、CGIに組み込んだことが他人にバレたり、また、設置環境によっては、他人にアクセスログファイルを覗かれたりするおそれがあります。
 そこで、このLQアクセス制限ライブラリは、ダウンロードする人ごとに異なるファイル名で使用して頂くようにしています。
 このファイル名は、各ファイルとも拡張子(ファイル名のピリオド以降)を除くボディ部を共通にします。 実際のボディ部は、lqxxxxxxxxxxxx の部分を他の英小文字の6文字に変更したものです。
 ここでダウンロード時に生成されるファイル名とユーザーIDの鍵と塩は、必ず他人に知られないようにして下さい。

 まず、下の「lqxxxxxx.pl」のリンクから、ダウンロード用のCGIを用いてファイルをダウンロードして下さい。
ファイル 名前 説明
lqxxxxxx.pl LQアクセス制限ライブラリ 普通は lq.cgi という名前で保存されるので、ボディ部と共に拡張子も変更して下さい
 ここでは、リンク先を直接ディスクに保存するようにして下さい(ブラウザで開いたものを保存すると、不要なタグが付加される場合があります)。 Windowsでは、リンクを右クリックして、「対象をファイルに保存」などを選択します。

 次に、ダウンロードによってあなたのパソコンのハードディスクに保存したファイルをテキストエディタ(Windowsなら例えば「メモ帳」)で開いて下さい。
 すると、冒頭に以下のような説明が現れるので、ここでの指示に従って、以降に説明するようにダウンロードファイルの名前を変更すると共に、指示された名前でファイルを新規作成します。
package lq;
# ★このファイルの内容は、通常の使用では、特に変更をする必要はありません。
# ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
# ★このライブラリのファイル名は、ダウンロードのたびにランダムに変更されます。
# 通常は、ここで指定するファイル名をそのまま使用して下さい。
# ・ダウンロードしたファイルの名前を以下のように変更して下さい。
#   このファイル(lqxxxxxx.pl)  → lqijfbzk.pl
#   lqxxxxxx.cgi  → lqijfbzk.cgi
#   lqxxxxxx.html → lqijfbzk.html
# ・下記の名前の0バイトファイルを作成して下さい。
#   lqijfbzk.cfg
#   lqijfbzk.dat
#   lqijfbzk.log
#   lqijfbzk.tmp
#   lqijfbzk.lck
# 
# 以下は、スクリプトで使用するデータファイル名の設定です(変更不要)
$ConfigFile = 'lqijfbzk.cfg';        # 設定ファイル
$DataFile   = 'lqijfbzk.dat';        # アクセス制限データファイル
$LogFile    = 'lqijfbzk.log';        # アクセスログファイル
$TempFile   = 'lqijfbzk.tmp';        # 一時ファイル
$LockFile   = 'lqijfbzk.lck';        # ロック用ファイル
# 以下は、ユーザーID作成用のデータです(変更不可)
$UserIDKey  = 'GuIGTr46';            # ユーザーID用鍵(lqijfbzk.cgiの初期化時に参照)
$UserIDSalt = '2s';                  # ユーザーID用塩(lqijfbzk.cgiの初期化時に参照)
#$UserIDSalt = '$1$2s$';  # MD5しか使えない場合に、行頭の # を1文字削除して下さい
# ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
 上の例では、ファイル名のボディ部が lqijfbzk となっています。 このボディ部は、先頭の lq という2文字を除けば、ダウンロードのたびに変化します。

 この例では、ここでダウンロードしたファイル( 特に変更していなければ、普通は lq.cgi となる)の名前を
  lqijfbzk.pl
に変更します。
 また、次項でダウンロードしたファイルの名前も、同様に変更して下さい。

その他、設置に必要なファイル

 下のファイルをダウンロードして、上記で指定されたファイル名に変更して下さい。
ファイル 名前 説明
lqxxxxxx.cgi ユーティリティCGI 普通は lqxxxxxx.txt という名前で保存されるので、ボディ部と共に拡張子も変更して下さい
lqxxxxxx.html ヘルプファイル lqxxxxxx.htm という拡張子で保存された場合には、ボディ部と共に拡張子も変更して下さい
(ただし、このファイルがなくても動作には影響しません)
 ここでも、リンク先を直接ディスクに保存するようにして下さい(ブラウザで開いたものを保存すると、不要なタグが付加される場合があります)。 Windowsでは、リンクを右クリックして、「対象をファイルに保存」などを選択します。

 ユーティリティCGI( lqxxxxxx.cgi )のファイル内容も、第1行目の perl のパス以外は、特に変更する必要はありません。

 上の例の場合には、新たにダウンロードした2つのファイルの名前を、それぞれ
  lqijfbzk.cgi
  lqijfbzk.html
に変更します。

 下のデータファイルを指定の名前で新規作成(0バイトファイル)して下さい。
ファイル 名前 説明
lqxxxxxx.cfg 設定ファイル 実際は、xxxxxx の部分を指定通りに変えたものを作成します
lqxxxxxx.dat アクセス制限データファイル 実際は、xxxxxx の部分を指定通りに変えたものを作成します
lqxxxxxx.log アクセスログファイル 実際は、xxxxxx の部分を指定通りに変えたものを作成します
lqxxxxxx.tmp 一時ファイル 実際は、xxxxxx の部分を指定通りに変えたものを作成します
lqxxxxxx.lck ロック用ファイル 実際は、xxxxxx の部分を指定通りに変えたものを作成します
 上の例の場合には、次の5つのファイルを作成します。
  lqijfbzk.cfg
  lqijfbzk.dat
  lqijfbzk.log
  lqijfbzk.tmp
  lqijfbzk.lck

ファイルの設置

 上記でダウンロードしたファイルと新規作成したファイルを、LQアクセス制限ライブラリを組み込むCGIと同じディレクトリに転送してパーミッションを設定します。

 以下に、ファイルとパーミッションの一覧を示します。
 ただし、これらのファイル名中の xxxxxx の部分は、指定に従って変更したものになります。
 また、パーミッションの欄の括弧内は、CGIが所有者権限で動作する場合の設定を示します。 ユーティリティCGI( lqxxxxxx.cgi )を最初に呼び出した時に、「所有者権限で実行されます。」と表示された場合には、CGIが所有者権限で動作することになります。 しかし、「普通の権限で実行されます。」と表示された場合には、所有者権限ではありません。
 なお、所有者権限についてよく分からない場合には、とりあえず括弧の左側の普通の権限の場合のパーミッションに設定しておき、ユーティリティCGIの最初の起動時に、画面の指示に従って下さい。
ファイル 名前 FTP転送 パーミッション
lqxxxxxx.pl LQアクセス制限ライブラリ ASCII転送 604 (600)
lqxxxxxx.cgi ユーティリティCGI ASCII転送 705 (700)
lqxxxxxx.html ヘルプファイル ASCII転送 604 (604)
lqxxxxxx.cfg 設定ファイル ASCII転送 606 (600)
lqxxxxxx.dat アクセス制限データファイル ASCII転送 606 (600)
lqxxxxxx.log アクセスログファイル ASCII転送 606 (600)
lqxxxxxx.tmp 一時ファイル ASCII転送 606 (600)
lqxxxxxx.lck ロック用ファイル ASCII転送 606 (600)
 forbidden.htmlは、アクセス制限時のファイルの設定で「200 OK」のステータスコードを返す場合に設定するHTMLファイルの例です。 このファイルも、ファイル名(拡張子も.html である必要はありません)やメッセージ内容、埋め込んだメールアドレスなどを適当に書き変えて自由に利用して頂いて結構です。 (ASCII転送、604 (600))

 なお、ヘルプファイル( lqxxxxxx.html )をCGIと同じディレクトリに置くことができないサーバーの場合には、ユーティリティCGI( lqxxxxxx.cgi )の20行目あたりの
# ヘルプファイル(lqxxxxxx.html)のパス
  $HelpPath = './';
の変数 $HelpPath に適当なパスを設定してみて下さい。 このヘルプファイルは、通常のHTMLファイルとしてアクセスされるので、http:// で始まるURLを指定することができます。

 CGIを設置する場合に共通する注意事項ですが、特にLQアクセス制限ライブラリの場合には、lqxxxxxx.pl などのファイル名が他人に知られないようにしなければなりません。このため、あなたのホームページのWebサーバーがディレクトリのファイル一覧を表示するように設定されている場合には、必ずLQアクセス制限ライブラリを設置するディレクトリにデフォルトファイルを置いておいて下さい。
 例えば、http://www2s.biglobe.ne.jp/~cru/library/lq/lqxxxxxx.pl に設置する場合、ブラウザで http://www2s.biglobe.ne.jp/~cru/library/lq/ にアクセスすると、lqxxxxxx.pl のファイル名が見える場合には、デフォルトファイルを置く必要があります。 デフォルトファイルのファイル名は、index.html (内容は何でもよい)であることが多いのですが、Webサーバーの設定によっては異なる場合もあるので、この場合には、設置サイトの解説などを参照するか、サーバーの管理人に問い合わせて下さい。

ユーティリティCGIの設定

 各ファイルの設置が完了すれば、ブラウザ(インターネットエクスプローラやネットスケープナビゲータなど)でユーティリティCGI( lqxxxxxx.cgi )にアクセスしてみて下さい。
 ユーティリティCGIは、最初の起動時に設置ファイルの簡単な検査を行います。 この検査で致命的な問題が発生した場合には、処理がそこで中断されるので、 まずその修正を行って下さい。
 なお、ここでのパーミッションの検査は、UNIX環境を想定しているので、 それ以外の環境では無視して下さい。
 また、ヘルプファイル( lqxxxxxx.html )は、存在しなくても、 LQアクセス制限ライブラリの動作には全く影響ありません。

 検査で致命的な問題がなければ、ページの下の方にパスワードの入力欄が現れます。 ここで任意のパスワードを入力して設定ボタンをクリックすれば、パスワードが設定されます。
ここでパスワードの設定操作をしても、改めてアクセスすると、 パスワードの設定入力欄が現れる場合には、 「MD5のみの環境の場合の修正」を参照して、 スクリプトの修正をして下さい。

 これで、ユーティリティCGIの設定は完了です。
 ただし、CGIファイルへの組み込みがまだの場合には、アクセスログが記録されないので、アクセスログページにはアクセスログは表示されません。

MD5のみの環境の場合の修正

 暗号化にDESが使えずMD5のみしか使えない環境では、そのままでは、 ユーティリティCGIでパスワードの設定ができません。
 このため、lqxxxxxx.pllqxxxxxx.cgi の2つのファイルを以下のように修正して下さい。


CGIファイルへの組み込み

 LQアクセス制限ライブラリのCGIへの組み込みは簡単です。
 perlスクリプトの第2行目に以下の1行を挿入します。
require 'lqxxxxxx.pl';
ただし、このLQアクセス制限ライブラリのファイル名の xxxxxx の部分は、指定のものに変えて下さい。

 例えば、使用例で利用した「プチ☆ボード」の場合、petit.cgi の perlスクリプトの冒頭部分は、下のようになっています。
#!/usr/local/bin/perl

## Petit Board v4.5 (00/04/02) 
## Copyright(C) KENT-WEB 1997-2000
## webmaster@kent-web.com
## http://www.kent-web.com/
LQアクセス制限ライブラリのダウンロードで示した例の場合であれば、これを、下のように変更します。
#!/usr/local/bin/perl
require 'lqijfbzk.pl';

## Petit Board v4.5 (00/04/02) 
## Copyright(C) KENT-WEB 1997-2000
## webmaster@kent-web.com
## http://www.kent-web.com/

 この組み込みが完了して、CGIにアクセスし、ユーティリティCGI( lqxxxxxx.cgi )のアクセスログページにそのアクセスログが表示されれば、設置は完了です。
 なお、ユーザーIDを利用する場合には、この組み込み後に、ユーティリティCGI( lqxxxxxx.cgi )の設定変更ページで「ユーザーIDを送るクッキーの名前の設定」を行う必要があります。
 このユーティリティCGIでは、各所に[HELP]というリンクが設けてあって、ここをクリックすることにより「HELP」という名前のウィンドウにヘルプファイル( lqxxxxxx.html )の該当個所を表示するので、具体的な使用方法は、そちらを参照して下さい。