ラッキーカウンター DX4.0
概要|インストール|各種設定方法|管理者CGI|表示デザインの変更・作成|セキュリティ|FAQ
注意してください
-
ログや生の投稿データ(表示されないIPなどの情報を持っている場合)などを、第三者に見せないようにすることはCGI設置者の義務です。 巷で配布されているCGIを説明どおりに設置した場合、データや設定ファイルの位置が簡単に
わかってしまうので、簡単にデータを閲覧されてしまう可能性が大きいです。 書き込んでくれた人に迷惑がかかってしまう場合もないとは言えませんので、自らの責任においてデータは保護しなければなりません。
-
共有サーバーで稼動している場合(ほとんどの方がそうだと思いますが)、ブラウザからのアクセスだけでなく、他共有ユーザーのCGIやサーバー内からのアクセスや改ざんにも注意しなくてはなりません。
-
Webサーバーの設定によって対策が異なってきますので、自分のところのサーバー設定について、CGIが誰の権限で動作しているか、.htaccess
によるファイルアクセスの制限はできるか、程度のことは最低でも確認しておく必要があります。
TOP
自分でまずテストしてみる
-
設置が完了したら一般に公開する前に、ブラウザからすべてのデータ、設定ファイルを呼び出して、表示またはダウンロードできるかどうか確認します。ラッキーカウンターの場合は以下のような感じです。
- (http://あなたのドメイン/)cgi-bin/luckydx/base.cfg
- (http://あなたのドメイン/)cgi-bin/data0/lucky.cfg
- (http://あなたのドメイン/)cgi-bin/log/luckylog.txt
- (http://あなたのドメイン/)cgi-bin/meidata/data/内の名簿書き込みの際できるファイル ※1
- (http://あなたのドメイン/)cgi-bin/meiadmin/data/admin.dat
- 404(見つかりません)が出た場合は、URLが間違っている可能性があります。正しいURLに直して再度行ってみてください。 ※2
- アクセス制限がかかっていると
403(アクセスできない)、スクリプトエイリアスだと、500(サーバーエラー)が返ってきます。 これらの場合は、とりあえずブラウザからのアクセスに関しては大丈夫ということです。
- 他共有ユーザーからのアクセスを検証する方法については攻撃方法を教えることにもなるのであえて書きませんが、共有サーバーでなおかつCGIがユーザー権限で動作していない場合は、下の対策方法に書かれている事を参考にして、対策を行ってください。
完全とはいえないですが、ある程度は効果があるでしょう。
※1. まず、名簿に書き込みした後、FTPなどでファイル名を確認してください。数字のみのファイル名となっています。
※2. すべてのエラーを404で返してくる(ように見せる)設定のサーバーもあります。
TOP
対策方法
いろいろありますが、代表的な例をあげて見ます。
<ブラウザアクセスに対して>
- WWWディレクトリ以下からホームディレクトリ直下にデータを移動する。
- SuEXEC等、ユーザー権限でCGIが動いている場合は、データ・設定ファイルのパーミッションを、600に設定する。
- .htaccess が使える場合は、以下のような .htaccess ファイルで制限する。
(サーバーによってはうまく動作しない場合あり。サンプルファイルは配布ファイル中の /util ディレクトリにあります)
- 例).htaccess を置いたディレクトリ以降では、拡張子 .cgi 以外のファイルにブラウザからアクセスできないようにする。
.cgi 以外のファイルは 403エラーが帰ってきます。(luckcd.pl もエラーとなりますが、SSIでの実行なので問題ありません)
# .htaccess の内容
deny from all
<Files ~ "\.cgi$">
allow from all
</Files>
- cgi-bin ディレクトリをスクリプトエイリアスにする。(管理者権限が必要)
- データディレクトリや設定ファイル名等を容易に推測できないように変更する。(下参照)
<共有サーバでの他ユーザーやCGIからのデータ改ざんや読み取りに対して>
- CGIがユーザー権限で動作しないサーバーの場合
- luckydx ディレクトリのパーミッションから第三者読み取り権限を除く(701、ファイル/ディレクトリのリストを取得させない)
- すべてのディレクトリ・ファイルのグループパーミッションを0にする。(705等)
-
さらに設定ファイル名、データディレクトリ名等を容易に推測できないような名前に変更する。(以下の例と同じではいけません。必ず自分で考えた独自の名前にしてください。)
cgi-bin/luckydx/base.cfg => cgi-bin/luckydx/LuckOpY4yy.cfg
cgi-bin/luckydx/data0/ => cgi-bin/luckydx/Do9pData0/
cgi-bin/luckydx/log/ => cgi-bin/luckydx/98pLOgXTT/
cgi-bin/luckydx/admin/ => cgi-bin/luckydx/ADmin9Ts/
等など
- luckcd.pl・meibo.cgi・admin.cgi
の20行目辺りにファイル名を変数に割り当てている箇所があるので、そこを変更したファイル名に直す。
- (ファイル名を変更した)base.cfg の admin_url の項目を修正する。
- admin.cgiへのアクセス制限に組み込みパスワードを使っている場合は、pass_file の項目も修正する。
- admin.cgiで、その他ディレクトリ・ファイル設定等を変更する。
※ ここまでやってもまだ穴はあるのですが・・・(^^;
- CGIがユーザー権限で動作するサーバーの場合
- パーミッションの設定ミスに気をつければ大丈夫だと思います。基本的にグループ・第三者に見せたくないファイルの第三者権限は0にします。
尚、サーバー管理者(root)はどのようなファイルでも読み書きできますので、管理者からも隠したい場合は内容を暗号化するしかありません。
TOP
(C)2003 ELEMENTZ::SOFTWARE