Movable Type 備忘録

 スパム・トラックバック対策2

もうわたし、くじけそうです(つω-`。)

こちらのスパム・トラックバック対策で紹介したトラックバック・スパム対策ですが、すばらしいです。
完璧にスパムが弾かれています。

だからといってスパム行為が止むわけではなく、しっかりとログにはスパムの痕跡が残ってまして、ログに残るということは、わたしのMovableType(ムーバブルタイプ)くんは忙しくお仕事してるわけです。

MovableType(ムーバブルタイプ)くんが忙しいということは、わたしの記事投稿や、訪問者さんのコメント、トラックバックにも影響が出てしまい、エラーに繋がるようです。

ここ最近分単位でスパムが届いてまして、昨日ログをクリアしたのに先ほどみたら9000件ほど溜まってた Σ( ̄Д ̄;) ガーーン!!
ホント(゚∀゚; )ありえなーーーーーいっ!!

- 2006.12.01 追記 -

ごめんなさいですの。
2006.11.28のアクセス制限の記述ですが、ご指摘を受けまして、<Limit GET>だとGETによるアクセスのみ拒否するだけで、POSTとかその他HTTPアクセスには何の制限もかからないないようです。

正しくは、以下の通りです。

<Files mt.cgi>
Order deny,allow
deny from all
allow from 許可するプロバイダ名
allow from 許可するプロバイダ名2
allow from 許可するIPアドレス
allow from 許可するIPアドレス2
</Files>

- 2006.11.28 追記 -

ネットマニアさんのところでmt.cgi のファイル名を変更する。という記事が紹介されてました。ご参考までに。

mt.cgiを自分以外の人が実行した場合エラーとするには、.htaccessを使えばできます。
具体的には以下のように、allow fromというところに許可したいプロバイダ名やIPアドレスを指定します。複数指定可能です。

<Files mt.cgi>
<Limit GET>
Order deny,allow
deny from all
allow from 許可するプロバイダ名
allow from 許可するプロバイダ名2
allow from 許可するIPアドレス
allow from 許可するIPアドレス2
</Limit>
</Files>

くじけそうだけど、このままトラックバックを無効にしたんじゃくやしいので、トラックバックのスクリプトのファイル名を変更することで対応しました。
ついでに、コメントのスクリプトも変更しちゃいました。

スクリプトの変更の仕方

トラックバックのスクリプトは、デフォルトではmt/mt-tb.cgiとなっています。
コメントのスクリプトは、mt/mt-comment.cgiです。

これらのスクリプトのファイル名を任意のファイル名で変更します。
たとえば、untispam-mt-tb-2006_11_27.cgiにしたり、untispam-mt-comment-2006_11_27.cgiなどのように、任意のファイル名をつけることでスパムをなくそう ( ̄∇ ̄)/ というわけです。

具体的にはmt-config.cgiの中に、以下の環境変数を追加することで、トラックバックやコメントのスクリプトを変更することができます。

  1. CommentScript untispam-mt-comment-2006_11_27.cgi
  2. TrackbackScript untispam-mt-tb-2006_11_27.cgi

追加したら、個別エントリ・アーカイブを再構築します。
ここまでを定期的に行えば、トラックバック・スパム、コメント・スパムがなくなるのでは・・・と思っています。

でも、こんなことを毎回やるのは面倒なので、こちらのMovableTypeを自動的に再構築するを応用して、1週間ごとにファイル名を変更して、自動的に再構築するようにしました。

今回わたしが作ったmt-period.cgiを以下に記します。

  1. #!/usr/bin/perl
  2.  
  3. $blogid = @ARGV[0];
  4.  
  5. $nowtime = time;
  6. $lasttime = 0;
  7.  
  8. # スクリプト変換モードかチェックしています
  9. if ( $blogid == "1" )
  10. {
  11.     # ファイルの存在チェックを行います
  12.     if ( -e "mt-change.txt" )
  13.     {
  14.         # 最終アクセス時間を外部ファイルから取得しています
  15.         open HN, "mt-change.txt";
  16.         $lasttime = <HN>;
  17.         close HN;
  18.     }
  19.  
  20.     # 最終アクセス時刻から1週間経過したかどうかチェックしています
  21.     if ( $nowtime - $lasttime >= 604800 )
  22.     {
  23.         # 最終アクセス時間を外部ファイルに保存しています
  24.         open HN, ">mt-change.txt";
  25.         print HN $nowtime;
  26.         close HN;
  27.  
  28.         # ファイルの存在チェックを行います
  29.         if ( -e "mt-tb-$lasttime.cgi" )
  30.         {
  31.             # ここで現在時刻のファイル名に変更しています
  32.             system("mv mt-tb-$lasttime.cgi mt-tb-$nowtime.cgi");
  33.         }
  34.         else
  35.         {
  36.             # オリジナルのファイル名を変更します
  37.             system("mv mt-tb.cgi mt-tb-$nowtime.cgi");
  38.         }
  39.  
  40.         # ファイルの存在チェックを行います
  41.         if ( -e "mt-comment-$lasttime.cgi" )
  42.         {
  43.             # ここで現在時刻のファイル名に変更しています
  44.             system("mv mt-comment-$lasttime.cgi mt-comment-$nowtime.cgi");
  45.         }
  46.         else
  47.         {
  48.             # オリジナルのファイル名を変更します
  49.             system("mv mt-comments.cgi mt-comment-$nowtime.cgi");
  50.         }
  51.  
  52.         # 元ファイルからmt-config.cgiをコピーします
  53.         system("cp mt-config-base.txt mt-config.cgi");
  54.  
  55.         open HN, ">>mt-config.cgi";
  56.         # 追加する環境変数を書き込みます
  57.         print HN "TrackbackScript mt-tb-$nowtime.cgi";
  58.         print HN "CommentScript mt-comment-$nowtime.cgi";
  59.         close HN;
  60.  
  61.         # エントリ・アーカイブを再構築しています
  62.         system("perl mt-rebuild.pl -mode=archive -blog_id=$blogid -archive_type='Individual'");
  63.     }
  64. }
  65. print "Content-type: text/html\n\n";
  66.  
  67. 1;

mt-config.cgiをコピーして、mt-config-base.txtというファイルをあらかじめ作成しておきます。

- 2006.11.28 追記 -

このカスタマイズを行う前に、mt-config.cgiをmt-config-backup.cgiなどのように、必ずバックアップしておいてくださいね。

ここでは説明のためにカンタンなファイル名(mt-config-base.txt)にしていますが、ここで付けるファイル名は任意の、外部から想像されにくい名前にしてください。

また、拡張子も想像されにくい、メチャクチャな拡張子を付けてください。
たとえば、mt-config-aiueo.untispamとか、auau-untispam-configure.xyzにしたりなど。

もしくは、保存先のディレクトリを変更してもいいかも、です。
そうしないとブラウザから参照できちゃいますので。

このファイルはかなり重要なので、取り扱いに十分注意してください。

そして、青い字の部分で再構築する周期( 秒 )を指定します。
赤い字の部分でファイル名を変更しています。

そして、緑の字の部分でエントリ・アーカイブを再構築しています。
ピンクの字の部分で、あらかじめ作っておいたmt-config-base.txtを読み込んで、mt-config.cgiに書き込み、その直ぐ後で、今回追加する環境変数CommentScript、TrackbackScriptに新しいスクリプトのファイル名を指定しています。

次に、アクセス頻度の高いページ、たとえば、メイン・インデックスのテンプレート内の<head>~</head>内に以下のコードを追加します。

  1. <script type="text/javascript" src="http://●●●/mt/mt-period.cgi?<$MTBlogID$>"></script>

これでスクリプトのファイル名が自動的に再構築されるので、スパムされにくくなるのではないでしょうか。

ちなみに、ファイル名を変更したらスパムがピタッ!! と止まりました。 それに再構築がメチャ早くなりました(●´∀`●)

今まで相当負荷がかかってたんだと思います。

さくらインターネットなどの、cronが使えるレンタル・サーバをお使いの人は、これらを設定すれば自動的に変更してくれます。

以上です。
とりえあず、わたしもこのカスタマイズをやり始めたばかりなので、もう少し様子を見ることにします。

 Trackback Pings(1)

from MovableType備忘録

わたしのブログでも、いろんなスパム対策を行っています。 その甲斐あって、スパム・コメント/トラックバックはすべてジャンクされています。 ホッとしてたことも...

 Comments(5)

#1: Posted by bzbell @ November 28, 2006 [REPLY]
user-pic

テス、テス!!
スパム対策後のコメント投稿テストです( ̄∇ ̄)/

#2: Posted by drry @ December 2, 2006 [REPLY]
user-pic

.htaccess の 2 行目と 9 行目にある <Limit> は削除したほうが良いです。

#3: Posted by bzbell @ December 2, 2006 [REPLY]
user-pic

>>2 drry さん

こんにちわ^^

ご指摘ありがとうございます♪
drryさんに言われて「何でですの?」と思ってネットで調べたら、上記記述だとGETのみ制限する…ということみたいですねΣ( ̄Д ̄;)!!

正しくは、すべてのHTTPによるmt.cgiへのアクセスを拒否したい場合には、

<Files mt.cgi>
Order deny,allow
deny from all
allow from 許可するプロバイダ名
allow from 許可するプロバイダ名2
allow from 許可するIPアドレス
allow from 許可するIPアドレス2
</Files>

という記述・・・ ・・・ ・・・ですよね!?
すいません、疑問形で(; ̄∇ ̄A

#4: Posted by drry @ December 3, 2006 [REPLY]
user-pic

理由、記述、共にその通りです。すいません、理由も併せて書くべきでした。

#5: Posted by bzbell @ December 3, 2006 [REPLY]
user-pic

>>4 drry さん

こんにちわ^^

> 理由、記述、共にその通りです。すいません、理由も併せて書くべきでした。

いえいえ、drryさんに言われなかったらナンで!?という疑問さえ思いませんでしたから。
調べても分からなかったらお聞きしてましたけど(; ̄∇ ̄A

 Post a Comment

 

コメント用フィード