Movable Typeのトラックバックスパム対策

Movable Type のトラックバックスパム対策をメモっておく。

この記事を執筆する段階では、これだけやれば90%以上のトラックバックスパムを阻止できると考えている。ただ、いたちごっこ的なところもあるので、将来に渡って有効な方法ではないかもしれない、という点だけ留意して読んで頂ければと思う。

トラックバックスパムとは

まず最初に、トラックバックスパムについて整理しておく。人によって考え方が違うかもしれないが、私の定義は以下の通りである。

宣伝目的であり、ブログ記事とは関係のないトラックバック

トラックバックスパムの問題点を挙げると以下の通りである。

  • スパムでないトラックバックが埋もれてしまう
  • トラックバックスパムの処理で無駄に時間が費やされる
  • データベースが無駄に消費される

トラックバックスパムへの対策

トラックバックスパムへの対策としてはいくつかあるが、ここでは私が実践している方法を述べる。(1)の方法で弾けないトラックバックスパムを(2)(3)の方法で弾くというのが効果的だと思う。

(1) .htaccessの利用

トラックバックスパムの大半は、なんらかのツールを利用して機械的に送っている。ツールの場合、通常とは違うUser-Agentを使用している。そのため、User-Agentによって、アクセスを拒否すれば良い。これを実現するには、.htaccessを利用すれば良い。ここでは、私が現時点で実際に記述している内容を掲載する。これでほとんどのトラックバックスパムがMovable Typeのログに記録されることなく弾かれている。どのUser-Agentが怪しいかは、アクセスログを見ればわかる。

SetEnvIf User-Agent "^USERAGENT$" Spam
SetEnvIf User-Agent "^Jakarta Commons-HttpClient/" Spam
SetEnvIf User-Agent "^NP_Trackback/" Spam
SetEnvIf User-Agent "^Mozilla/" Spam
SetEnvIf User-Agent "^Opera/" Spam
SetEnvIf User-Agent "^User-Agent" Spam

<Files ~ "mt-tb\.cgi">
<Limit POST>
Order allow,deny
allow from all
deny from env=Spam
</Limit>
</Files>

なお、MozillaOperaなどメジャーなブラウザを含んでいるが、通常、トラックバックは、クライアントのブラウザから直接送られるのではなく、サーバーから送られる。たとえば、Movable Typeがトラックバックを送信する場合は、User-Agentは、Movable Typeになっているし、一般のブログサイトからのトラックバックはFC2とかlivedoorとかUser-Agentに含まれている。

(2) SpamLookupプラグインの利用

(1)の方法ですり抜けたトラックバックもSpamLookupでほとんどがスパムとして判定される。ただ、データベースに蓄積されるため定期的な削除が必要である。

あと、特定のサイトからのトラックバックもSpamLookupを利用すればスパム指定することができる。これを行うには、SpamLookup Keyword Filterを利用すれば良い。設定方法は、「スパムにするキーワード」にスパム判定してほしいサイトのURLを追加すれば良い。例えば、こんな感じである。

# Your Junk keyword list can contain words, phrases, patterns,
# and domain names. Each item must be on a separate line.
#
# Words and phrases can be listed plainly. They are tested in a
# case-insensitive manner and match against "whole" words:
cialis

# Patterns are Perl regular expressions.
/online-?casino/i

# You can optionally place a score at the end of the line to adjust
# the penalty applied for matching that item.
phentermine 4

# Spam URL List
http://blog.hoge.com/

(3) 禁止IPアドレスの指定

特定のIPアドレスからのトラックバックを指定したい場合には、「設定」−「IP禁止リスト」に追加すれば良い。デフォルトではこの機能は使用できないようになっているので、もしIP禁止リストを設定する場所が見つからない場合は、mt-config.cgiに以下の一文を追加すればよい。

ShowIPInformation 1

実際にやってみて

効果が大きいのはやはり、(1)である。User-Agentで弾くだけで、ほとんどトラックバックスパムが来なくなった。処理的には、.htaccessで弾くの一番軽く、IPアドレスで弾く場合も、実際には.htaccessを利用した方が良いでしょう。

今後、トラックバックスパムを送る側も新たな方法を考える可能性は大であり、アクセスログの分析するなどして適宜対策を取っていきたいと思う。

ただ、本当であれば、こんなことに労力を裂きたくないんですけどね・・

トラックバック(1)

このブログ記事に対するトラックバックURL: http://itsmemo.com/mt/mt-tb.cgi/115

※スパム防止のため、管理人がトラックバック内容確認後、公開されます。

以前運用していたブログは「Movable Type 3」で構築していた。その際に... 続きを読む

コメントする