えろぺおさんの日記 を参考に、すでに受けた分は表示の際にプラグインで見せないようにし、新しく受ける分はフィルタで捨てるようにしてみました。
で、そのフィルタで spam 判定された際に、IP アドレスを STDERR に出力するようにして IP アドレスを確認していたのですが、あるアドレスからのアクセスがしばらく続くと、今度は別のアドレスからのアクセスがまた続き、という風になっていました。試しに、フィルタにひっかかったツッコミには 403 Forbidden のリザルトコードを返すようにしてみましたが、それで挙動が変わったりするわけではなさそうでした。
いずれにしても、ほそのさんが指摘するように、「今回の spammer はプロなんじゃないか」という感じを私も受けます。今のところ、おおもとは一つのようですが、これがあの手この手で複数出てくるようになると、めんどくさくなりそうです。とほほ。
よくログをチェックしてみると、今回の一連の spam はどれもこんな感じのアクセスでした。
81.118.4.16 - - [16/Sep/2004:22:14:27 +0900] "POST /./ HTTP/1.0" 200 207 "-" "Mozilla/4.76 [en] (Win98; U)"
この 'POST /./ HTTP/1.0' というリクエストが不自然で、(第二 tDiary.Net での) 通常の日記ブラウズの際のツッコミでは 'POST / HTTP/1.0' という風になりますので、それで判断すればよさそうな気がしました。
RewriteCond %{REQUEST_METHOD} POST RewriteRule ^/\./ - [F,L]
これでちょっと様子を見てみよう。
なお、上記のようなことになるのは
@index = './'
となっていて、その結果ツッコミのフォームが action="./" となり、通常のブラウザではそのアクセスが 'POST / HTTP/1.0' として送られるのに、ツッコミ spam に使われているツールがそのようになっていないから、ということなのかな。だから、
@index = ''
とか
@index = 'index.rb'
とかの運用だと、両者によるアクセスはこのパターンでは区別できない気がします。
[追記] うーん、うまくマッチしてくれていないみたい。どうしてだろう?
今日からの三連休、ゆうなが松江に来ています。昼間にゆうなの友人 (どらちゃん) と合流して田和山の方でお買物をし、晩ご飯はうちで一緒にたべました。
食後、何して遊ぼうか? という話になって、急きょこういう時にたよりになる雄也くんに電話して、「晩ご飯食べがてらうちに遊びに来ない?」と誘い、四人でモノポリーをしました。
結果、人が良すぎて交渉で相手においしい思いをさせた雄也くんがまず破産、次にボードウォークに家を三件かまえながらも誰も入ってくれなかったかずひこが破産、雄也くんを破産に追い込んだときに大して取り立てられなかったどらちゃんが破産、というわけで、ゆうなが優勝したのでした。
うーむ、まさかこんな結果になるとは... というわけで、いつか NaCl モノポリー部を作らねば! と決意したのでした。
推測ですが、ApacheってRewriteRuleの前にURIを正規化してませんか?「.」は取り除かれるんじゃないかな...