以前、トラックバックスパム対策として、
1)トラックバックCGI(mt-tb.cgi)の名前を変える(仮にmt-tb-xxxx.cgiとする)
2)トラックバック先URLをエンティティ化する
の2つの方法で対策を取り、トラックバック自体は使えるようにしていたのだが、再び、トラバスパムによる高負荷状態になり、サーバが瀕死状態に。
ひとまず、トラックバック用CGIをストップさせる。
しかし、リクエストがプールされているのか、cgiのパーミッションを644にしても、TOPでプロセスをみると、つぎつぎにトラックバック用のCGIがエントリされてる。うーん。なぜだろう。
CGIはもう起動できないハズなのに。
負荷が下がらないので、とりあえず、killallコマンドで、トラックバックCGIをkillする。
うーん。いちおう、MovableType内では、それらのトラックバックは、スパムとしては認識されているが、MTがトラバを受け付けた時点で、負荷がギュイーンと上がり、それが連続して何十個となると、即、アウトである。
SPAM的トラックバックは、そもそも、MTのまえで弾くしかないのである。
しかし、実際問題として、100%弾くのは難しい。
そこで、apache先生にお願いする。
自サイトの.htaccessに、
SetEnvIf User-Agent "robocrawler" spam
SetEnvIf User-Agent "libghttp" spam
SetEnvIf User-Agent "TMCrawler" spam
Order Deny,Allow
Allow from all
Deny from env=spam
を記述する。つまり、User-Agentに、"TrackBack","robocrawer","libghttp","TMCRawler"が含まれる場合、アクセスを拒否するのである。
アクセスログを見ると、トラバスパムを送ってくるやつは、"TrackBack/1.02","TrackBack/1.06","libghttp"などである。(もしかしたら、もっと通常のUserAgentを装ってるやつがいるかもしれないが、そこまでは調べ切れていない)
それと、アクセスログをみて、たちの悪いロボット robocrawerもバンする。ネットで調べてると、TMCRawerもそれっぽいので、予防としてバンしておく。
しかし、英語圏からのトラックバックスパムに紛れて、しょーもない日本のサイトからのトラバが混じってるのにさらにむかつく。
トラックバックって、Webのおもしろい仕組みなんだけれど、クソみたいなスパム業者のお陰で、実質、使えないものになってる。残念だなぁ。
つか、MovableTypeのトラバCGIがヘボすぎるって話でもあるけど。