• 更新:
  • 投稿:
  • カテゴリィ:

タイトルに偽りなし

今回紹介するSPAMコメント・トラックバックの対策方法は、“Junk slowdown”というスクリプトの導入です。

結論から先に言うと、自分がいろいろ試したSPAM対策の中で、一番効果があったのがこの方法です。

まずはその前に、従来のSPAM対策の説明、そして“Junk slowdown”導入方法、導入後の状況を書きます。

まずはおさらい

各種SPAM対策のプラグインは、ほとんどが「コメント・トラックバックを受け取った後で、SPAMかどうか判断する」という流れになります。

しかしその方法では、一日に何十、何百とSPAMによる被害を受けている状況だと、その度にプラグインによるチェックが行われるので、サーバに負担をかけることになります。「毎秒コメントCGIにアクセス」なんて、自宅サーバでは言うに及ばず、レンタルサーバ環境でも恐怖です(追い出されるかも)。

たとえば──ちょっと前の記事ですが、drkさんは2時間程度で約1万件のトラックバックスパムを受信とのことです。恐ろしや……。

トラックバックスパムで攻撃されてます・・・orz :: Drk7jp
トラックバックスパムで攻撃されてます・・・orz :: Drk7jp

MT-Comment.cgiのリネーム

そこで先ずお勧めなのが、コメントCGIの改名です。

コメントCGIもトラックバックCGIも同様に処置できるので、二つのCGIをまとめて、以下「コメントCGI」と呼びます

コメントCGIリネームと“mt.cfg(mt-config.cgi)”の変更方法は、下記を参照ください。

mt-comments のリネーム: blog.bulknews.net
mt-comments のリネーム: blog.bulknews.net

SPAM業者に(何らかの手段で)知られたコメントCGIのURL。それを変えてしまうことで、SPAM送信者から「コメント・トラックバックを受け付けること」自体が無くなります。

──しかし、自分も何度か試しましたが効果があるのは約一週間。その後はまた、一日に何回もSPAMを受けるようになりました。

おそらく──SPAM業者が「コメントCGIの設置してあるURLが存在しない」ということを知り、SPAM送信先を修正するのでは──と想像します。

(余談だが──何回かMT-Comment.cgiをリネームしたけど、毎回毎回、再びSPAMが来るまで一週間のタイムラグがある。〈エラーが出たら自動的にURLを修正するスクリプト〉くらい、簡単に組めそうな気がするが──人間がログを見て、手動で修正しているのかな? ご苦労様! SPAM業者! :-D )

“Junk slowdown”!!

ということで、上記の方法を改善するのが、下記URLにあるスクリプト。英語で書いてあり、自分の語学力では全てを把握できませんが、抜群の威力です。

Solid Wall of Code: MT 3.2: Junk slowdown
Solid Wall of Code: MT 3.2: Junk slowdown

これは要するに「リネームしたコメントCGIの替わりに設置しておくオトリ」です。Perl版とPHP版があり、PHP版の方がお勧めのようです。PHP版はページの半分くらいの“Implementation (Advanced)”にあります。

スクリプトの記述にあるsleepがミソで、アクセスすると30秒間プログラムの実行を遅延させます。おそらく、数秒間隔でのアクセスに対抗するため、と思います(もしくは、タイムアウトエラーを意図的に発生させるため?)。

おすすめの設置方法

“.htaccess”を利用して、「リネームのCGI」へアクセスするとJunk slowdownに飛ばす、という方法が有効です。

  1. 上記スクリプトを設置
  2. コメントCGIをリネーム
  3. “mt.cfg”を変更(MT3.2xは“mt-config.cgi”)
  4. “.htaccess”に下記のように記述
  5. コメント・トラックバックのテストを忘れずに!!

Junk slowdownの設置場所は、ブラウザでアクセスできる場所であればどこでも大丈夫です。

たとえば、Junk slowdownを“/hoge/sand-trap.php”に設置したとします。Movable Typeのインストールディレクトリにある“.htaccess”に以下のコードを追記します。なるべく上の行に追記した方がいいでしょう。


RewriteEngine on
RewriteRule ^(mt-comments|mt-tb|mt-comcom|mt-tbtb)\.cgi$ /hoge/sand-trap.php [LAST]

二行目は「()内にあるファイル名(|区切り)で、拡張子が“.cgi”のファイルにアクセスするとJunk slowdownに飛ばす」という意味です(自分なりに工夫した部分なので、もっとスマートな方法があるかも :P )。

コメントCGIをリネームする度に、上記の()内にリネーム前のファイル名を追加していきます。

導入してどうなったか

自分の環境ではJunk slowdown導入後、一ヶ月の間に一件もSPAMを受信しませんでした! MT管理画面の「迷惑コメント・トラックバック」に一件もSPAMはありません。多いときで一日に数十件のSPAMを受けていたので、これはかなりうれしいです。

(これまた余談──しかし、毎日毎日、〈リネーム後のCGI〉にアクセスはある。一日20~30回程度。いったい、何をしているんだ?)

一日に何万、何十万とアクセスがある(それだけ注目されている)環境だと、もしかするとこれだけではヌルいかもしれません。しかし、やってみる価値のある、効果の高い方法だと思います。

教えてエロいえらいひと

コメント・トラックバックCGIのリネームとMT.cfg・.htaccessの変更を、同時に行ってくれるスクリプトがあれば、週一くらいで実行すると万全なのですが。

あと、激しく疑問なのが上記の「リネーム後のCGIにアクセスはあるのにコメントが届かない」こと。ひょっとして──正式にコメントしているひとが何十人もいる、とか!?

[2] このページの一番上へ戻る