totaltodayyesterday

フリーなCGIと自宅サーバー情報サイト

htaccessで国内ホストのみアクセス可能にするスクリプト

.htaccessで国内からのPOSTのみを許可する設定で紹介したスクリプト(getApnicCidr2HTA.pl)は、cronやwget等が必要な環境(サーバー管理者)向けのものでしたが、これを一般ユーザー向けにブラウザ上から手動で実行して、国内ホストの一覧を更新できるように改良しました。

以下の解説はCGI(Perl)版ですが、PHP版もあります。設置方法はCGI版とほとんど同じですが、PHP版の詳細については添付されているreadme.txtをご覧下さい。

■目的
.htaccessによるアクセス制限で国内ホストからのみのアクセスを可能にする為、Apnicから国内ホストの一覧を取得し.htaccessを自動で更新する為のスクリプトです。

■用途
» サイトへのアクセス制限
» 掲示板等へのPOST制限

■動作環境
» Perlが使用できること
» htaccessが使用できること
» FilesMatch、Limitディレクティブが使用できること(使用する場合のみ)
» このスクリプトが制限対象のディレクトリに対して書き込み権限があること

■ダウンロード
» getApnicCidr2HTA(CGI版)
» getApnicCidr2HTA(PHP版)

■添付されているもの
1.スクリプト本体
» getApnicCidr2HTA.cgi
2.HTTP:Liteモジュール
» Lite.pm
» 最新版→http://search.cpan.org/search?dist=HTTP::Lite
3.htaccessサンプル
» htaccess-Normal.txt
» htaccess-LimitPost.txt
» htaccess-FilesMatch+LimitPost.txt
» htaccess-FilesMatch2+LimitPost.txt
4.マニュアル
» readme.txt

■導入方法
【1】.htaccessの設置
▼添付されているhtaccess-***.txtファイルから目的に合ったものをエディタで編集して下さい

[ htaccess-Normal.txt ]
» 国内ホストからのアクセスのみを許可

[ htaccess-LimitPost.txt ]
» すべてのスクリプトに対して国内ホストからのPOSTのみを許可

[ htaccess-FilesMatch+LimitPost.txt ]
» 特定のスクリプト(単体)に対して国内ホストからのPOSTのみを許可

*<FilesMatch “hoge\.cgi$”>~</FilesMatch>
*hoge\.cgiの部分を制限対象のスクリプトファイル名に変更して下さい

[ htaccess-FilesMatch2+LimitPost.txt ]
» 特定のスクリプト(複数)に対して国内ホストからのPOSTのみを許可

*<FilesMatch “(hoge|hoge2|hoge3)\.cgi$”>~</FilesMatch>
*hoge、hoge2、hoge3の部分を制限対象のスクリプトファイル名に変更して下さい

▼オリジナルの.htaccessファイルを使用する場合は下記を必ず入れて下さい

Order Deny,Allow Deny from all #ALLOW_CIDR_LIST_____# Allow from all #_____ALLOW_CIDR_LIST#

▼<FilesMatch “getApnicCidr2HTA\.cgi”>~</FilesMatch>
このスクリプトにアクセス制限(Basic認証)を掛けます

*この制限を使用する場合は別途.htpasswdを設置する必要があります
*また”AuthUserFile /home/hoge/.htpasswd”を環境に合わせて修正する必要があります
*この制限が不要な場合は<FilesMatch “getApnicCidr2HTA\.cgi”>~</FilesMatch>を削除するか、各行頭に”#”を入れて下さい

【2】getApnicCidr2HTA.cgiの編集。
▼getApnicCidr2HTA.cgiをエディタで開いて下記を環境に合わせて編集して下さい

1 :#!/usr/bin/perl -w 23:my @HTACCESS_LIST = ('./.htaccess');

[1行目] #!/usr/bin/perl -w
» Perlのパス

[23行目]my @HTACCESS_LIST = (‘./.htaccess’);
» 対象の.htaccessファイルのパス

*複数の.htaccessファイルを指定する場合の例
my @HTACCESS_LIST = (‘./hoge/.htaccess’,’./hoge2/.htaccess’,’./hoge3/.htaccess’);

*.htaccessファイルのパスを相対パスで指定する場合はgetApnicCidr2HTA.cgiが設置されている場所からの相対位置であることに注意して下さい

【3】サーバーへ設置
*htaccess-***.txtはアップロード後に.htaccessへリネームして下さい

▼.htaccessをgetApnicCidr2HTA.cgiと同じディレクトリに設置する場合

/dir/[755] |---getApnicCidr2HTA.cgi[755] |---Lite.pm[644] |---.htaccess[644] |---.htpasswd[644] (<FilesMatch "getApnicCidr2HTA¥.cgi">~</FilesMatch>を指定した場合)

▼.htaccessを複数「@HTACCESS_LIST = (‘./hoge/.htaccess’,’./hoge2/.htaccess’,’./hoge3/.htaccess’);」指定した場合

/dir/[755] |---getApnicCidr2HTA.cgi[755] |---Lite.pm[644] |---.htaccess[644] | (※<FilesMatch "getApnicCidr2HTA¥.cgi">~</FilesMatch>を指定した場合) |---.htpasswd[644] | (※<FilesMatch "getApnicCidr2HTA¥.cgi">~</FilesMatch>を指定した場合) |---/hoge/[755] | |---.htaccess[644] |---/hoge2/[755] | |---.htaccess[644] |---/hoge3/[755] |---.htaccess[644]

*[]はパーミッション
*ここに記載されたパーミッションは一般的な汎用例です(実際にはサーバー管理者が推奨するパーミッションを設定して下さい)

【4】ブラウザでgetApnicCidr2HTA.cgiへアクセスして”UPDATE”を実行
▼.htaccessをDLして#ALLOW_CIDR_LIST_____#~#_____ALLOW_CIDR_LIST#間にホスト一覧が書き込まれていれば成功です

コメントを残す

logo
RSS はてなブックマーク Twitter Facebook Google+
now loading...