« 富士登山 | メイン | 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

コメントしてください

コメントスパム等の対策のために,大量のURLを含むコメント,古いエントリーに対するコメント,連続したコメントなどは,一旦保留されます.




保存しますか?