トラックバックのスクリプト名を変更してもBotでアクセスされてトラックバックのアドレスが収集されてしまいます。そういうBotからのアクセスを拒否すれば良いのでしょうが、ユーザーエージェントが巧妙に偽装されている場合があり、アクセスログから調べるのはとても大変です(・_・;。
きちんとトラックバックを送っていただける方には申し訳ないのですが、Trackback Auto-Discoveryの機能を使わないようにテンプレートを修正しました。
MTOS 4.2 RC4でEntryTrackbackDataをキーワードに全テンプレートを検索すると、「ブログ記事の概要」「ウェブページ」「ブログ記事」がヒットしますので、それぞれのテンプレート内にある<$mt:EntryTrackbackData$>を削除してしまうか、mt:Ignoreタグを使って処理を無効化してしまいます。
これでもトラックバックのURLを拾われるようならば、別の対策を考えることにします・・・。
トラックバックスパムが多くなってきたら、mt-tb.cgiをmt-tb-2007.cgiというようにな対策をしていました。
しかし、最近になってスパマーも進歩しているようで、renameしてから数時間後には、rename後のアドレスにスパムがくるようになってしまいました。
アクセスログを見ると、トラックバックスパムを送信しているプログラムのUser Agentは、TrackBack/1.02やlibghttp/1.0と名乗っていますので、これをバッサリとアクセス拒否することにしました。
Apacheの設定ファイル(httpd.conf)に以下のような記述を追加しました。
BrowserMatch "TrackBack/" TB_SPAM
BrowserMatch "libghttp/" TB_SPAM
<Location /cgi-bin>
Order allow,deny
allow from all
deny from env=TB_SPAM
</Location>
User Agent名を偽称されない限り、この方法でしばらくは安泰な日々が続くと思います・・・。
古いエントリへのトラックバックを受信しないように修正しても、最近のエントリに対して沢山のトラックバックスパムが来ますので、ゴミがいっぱいたまってしまいます・・・。
HTTP error: 403 Throttled対策として、一日に受信できるトラックバックの数を多く設定すれば、ゴミがなおさらいっぱいたまってしまいます(^^;;。
というわけで、最も単純な方法ですが、トラックバックのスクリプト名をデフォルトのmt-tb.cgiから変更してみました。スクリプト名を変更した事で、しばらくの間はトラックバックスパムを受信しなくて済みますが、いずれは変更後のスクリプト名へPOSTされるようになってしまうと思います。そうなったら、またスクリプト名を変更して対処したいと思います。
以下のように、スクリプト名を変更しました。
- mt-config.cgiにTrackbackScript [変更後のスクリプト名].cgiを追加してアップロードする。
- サーバにあるmt-tb.cgiの名前を変更する。
- Movable Typeの管理画面にアクセスし、サイトを再構築する。
エントリー・アーカイブをダイナミック・ページにしている場合、再構築しなくても大丈夫みたいです。
ブログ内のエントリーにトラックバックを打ったら、
HTTP error: 403 Throttled
というエラーが発生しました。
トラックバック・スパムが原因で、OneDayMaxPingsやOneHourMaxPingsの最大値に達してしまっていたようです。Movable Type 3.3 マニュアル: 環境変数を参考にして、mt-config.cgiの末尾に
OneHourMaxPings 50
OneDayMaxPings 250
を追加して最大値を変更しました。
設定を変更してもトラックバックスパムが沢山送られてきたら意味がないので、トラックバックのスクリプト名を変更したり、User Agent名でトラックバックのスクリプトへのアクセスを拒否する対策(トラックバックスパム対策)をした方が良いと思います。