「CAPTCHA」によるトラックバックスパム対策(最終手段)

  • 投稿日:
  • by

トラックバックスパムにさんざん悩まされてきましたが、とうとう最終手段に出ることにしました。


『「CAPTCHA」によるトラックバックスパム対策』を実施しました。



 上記のスパム対策をするまでは、いろいろなプラグインを入れてみたりして試していましたが、結局はトラックバックのプロセスは動いてしまうわけで、毎秒2、3発撃ってくるトラックバックスパムに追従できませんし、サーバーのリソースがそちらに取られ、肝心のコメント動作や他のタスクへの影響の方が大きいのです。

なので、このブログ(このサーバーで稼働しているブログ全部)へのトラックバックは、「トラックバックをまじめに送ろう」という意志がある方のみという勝手な解釈の元、こういう措置になってしまいました。

ということで、上記のスパム対策の方法を、参考URLの説明を交えてご紹介。


この対策を導入するに当たって、必要なPerlモジュールをサーバーにインストールしておく必要があります。

・CGI
・GD
・Digest::MD5

の3つです。

CPANを使ってインストールしました。

# perl -MCPAN -e shell

> install CGI

> install Digest::MD5


GDに関しては、CPANではどうもうまくインストールできなかったので(過去さんざんやったけど結局挫折した(^^;))、「yum」コマンドでインストールしました。

# yum install perl-GD


それでは、環境もそろったのでいざ設置に移ります。


まず、上記ブログから、

・Tiny Gimpy
・mt-captcha-tb

をダウンロードしてきます。

まず、「Tiny Gimpy」を解凍すると、「tgimpy.cgi」というファイルがでてきます。

このファイルをサーバーのCGIが実行可能なディレクトリにアップロードし、パーミッションを「755」に変更します。

そして、ブラウザからとりあえず「tgimpy.cgi」に直接アクセスしてみて、下記のような画像が出ればとりあえずはOKです。


tgimpy.png


Perlモジュール等も正常に動作していることになります。

次に「tgimpy.cgi」をエディタ等で開き、設定を編集します。


;### 私のファイル名を変更した場合は * 必ず * 修正してください
$szMyName = 'tgimpy.cgi';

;### 設定ファイルへのディレクトリパス
sub GetCfgPath { return '/home/yourname/data/tgimpy'; }

青文字の部分を下記でアップロードする設定ファイルのディレクトリを指定します。
(このパスはWEBブラウザから直接アクセスできない場所に設置した方がいいと思われます。)


次に、「Tiny Gimpy」の解凍ファイルに一緒に入っている設定ファイル「sample.cfg」を適当なファイル名にリネームします。


ここでは、「hogehoge.cfg」としておきます。

ファイルの中身を編集します。

;##########################################
;# CAPTCHA Tiny-Gimpy 設定ファイル
;##########################################

;### 暗号キー
$szCryptKey = 'asdfoiajsoijfafd';

;### 画像のサイズ
$nSizeX = 100; ;# 幅 [pixel]
$nSizeY = 20; ;# 高さ [pixel]

;### 謎掛けの桁数
$nFigure = 6;


$szCryptKeyの文字列を変更します。これが暗号キーになります。(適当でいいと思います(^^;))

修正したら、先述の指定したディレクトリへアップロードします。


次に、「mt-captcha-tb」を解凍すると、「mt-captcha-tb.pl」というファイルが出来ます。

このファイルもエディタ等で開き、設定を変更します。


;### Make sure to set below path as your server settings
require '/home/www/cgi-bin/tgimpy/tgimpy.cgi';

青文字の部分に「tgimpy.cgi」へのフルパスを記入します。

そして、修正したファイルを、MT/Pluginディレクトリにアップロードし、「MTの管理画面>システムメニュー>プラグイン」で有効になっていることを確認します。

plugingamen.gif

それでは最後に、テンプレートの修正です。

トラックバックアドレスが表示されている部分を下記のように修正します。

例:

この記事のトラックバックアドレス:<br />
<a href="<$MTEntryTrackbackLink$>/hogehoge/XXXXXX">
<$MTEntryTrackbackLink$>/hogehoge/<img src="/cgi-bin/tgimpy/tgimpy.cgi?cfg=hogehoge&key=<$MTEntryID$>"></a>

トラックバックスパム対策のため、トラックバックURL末尾のXXXXXX 部分を上記画像の数字列に書き換えてからご利用ください。


赤文字の部分は上記で設定した設定ファイル「hogehoge.cfg」の「.cfg」を抜いた部分を設定します。


これでリビルドすると、トラックバックURLのパスフレーズが上書きされてスパム対策が有効になります。

なお、MT標準では、トラックバックのスクリプトは、「mt-tb.cgi」ですが、これも念のためリネームしてしまいました。

バージョンアップの度に面倒ですが、スパムでサーバーが墜ちるよりはマシです(^^;)


変更方法は、「MT/mt-config.cgi」に以下を追加します。

TrackbackScript tb.cgi


また、多くのトラックバックスパムは、ブログのオートディスカバリー用のメタデータを自動的に収集し、総当たり方式でスパムをとばしてきますので、「オートディスカバリー用のメタデータ」もテンプレートから削除しました。


削除するタグは、

<$MTEntryTrackbackData$>

です。


実際の埋め込まれるメタデータは、↓のように感じです。

<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about="http://www.multiburst.net/side-zero/archives/2006/11/01/2327.php"
trackback:ping="http://www.multiburst.net/cgi-bin/mt-cgi/tb.cgi/4660"
dc:title="a"
dc:identifier="http://www.multiburst.net/side-zero/archives/2006/11/01/2327.php"
dc:subject=""
dc:description=" 価格 PCの方はこちら→購入する 携帯の方はこちら→購入する ..."
dc:creator="showBOO"
dc:date="2006-11-01T23:27:27+09:00" />
</rdf:RDF>
-->


まぁ、これは他のブログからトラックバックを見つける際に、いちいちブログのトラックバック言及の場所を見なくても勝手に見つけてくれる便利な機能なんですが、スパムはいやなので消しました。(^^;)