接続元のIPアドレスでアクセス制限をかけても、プロキシを使って突破しようとするスパマーたち。この困った人たちへの対策法。
規制したい対象
主に中国、香港、台湾、韓国からやってくるウィルスばらまき型スパマー。
- 接続元のIPアドレスが中国、香港、台湾、韓国のもの。
- プロキシ経由でアクセスしていて、要求元のIPアドレスが中国、香港、台湾、韓国のもの。
- 匿名プロキシ経由のもの。
特に勘弁して欲しいのが、接続元のドメインが「fj.cn.cndata.com
」のもの。2006/8/7現在、このドメインに属するIPアドレスとしてわかっているものは、次のアドレス帯。
- 59.56.0.0 – 59.61.255.255
- 218.6.0.0 – 218.6.127.255
- 220.160.0.0 – 220.162.255.255
- 222.76.0.0 – 222.79.255.255
対策法
- アクセス元IPを.htaccessで規制
-
アクセス元IPアドレスを.htaccessに記述して規制する。具体的な設定方法は「中国・韓国からのアクセス制限」の記事に書いたので、ここでは割愛。
- プロキシ経由のものを.htacessで規制
-
プロキシ経由でアクセスしてきたものを、環境変数HTTP_FORWARDED、HTTP_X_FORWARDED_FORに入っている要求元IPアドレスでチェックして拒否。ただし、拒否したい国のすべてのIPアドレス用の正規表現を記述するのは現実的には無理があるので(自動化するツールがないため)、特に拒否したいプロバイダのアドレス帯のみを記述する。
SetEnvIf X-Forwarded-For "59\.(5[6-9]|6[0-1])\.[0-9]+\." cn_spam SetEnvIf X-Forwarded-For "218\.6\.([0-9]|[0-9]{2}|1[0-1][0-9]|12[0-7])\." cn_spam SetEnvIf X-Forwarded-For "220\.16[0-2]\.[0-9]+\." cn_spam SetEnvIf X-Forwarded-For "222\.7[6-9]\.[0-9]+\." cn_spam SetEnvIf Forwarded "59\.(5[6-9]|6[0-1])\.[0-9]+\." cn_spam SetEnvIf Forwarded "218\.6\.([0-9]|[0-9]{2}|1[0-1][0-9]|12[0-7])\." cn_spam SetEnvIf Forwarded "220\.16[0-2]\.[0-9]+\." cn_spam SetEnvIf Forwarded "222\.7[6-9]\.[0-9]+\." cn_spam order allow,deny allow from all deny from env=cn_spam
- 公開プロキシを.htaccessで規制
-
GUARD PROXYというフリーウェアがあったが、現在は動作しない。定期的に公開プロキシのリストを取得して.htaccessを作成し、WebサーバにFTP転送してくれるという必要十分な機能を持っていた。プロキシのリストをソフトウェア作者のページからダウンロードして.htaccessを作成するけれども、現在ではこのリストが更新されていないために動作しない。
これに相当する別のプログラムを探してみたものの、いまだ見つからず。自作するしかないのかも。
参考リンク
- スパムはあっち行け!(スパムフィルターCGI配布)
- 悪戯防止ライブラリ zddbbs.pl … かなり古い上、利用するには自力でPerl CGIを書ける程度の知識が必要
- Security【プロクシとは】
- ENVIRONMENT
- 掲示板改造支援サイト(KENT-webのCGIにスパム対策を施した改造版を配布)
- 掲示板を超簡単にガードせよ