dh memoranda

徒然なるままに日暮らしブログに向かいて...

MTのスパム対策 - リファラでフィルタ

最近、このブログにコメントが付けられない、トラックバックがエラーになると指摘されることが増えてきました。なんとなく理由もわかっていたのですが、忙しさもあり、まあ、つかないんだから、荒れるよりいいかと放置気味だったのですが、なんとなく一念発起、ちゃんと対策をしてみました。

原因はわかりやすいのですが重大で、大量のコメント/トラックバックスパムが mod_perl のプロセスを喰らい尽していました。最近、やけに重いと思っていたら、一時間あたり550から700個程度のスパムです。mod_perl の導入とサーバのチューニングで、かなりの量をさばけるようにしていますが、これはさすがに、の量です。こんな量のアクセスが普通にきていたら、とてもうれしいのですけどね。気をとりなおしてアクセスログを調べてみたところ、ほとんどが "casino" をURLに含むリファラをつけたものでしたので、早速 MT 側に負荷がかからないように RewriteRule の設定でフィルタリングです。

RewriteCond %{HTTP_REFERER} casino [NC]
RewriteRule ^.*$ - [F]

これだけで一時間あたり100-150くらいまで減少、十分さばける量に減少しました。しかし、"casino" を止めると、つぎは "health" とかが目につくようになってきました。ひとつずつ設定すると大変なので、ついでに、リンクを辿らないアクセスにも制限を加えてみます。うちで利用しているドメインを列挙しておきます。トラックバックはリファラなしでも受けつけるようにしておきます。

RewriteCond %{HTTP_REFERER} !uva.jp
RewriteCond %{HTTP_REFERER} !uva.ne.jp
RewriteRule ^mt/comments - [F]
RewriteCond %{HTTP_REFERER} !uva.jp RewriteCond %{HTTP_REFERER} !uva.ne.jp RewriteCond %{HTTP_REFERER} !^$ RewriteRule ^mt/trackback - [F]

設定して数時間、casino ほか、リファラスパムらしきアクセスはあっけなく停止しました。コメントがうまくできずにイライラしていた方にはご迷惑をおかけしました。こういうのはいたちごっこになりそうな予感ですが、また問題がでてきたらおしえていただけるとうれしいです。