コメントやトラックバックのスパム対策では主としてたねちゃんさんのアイデアを取り入れさせて頂いてます。

まだまだいろいろ実験段階ではあるんですが、
対策は段階としては以下のような感じです。

①サーバのファイアウォール機能

Linux(FedoraCore5)のファイアウォール(iptables)で最もうざい国をサーバ接続の段階でシャットアウト
 →例:中国、韓国など大量爆撃が来るところ
 →1日数千のオーダーでシャットアウトしている(DNS、SMTP、HTTP、SSHなど全て含めての話)
参考:ファイウォール構築(iptables) by fedorasrv.com

②CGIリネーム

本来の名前でトラックバックやコメントを受け付けない。もし本来の名前で来ていたら、IPアドレスを別途ログに記録して、しつこいアドレスは.htaccessのdeny from に追加。
そして、CGIの名前は外部公開しない。1日に何度か自動変更されるようにしている。
→参考:CGIリネーム by たねちゃん

③.htaccessでの効果的な対策

●コメントCGI
SetEnvIf Accept-Language ja を使い、ブラウザの言語設定によるアクセス制限を行う。
言語設定によるアクセス制限は「どの言語を設定しているか」で相手を判断して、拒否する方法です。
ブラウザの設定をいじるだけで簡単にアクセス可能になるのが難点ですが、相手に言語設定で弾いていると気付かれなければIPよりも確実にふるいわけができます。

●トラックバックCGI
UserAgentによるふるいわけ。
(例)
SetEnvIf User-Agent “Mozilla” browser_ng
SetEnvIf User-Agent “Opera” browser_ng

詳細は最近たねちゃんさんがエントリにしてくださっているので参照してください。
たねちゃんズ12: スパム大量爆撃来たけど…

④Captchaプラグインによるコメントスパム対策

・・・実はエラーに悩まされてまだこのプラグインを入れきれていません。。

⑤分析

①~④をスパマーが突破して初めてMTに到達します。(それでも今度はSpamLookupでジャンクフォルダに入る)
上記②~③は要するに403 Forbiddenエラーではじくことになるわけだが、これをIPアドレスをリスト化する自作(と言いつつたねちゃんさんの自作のことだが)CGIでどんどん記録していき、大量に403エラーを繰り返している輩の傾向(国別、アクセス時間帯、回数、IPアドレス範囲など)が分かるようになります。
403エラーを自作CGIに飛ばすのは以下ディレクティブを使うだけ。
(例)
ErrorDocument 403 /403.cgi
このとき、○○○.cgiの部分は公開ディレクトリのトップディレクトリからのフルパスとなります。

考察

これらにより、今はトラックバックスパムがほぼ皆無。来ても1日か2日に1件程度で、ジャンクフォルダに日本語且つ、UserAgentの正しいトラックバックが到達している程度です。
コメントスパムは④のCaptchaプラグインを入れ切れていないので、1日に数十件のオーダーでLanguage OKのコメントスパムがジャンクフォルダに到達してますが、Captchaプラグインを入れられればこれらも更に10分の1以下になるでしょう。

ポイントは、いかにMTにスパムごときで仕事を与えないようにするか、です。
確かに何もしなくてもほとんどはMT純正のSpamLookupプラグインがはじいてくれるでしょうが、そこまで到達したアクセスが1日数千件オーダーであると、サーバの負荷は到底無視できないレベルとなるでしょうし、もしレンタルサーバであれば警告を受けるレベルかも知れません。

是非お試しください。



こちらもご一緒にどうぞ!