モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

大手ブログサーバ向けトラックバックスパム対策方法

ちょっとまたトラックバックスパムの対策方法を考えてみました。
ただこれは、個人のサーバで動いてるブログサーバでは出来ず、大手のブログサーバでしか出来ない方法です。


トラックバックスパムは、同一のURLで多数のトラックバックping打っていると考えられます。
普通のブログで、人の手で1つのエントリーのトラックバックを100以上打つ、ということはほぼ考えられないでしょう。
大手のブログサービスであれば、自分のブログサービス内に対して、1つのエントリーに対するトラックバックスパムが100くらいは届くでしょうから、その閾値を越えたらトラックバックスパムと見なす、とします。
その閾値を越えるまでに届いてしまったトラックバックは、ブラックリスト認定されたときにシステム側で消せばよいでしょう。


具体的には、トラックバックURLブラックリスト用のテーブル持っておいて、トラックバック受ける度にカウント上げてって、ある閾値越えたらそいつはブラックリスト入りとします。
つまり、トラックバック数から自前のURLBLを作るというわけです。
でその時に、ブログ用に持ってるDBのトラックバックURLから、そのURLを消して回ります。
トラックバック受けたときは、まずそのブラックリスト見て合致してなかったら通常のトラックバック受け付け処理に回します。
あと、トラックバック元のIPも記録しておき、ブラックリスト入りしたIPについてはDNSBLのほうに入れて、そこからは遅延を掛けるとかしても良いと思います。ただ、トラックバック元IPのブラックリストは、一般向けブログサービスからトラックバックを大量に打ってるようなところがあると誤検出が起こりうるので、ホワイトリストのメンテナンスが必須になります。


メールの場合、RgreyやStarpitのような軽いフィルタで大部分のスパムを拒否すると、逆にサーバの負荷が軽くなったりするのですが、同様にこうやってブラックリストで拒否する仕組みを用意したほうが、まじめにトラックバックスパムを処理するよりは負荷が減ると思われます。


メールと違いブログのトラックバックとかには、別に通信事業法による制限がないのだから、結構思い切ったスパム対策が取れると思うんですよね。
たとえ(特殊な条件からの)正しいトラックバックが送られなくなったところがあったたとしても、それがうちのブログサーバの仕様ですから、と言えば済む話なので。


とか書いた後に、なんか昔にも同じようなこと書いたような、と思って検索してみたら、やっぱり書いてました orz
モーグルとカバとパウダーの日記 - トラックバック・コメントスパムの対策
ついでに、こないだ書いたS25Rにマッチしたら拒否というアイデアも、昔書いていたという…
だいぶ脳みそが腐ってきてる模様。
この過去のエントリーでは、そうやって出来たブラックリストを、DNSBL使って公開して欲しいよ、という提案も書いてるし。
今日のメールのスパム対策のほうの、whoisフィルタと同じようなアイデアに行き着いてる。むぅ。アイデアの枯渇が激しい。


ちなみにちょうどタイミング良く、はてなでも新しいコメント・トラックバックスパムの対策がされたところだった。(おとなり日記に出てきた)
はてなダイアリー日記 - コメント・トラックバックスパムの拒否機能について
DNSBL使うとのことなんだけど、「はてな」なんだから、逆にはてな自らが優秀はトラックバックスパムDNSBLを運用して公開してくれることを期待。


(追記)

ちなみにここで言ってるDNSBLは、トラックバックを打ってくる元IPのDNSBLなんでしょうね。
自分もDNSBLと書いてしまいましたが、自分のアイデアは、ブラックリストとなる対象がURLのためURLBL*1となります。
実はこの場合、そのままDNSBL使っては実現できないですね。
スパムメールのURLBLも、DNSBLと同じ仕組みを利用しているため、geocitiesだとか、独自ドメインでないURLが使われている場合、誤検出を起こしてしまいます。
だから、DNSBLの仕組みとはまた違った、URIBLの仕組みをなにか作る必要があるなあ、と思いました。
例えば、HTTPでCGIのクエリにURLを入れてやって、エラーコードでブラックリストに入ってるかどうかを返す、とか。


(追記2)
おれはおまえのパパじゃない - はてなダイアリーがやっとこスパムトラックバックに対応してくれたー

悪意ある個人からの、スクリプトによる嫌がらせを防げそうにないので、それがちょっと心配かな

なるほど。
嫌がらせするために、特定のURLについてスパムトラックバックを代りに打つやつが出る可能性がある、ということか。
このシステムの場合、知らぬ間に自分の打ったトラックバックが消されてる、しかも管理者が消したのか嫌がらせで消されたのかわからない、というのが問題になるということね。
たぶんそんなに致命的な問題にはならないと思うんだけども、どうしたもんだろうなあ。


(関連)

モーグルとカバとパウダーの日記 - トラックバック・コメントスパムの対策
モーグルとカバとパウダーの日記 - TrackbackスパムをS25Rで拒否

*1:URLでブラックリストとなっているもの。通常は接続元のIPがブラックリストになっている