• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.htaccessが効かない??)

.htaccessが効かない??

このQ&Aのポイント
  • メール収集ソフトや、短い時間に何度もアクセスする迷惑なIPを、CGIを用いて自動で.htaccessに制限を行っているのですが、効果がないようです。
  • .htaccessは信頼していましたが、特定のIPからのアクセスが頻繁にあり困っています。
  • どのようにすれば効果的にアクセス制限を行うことができるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>.htaccessは604 で書き換え可能と言うことはSUEXECですね まずパーミッションから行くと .cgi = 700 .cgiで読み込んで表示するfile= 600 ブラウザで直接アクセスされるfile= 604 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2119462 >単にメールアドレス収集ソフトあたりが訪れている >$ENV{'REMOTE_ADDR'};で取得した 表示をCGIで行っているのでしたら.htaccessに頼らずどこかにfileを作って拒否したいアドレスをリストアップするようにしてcgiの中でそれを読み込んで$ENV{'REMOTE_ADDR'}と一致したらエラー処理すればいいのでは? それとか他の環境変数例えば$ENV{'HTTP_USER_AGENT'}辺りで振り分けるとか? 一時的にHTTPとREMOTEで始まる全ての環境変数をログに残して 次からCGIで拒否するか .htaccessのSetEnvIfで制限するなど http://oshiete1.goo.ne.jp/kotaeru.php3?q=2056373 http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html#setenvif まあ、#1にも書いたけど頭にHTTPの付く環境変数は簡単に偽装可能なのでロボットがMSIE等を装えば意味無しですが

ayu_mi_nic
質問者

お礼

あ!なるほど、その手がありましたね! いつも、htaccessばかり使っていたため、思いつきませんでした。 ありがとうございます!!

その他の回答 (1)

回答No.1

まず、アクセスしたクライアントのIPアドレスはどうやって取得していますか? Apacheのアクセスログでしょうか? CGI中で記録しているのでしょうか? 1.・Apacheのログで記録されたIPアドレスとDeny fromで指定したアドレスが一致していて、他のアドレスでは403になるのに効かないと言う場合は、私の想像の範囲内では Apacheのログを改ざんされた。または .htaccessを改ざんしてアクセス、その後.htaccessを元に戻す。 位しか思い浮かびません  (CGIによって.htaccessを書き換えているとの事ですが  SUEXEC + .htaccessのパーミッションが604ならまだしも  .htaccessを606や707にするのは危険です  他のユーザーのCGIからも書き換え可能だからです  少なくとも私なら絶対やりません ) 2.・CGIによってアドレスを記録している場合は IPアドレスを偽装したり、欺く手段はもっと多いです 例えば同一サーバー内にセキュリティの甘いCGIがあれば、それを踏み台にしてあなたのCGIにアクセスするとか、あなたのCGIを介さずにログに直接書き込むとか? 或いは典型的に駄目なCGIの例として'HTTP_X_FORWARDED_FOR'が存在する場合は'REMOTE_ADDR'の代わりにそちらを記録してしまうCGIとか?   その場合はDeny fromで指定したアドレスと一致するはずも有りませんし  そもそも頭にHTTPの付く環境変数の偽装などCGIやサーバーの初心者でも行える程度の物で  上に挙げたような同一サーバー内の踏み台もアカウントも必要有りません

ayu_mi_nic
質問者

お礼

回答いただきありがとうございます。 .htaccessは604にしています。 また、IPアドレスの取得についてですが、こちらは、$ENV{'REMOTE_ADDR'}; で取得したものを使っています。 ホームページに関してですが、作って間もないため、嫌がらせというよりは単にメールアドレス収集ソフトあたりが訪れているような気がします。 CGIで本当のIPを取得することはできないものでしょうか? もし、ご存知でしたら、教えてください。 宜しくお願い致します。