プロキシサーバ経由のアクセスをhtaccessで制限しようと考えています。

すべて制限するのは不可能だと思いますが、皆さんはどんな方法でやられていますか?
わかりやすくコードも記載してくれると嬉しいです。よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/02/05 17:45:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:snufkin No.1

回答回数48ベストアンサー獲得回数1

ポイント35pt

掲示板なり、アプリの方でproxy制限対応のものを利用できないということですね。

自分は昔、.htaccessにいたずらと思われる投稿で投稿元IP、proxyサイトをマメにリストを追記して行きました。イタチゴッコで馬鹿らしくもなりますが、そう長くは続かないものです(単に経験則)。

そんな暇はない、というのでしょうからmod_access_rblなんてものもあります。Apacheの設定変更ですが、これではだめでしょうかね。只パフォーマンス的にどうかなというのはありました(もっとも攻撃食らうよりはマシですが)。

PEAK XOOPS - mod_access_rbl

id:tontonpokopoko

回答をありがとうございます。プロキシはわずか数時間もしたら新しいものが何個も作られると聞いて、

小まめにチェックするのはしり込みしています。mod_access_rblは先ほど調べていたら記事もありましたが、なにぶん接したこともないものなので難しそうです。

2008/01/29 19:51:43
id:KUROX No.2

回答回数3542ベストアンサー獲得回数140

ポイント35pt

http://www.forest.impress.co.jp/article/2004/09/07/guardproxy.ht...

たぶん今も使えると思いますが、

こういうソフトを使って.htaccessを自動生成したら

どうですかね。

id:tontonpokopoko

回答をありがとうございます。

ガードプロクシはDLしてみたのですが、正常な動作が試せませんでした。

ページにある更新プロキシも見られず、サポート掲示板も閉鎖しているので、

原因が自分にあるかソフトにあるかもわからないので断念しました。

2008/01/30 05:04:51
  • id:koujirou6218
    以前、アクセスしたユーザのIPを取得してそのIPのポート80と8080などのプロクシサーバで利用されると思われるポートをスキャンしてプロクシを判別していましたが、スキャンに時間がかかるため表示されるまでに時間がかかる点、学校や職場からなどのアクセスも拒否していまう点、近年ポート80番が開いているユーザが増えた点などから中止しました。
    少し、場違いな回答になってしまい申し訳ございません。
  • id:tontonpokopoko
    回答をありがとうございます。
    私も先ほどこちらhttp://dream.lib.net/room/cgi/e_acsdeny.htmlで配布されているCGIを設置してみたのですが、ポートスキャンは異様に重かったです。そこで全て弾けなくてもいいから、htaccessでありきたりな公開プロキシだけでもと思っている次第です。
  • id:tezcello
    「出来る事なら排除したいアクセス」は、
    ・よく知られているプロキシサーバ経由
    ・プロキシと簡単に分かるアクセス
    では無いような気がしますが、如何でしょうか?

    特定のアドレスなり、ドメインなりを拒否するなら
    http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html

    アクセスする際に伝えられる値(HTTP リクエストヘッダフィールド)を利用するなら
    http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html
    と組み合わせて使う事ができるようですが、明らかにプロキシと分かるようなアクセス(HTTP_VIA, HTTP_X_FORWARDED_FOR などが存在する)はどちらかというと問題無いアクセスのような気がします。

  • id:tontonpokopoko
    tezcelloさん、以前の携帯の振り分けでは大変お世話になりました。
    アクセスする際に伝えられる値を利用したいとは考えていますが、
    http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html
    ↑はちょっとよく理解が出来ない状態です。

    一般的なコードを書き込まれるかなと思っていたのですが、
    皆さん苦労や工夫をされている方が多く簡単ではないのですね・・
  • id:KUROX
    Proxy Lists
    http://www.cybersyndrome.net/
    このあたりに上がってくるプロキシーリストを拒否するようにすれば
    どうでしょうか?
  • id:tontonpokopoko
    コメントをありがとうございます。
    まさしくそちらのサイトを参考に現在制限を試みています。
    ただJPとNET以外(COMもかな・・)を拒否して、それらのプロキシだけ制限するのが簡単かなと思い始めています。
  • id:tezcello
    マニュアルによると
    >>
    Example:

    SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
    <Directory /docroot>
    Order Deny,Allow
    Deny from all
    Allow from env=let_me_in
    </Directory>

    この場合、user-agent の文字列が KnockKnock/2.0 で始まるブラウザのみがアクセスを許可され、 他のものはアクセスを拒否されます。
    <<
    という事なので、

    SetEnvIf Via .+ proxy
    SetEnvIf Remote_Addr 000\.000\.000\.000 proxy

    Order Allow,Deny
    Allow from all
    Deny from env=proxy

    と書いた .htaccess を置いておくと、そのディレクトリは
    Via というヘッダに何か値がセットされている
    アクセス元(クライアント)のIPアドレスが 000.000.000.000 である
    の場合にはアクセスできないという事になると思います。
    (テストできていませんので、確信が持てませんが...)
  • id:tontonpokopoko
    コメントをありがとうございます。
    なるほど、この場合ですとSetEnvIf Remoteの個所に、
    IPアドレスを数行に渡りかたっぱしに並べていくという意味でしょうか?
    ”env”で数値を引き込むメリットはどんなことがあるんでしょうかね・・
    いずれにせよ更新手作業は必要なんでしょうけど・・
  • id:tezcello
    > ”env”で数値を引き込むメリットはどんなことがあるんでしょうかね・・
    SetEnvIf では、正規表現が使えるのがメリットだと思います。
    IPアドレスを書き並べるだけなら、Deny from の行をたくさん書くだけなので、メリットは無いですね。

    アドレスやホスト名は、以下のような例も載っていましたね。(Allow の例ですが)
    Allow from .net example.edu
    Allow from 192.168.1.104 192.168.1.205
    Allow from 10 172.20 192.168.2
    Allow from 10.1.0.0/255.255.0.0
    Allow from 10.1.0.0/16

    全然関係ないですが、deny は、「デナイ」と読むんだそうです。つい最近知りました。
    (ず~っと、「デニー」だと思ってました...)
  • id:tontonpokopoko
    >SetEnvIf では、正規表現が使えるのがメリットだと思います。
    そうですね、IPを考えずにそれらだけで規制できるのが1番簡単なので、
    このトピで聞いてみましたがどうなんですかね・・(proxyと送られるのは少ないようで)

    あと便乗で質問があるのですが、
    ”jp””net”だけのアクセスを許可して、
    その1部を拒否するときは以下の感じでいいのでしょうか?

    <Files ~ "^.(htaccess|htpasswd)$">
    deny from all
    </Files>
    order deny,allow
    allow from .jp
    allow from .net
    deny from all
    deny from a.jp

    こちらで公開しているページで上記のように作ったんですが、
    http://www.htaccesseditor.com/
    これだとjp、net以外は拒否できるのですが、
    肝心の”a.jp”が拒否できないんです。
    jpを許可して、その1部を拒否する方法はどう書けばいいのでしょう?

    *私もデニーと読んでいました^^
  • id:tezcello
    a.jp よりも jp の方が広範囲なので、こちらでOKしているせいではないですか?

    ついでに気になった所を...
    .htaccess, .htpasswd についてだけアクセスを拒否していますよね。
    Web上では、こんな設定を追加するなんてページが腐るほどあると思いますが、
    うちのサーバの httpd.conf は、デフォルトでこんな設定がしてありました。

    <Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    </Files>

    ディストリが追加した設定なのか、オリジナル(apache.org)側で追加したのかは不明ですが。
    これに便乗して、自分で勝手に作るファイルで、Web経由で見られたくないもの(預っている個人情報とか...)にも
    .hthogefua .hthatena とかの名前をつけてます。
  • id:tontonpokopoko
    tezcelloさん、コメントをありがとうございます。
    URLは私も何故(.htaccess, .htpasswd)だけかなと思いましたが、
    それでも初心者向けでありがたく参考になります。

    初期設定でtezcelloさんのようなサーバですと、専用サーバなのでしょうか・・
    ディストリがわかりませんが、保守的な空間を作るのもありなのかなぁ・・
    全くレベルが追いつきませんが、ユーザに特定な空間をあたえるのも今後は楽しいような気がしています。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません