« 富士登山 | メイン | HDD入れ替えとLVMの導入 »
2007年12月01日
apacheでコメント・TBスパム対策
カテゴリー:
[blog]
[プログラミング]
blogの更新をさぼっていても、スパムは休んではくれないようです…
迷惑コメント・トラックバックがMovable Typeのデータベースに大量にたまっていきます。
(フィルタされたものは分類され未公開にはなりますが、DBにいったん入ります)
フィルタされてればいい方で、フィルタを通過して公開されてしまうものもかなり多いわけです。
アクセスのけっこうな割合がスパムなのは確実で、United Statesがアクセス数トップです。
Movable Type の SpamLookup プラグインでDNSBLをつかってフィルタ出来るんですが、もうブラックリスト入っていたら、Movable Typeに渡す前にフィルタしたくなってきました。
そうするとDBに入らないので、万が一誤検出した場合に回復する手段がないわけですが、どうせコメントはほとんどないし、とりあえず問題ないでしょう。
DNSBLを参照して、その結果を元にapacheに403を返させる方法がないかと調べてみたら、やっぱりそういうモジュールを作っている人がいるんですよね。
mod_setenvdnsbl : Apache module (nesitive thinking)|
早速インストールして、設定してみました。
インストールは、Makefileの先頭のAPXSのところを環境に合わせて書き換えて、make && make install するだけです。
設定はこんな感じです。
<Directory ...>
<FilesMatch "mt-(tb|comments)\.cgi">
SetEnvIfDNSBL remote_addr zen.spamhaus.org spammer
SetEnvIfDNSBL remote_addr bsb.spamlookup.net spammer
</FilesMatch>
...
Order allow,deny
Allow from all
Deny from env=spammer
</Directory>
しかし、apacheでMT/WPのスパム対策 DNSBLのmod_setenvifdnsblを使ってみる (blog@browncat.org) でも指摘されているように、複数のDNSBLを指定すると、最初のものしか見に行きません。
apacheのモジュールなんて作ったことありませんが、ソースを読んでみました。
まあ、apacheのAPIを知らないんで、最初はさっぱりだったわけですが、結局わかったのは、SetEnvIfDNSBLの最初の引数が同じだと、複数の設定を内部的にひとまとめにするための処理があるということでした。
mod_setenvdnsbl.cの217-255行目あたりです。
この設定の場合、remote_addr という行が複数あるので、これらをひとまとめにしようとします。
が、内部のデータ構造にはDNSBLは一つの設定ごとに一つだけしか用意されていませんので、最初のDNSBLのドメインしか残らないわけです。
単純にこの処理を省いてやるだけで要求通り動くようになりました。
本来は、1つのDNSBLへのリクエストを1回にするための処理なのかなと予想したのですが、それにしては、データ構造がそれらしくないんですよね。
こんなわけで、最近Javaばかりだったんですが、久しぶりにC言語をさわりました。
これをやって収穫があったとすれば、DNSBLのクエリの仕組みを初めて知ったことですね。
恥ずかしながら、今まで知りませんでした。プロトコルがDNSだから、DNSBLだったとは。
確かにクエリも軽いし、プログラムも書きやすいですね。
あとは、apacheのモジュールの作り方がなんとなく見えたことですかね。
スパム対策?そういえばそれもありました(^^;
結局、ブラックリストだけでは駄目なので、キーワードベースのフィルタにキーワードを追加して、厳しめにしてみました。
DBには入りますが、スパムが公開されてしまうことは防げます。結局これが一番効いたような…
投稿者 shingo : 2007年12月01日 19:31
トラックバック
このエントリーのトラックバックURL:
http://isolinear.info/cgi-bin/mt/mt-tb.cgi/238
コメント
emm. thank you for this post )
投稿者 Girl Butt Dildo : 2009年12月22日 14:19
Thank you! I would now go on this blog every day!
Doggy
投稿者 Doggy : 2010年02月04日 06:31
Hola,
Super post, tienen que marcarlo en Digg
Have a nice day
Miato
投稿者 Miato : 2010年02月26日 19:32
Hola,
Todo dinбmica y muy positiva! :)
BernieR
投稿者 BernieR : 2010年03月09日 09:46
Hola,
ЎGracias por el artнculo. Cada vez que quieres leer.
Doggy
投稿者 Doggy : 2010年03月27日 15:29
Come On
Have a nice day
BernieR
投稿者 BernieR : 2010年04月01日 04:50
Interesante, yo cotizaciуn en mi sitio mбs tarde.
SuperSonic
投稿者 SuperSonic : 2010年04月17日 01:26
isolinear.info - da mejor. Guardar va!
Truden
投稿者 Truden : 2010年04月25日 15:51
Ya he visto algunos hay ...
Have a nice day
Truden
投稿者 Truden : 2010年04月28日 02:27
Greatings, isolinear.info - da mejor. Guardar va!
Gracias
Doggy
投稿者 Doggy : 2010年04月30日 15:00
Interesante, no va a continuar con este artнculo?
Have a nice day
Worker
投稿者 Worker : 2010年05月11日 03:59
ЎGracias! Ahora me irй en este blog cada dнa!
Ivan
投稿者 Ivan : 2010年05月30日 06:05
It is well known that cash can make us independent. But how to act if someone doesn't have money? The one way is to get the home loans or consolidation loan.
投稿者 VirgieDonovan : 2010年06月07日 01:01
The scene where he rolls behind the live newscast is totally hilarious. Wish I lived in the UK so I could have had a chance of seeing that news show live.
投稿者 машины : 2010年06月28日 00:28
I love how he rants about how entitled all these kids are while acting he has some great god given talents. Unless that talent is bitterness.
投稿者 кредиты : 2010年06月28日 01:43
I am aware this is slightly off the topic at hand, but I would like to find out, what you all reckon about the australian elections?
投稿者 Emilio Rumbolt : 2010年08月17日 11:39
I enjoyed reading your blog. Keep it that way.
投稿者 enhattash : 2010年08月21日 11:42
Wow! Thank you! I always wanted to write in my site something like that. Can I take part of your post to my blog?
投稿者 payday loans : 2010年09月01日 10:14
Find Payday Loan Bay Street, Toronto, ON M5H 2Y3 (416) 477-2742
投稿者 toronto loans : 2010年09月05日 07:31