戻る
LQアクセス制限ライブラリ
旧「プロキシ制限ライブラリ」
目次
履歴
- Ver.1.00 2000/12/10 新装開店
- Ver.1.01 2000/12/13 プロキシ判定追加(IE5.5対策も追加)
- Ver.1.10 2000/12/17 ユーザーID(クッキー)によるPOST制限の追加
- Ver.1.11 2000/12/19 ユーザーID が偽造可能なバグ修正
- Ver.1.12 2000/12/20 flockを使わない場合のコード修正
- Ver.1.13 2000/12/21 設定変更ページのちょっとしたバグ修正
- Ver.1.14 2000/12/23 CGIヘッダの勘違いを修正、クッキー送信を内部処理に変更
- Ver.1.15 2001/01/10 クッキーの出力をフラッシュする設定を追加
- Ver.1.16 2001/01/11 クッキーの出力をフラッシュする設定の正式対応
- Ver.1.17 2001/05/10 cryptがMD5しか使えない場合に一応対応のつもり
- Ver.1.18 2001/05/27 ログファイルが壊れる問題の暫定対策
- Ver.1.19 2001/06/03 flockに$ConfigFileを借用して、ログファイルの処理を単純化する
- Ver.1.20 2001/06/17 flockに$ConfigFileを借用するのを止めて専用ファイルを使用する
- Ver.1.21 2002/09/21 新規登録ページでユーザーIDが登録できないバグを修正
任意の perl スクリプトのCGIに組み込むことにより、このCGIへの特定の相手からのアクセスを制限します。
lq.pl の初版(Ver.0.92)は、1998年6月のリリースなので、バグ取りを除いて約2年半ぶりのバージョンアップとなります。
初版は、プロキシサーバーを利用した当面の荒らし行為を防止したい、ということでとりあえず作成したものであるため、多くの問題を残しながら、そのまま放置していました(苦笑)
今回の新版は、これらの問題を解消すると共に、プロキシサーバー経由の場合に限らず、ホスト名なども含む種々のアクセス制限を行えるようにし、設置方法やWeb上での操作性も改善しました。
また、これに伴い、名称も「プロキシ制限ライブラリ」から「LQアクセス制限ライブラリ」に変更しました。
このライブラリが提供するアクセス制限の概要を以下に説明します。
(ユーティリティCGIに付属の
ヘルプファイルも参照してみて下さい。)
なお、これらのアクセス制限は、いずれもWeb上の操作により、簡単に登録/削除、設定/解除を行うことができます。
IPアドレスやホスト名に基づくアクセス制限
- 禁止ホスト名
主に、プロバイダからのアクセスを、特定の地域のアクセスポイントに限定してアクセス禁止するために用います。
- 禁止IPアドレス
主に、下記の「プロキシサーバー制限」や「ドメインの国制限」では制限し切れないプロキシサーバー経由のアクセスを禁止するために用います。
- 禁止範囲内のIPアドレス
特定のドメインの連続するIPアドレスをまとめてアクセス禁止にします。
- 禁止ホスト名(正規表現)
禁止ホスト名の正規表現版です。
- 許可IPアドレス
主に、下記の「プロキシサーバー制限」によりアクセスを禁止された会社や学校などのプロキシサーバー経由のアクセスを許可するために用います。
ユーザーIDに基づいたアクセス制限
ユーザーIDは、クッキーによってアクセスの相手(のブラウザ)に設定します。
- 許可ユーザーID
本来他のアクセス制限に引っ掛かるおそれのある無関係の人のアクセスを許可するために用います。
- 禁止ユーザーID
クッキーによって設定したユーザーIDを用いて、特定の相手のアクセスを禁止します。
これだけで排除できればラッキー!なんですが…
- ユーザーIDによるPOST制限
クッキーを受け付けない相手のPOST METHODによるアクセスを一律に禁止します。
禁止ユーザーIDと併用することにより、確実に特定の相手のアクセスを禁止します。
プロキシサーバー関連のアクセス制限
その他のアクセス制限
このライブラリを組み込む perl のCGIとして、KENTさんの「プチ☆ボード」を利用させて頂きました。
(KENT WEB さんの PETIT v4.5 を使用しました。)
この
LQアクセス制限ライブラリの全ての perlスクリプトやドキュメント、サンプルデータなどは、
PDS(Public Domain Software)として扱って下さい。
即ち、作者に無断で、以下の行為を無償で自由に行うことができます。
- LQアクセス制限ライブラリをCGIに組み込んで使用する行為
- LQアクセス制限ライブラリを修正または改造する行為、
および、この修正/改造版を使用する行為
- LQアクセス制限ライブラリのオリジナル版や修正/改造版の全部または一部を配布する行為
(記録媒体に保存して配布するほか、インターネット上などで配布する場合も含む)
上記行為は、営利目的によるものの場合にも制限されません。
サブルーチンなどのスクリプトの一部についても同様に扱って下さい。
オリジナル版を再配布する場合や修正/改造版を配布する際に、オリジナル版の作者や出所URLを表示されることは歓迎します。
ただし、単にこのLQアクセス制限ライブラリをCGIに組み込んで使用するだけの場合には、その性格上秘密にしておいた方がよいことが多いので、少なくともこれを組み込んだCGIの出力には、作者表示や出所URLの表示などは行わないで下さい。
作者は、LQアクセス制限ライブラリを使用した結果について、perlスクリプトの実行結果を含め、一切の責任を負いません。
作者に連絡する必要がある場合には、
mmにお願いします。
ただし、通常のCGIの設置は経験のある方の利用を対象にしているので、基本的なCGIの設置方法などに関する質問には応じかねます。
また、作者が多忙な場合や、内容的に対応不要と判断したメールには返信致しませんので、この点も予めご了承下さい。
LQアクセス制限ライブラリは、ファイル名が固定されていると、CGIに組み込んだことが他人にバレたり、また、設置環境によっては、他人にアクセスログファイルを覗かれたりするおそれがあります。
そこで、この
LQアクセス制限ライブラリは、ダウンロードする人ごとに異なるファイル名で使用して頂くようにしています。
このファイル名は、各ファイルとも拡張子(ファイル名のピリオド以降)を除くボディ部を共通にします。
実際のボディ部は、
lqxxxxxx の
xxxxxx の部分を他の英小文字の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(
lqxxxxxx.cgi )にアクセスしてみて下さい。
ユーティリティCGIは、最初の起動時に設置ファイルの簡単な検査を行います。
この検査で致命的な問題が発生した場合には、処理がそこで中断されるので、
まずその修正を行って下さい。
なお、ここでのパーミッションの検査は、UNIX環境を想定しているので、
それ以外の環境では無視して下さい。
また、ヘルプファイル(
lqxxxxxx.html )は、存在しなくても、
LQアクセス制限ライブラリの動作には全く影響ありません。
検査で致命的な問題がなければ、ページの下の方にパスワードの入力欄が現れます。
ここで任意のパスワードを入力して設定ボタンをクリックすれば、パスワードが設定されます。
ここでパスワードの設定操作をしても、改めてアクセスすると、
パスワードの設定入力欄が現れる場合には、
「MD5のみの環境の場合の修正」を参照して、
スクリプトの修正をして下さい。
これで、ユーティリティCGIの設定は完了です。
ただし、CGIファイルへの組み込みがまだの場合には、アクセスログが記録されないので、
アクセスログページにはアクセスログは表示されません。
暗号化にDESが使えずMD5のみしか使えない環境では、そのままでは、
ユーティリティCGIでパスワードの設定ができません。
このため、
lqxxxxxx.pl と
lqxxxxxx.cgi の2つのファイルを以下のように修正して下さい。
- lqxxxxxx.pl のファイル中の24行目あたりの以下の行の
(ここで、'$1$DL$' とあるのは一例です)
#$UserIDSalt = '$1$DL$'; # MD5しか使えない場合に、行頭の # を1文字削除して下さい
行頭の # を削除して以下のようにして下さい。
(行頭が $ の文字で始まるようにして下さい)
$UserIDSalt = '$1$DL$'; # MD5しか使えない場合に、行頭の # を1文字削除して下さい
- lqxxxxxx.cgi のファイル中の30行目あたりの以下の行の
# $Salt = '$1$lq$'; # MD5しか使えない場合に、行頭の # を1文字削除して下さい。
行頭の # を削除して以下のようにして下さい。
$Salt = '$1$lq$'; # MD5しか使えない場合に、行頭の # を1文字削除して下さい。
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 )の該当個所を表示するので、具体的な使用方法は、そちらを参照して下さい。
http://www2s.biglobe.ne.jp/~cru/ 以下の各ページは、無断で自由にリンクして頂いて結構です。
access