HOME  »  , , , ,  » コメントとトラックバックスパムの対策(5回目)

コメントとトラックバックスパムの対策(5回目)

2005/03/20 | Comments & Trackbacks : 9

今まで二重三重の対策を施していたせいか、スパム攻撃と無縁の当サイトでしたが、ついにコメントスパムを連発で食らってしまいました…orz。
本文はまぁ普通の内容なんですけど、投稿者名にリンクされているアドレスが明らかにエロサイトで、しかも同じ記事に5つも食らったので、敵は特定の単語を含む記事に一斉攻撃をかけてきたと思われます。
許せない。
と言う訳で、さらなる各種スパムに対する対策強化をしてみました。

参考にした記事は「小粋空間」さんの「コメントスパム対策(その5)」「コメントスパム対策(その6)」で、改変したプラグインは以前から利用している「Ogawa::Memoranda」さんの「Quasi-Spam Filter Plugin」です。
(このプラグインの導入記録はこちらからどーぞ。)

特定かつ複数文字列を含んだコメントをフィルタリングする

以前はデフォルトのまま「<h1&gt」と「<a(ハイパーリンク)」タグをフィルタ対象としていたのですが、怪しげなアドレスからのコメントが多発したので、普段のコメントではまず使わないようないかがわしい英単語をフィルタ対象として追加しました。

# Set your spam pattern
our $PATTERN = '<h1>|<a\s|hoge1|hoge2|hoge3'; # H1 or A elements

「hoge○」の部分にムカツク単語を加えていけばOKで、文字列を”|”で区切ることで何文字でも対象を設定できます。

コメントの投稿者(MTCommentAuthor)の文字列をフィルタ対象に加える

うちはまだこの攻撃は食らっていないのですが、先に手を打っておいた方が良さそうなので、一緒に改変しておきました。
この処理をしておくと、投稿者名にフィルタ文字列が入っている場合もチェック対象となります(デフォルトでは本文のみチェック対象)。

以下、自分用の覚え書き。思いっきり元記事の転載です。
青文字が削除したソース、オレンジ色の文字が追加したソースです。

sub comment_filter {
my ($eh, $app, $comment) = @_;
return !is_comment_spam($comment->text);
return !is_comment_spam($comment->text . ' ' . $comment->author);
}

sub comment_throttle_filter {
my ($eh, $app, $entry) = @_;
my $comment = $app->{query}->param('text');
return !is_comment_spam($comment);
my $author = $app->{query}->param('author');
return !is_comment_spam($comment . ' ' . $author);
}

sub comment_error {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { });
$app->error("Spam Comment!");
}
}

sub comment_long_error {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { $_[0]->handle_error("Spam Comments!") });
}
}

sub comment_redirect {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { });
$app->redirect($URL);
}
}

sub comment_evil_redirect {
my $app = shift;
my $q = $app->{query};
my $mode = $q->param('__mode') || $app->{default_mode};
return if $mode ne 'post';
if (is_comment_spam($q->param('text'))) {
if (is_comment_spam($q->param('text') . ' ' . $q->param('author'))) {
$app->add_methods(post => sub { });
$app->redirect($q->param('url') || $URL);
}
}

ついでに、だいぶ前から導入済みだったコメント・トラックバックスパム対策用プラグインの導入方法も覚え書きしておきたいと思います。
こちらのプラグインはOpen Proxyからのコメント・トラックバックを拒否してくれるプラグインです。
「Open Proxyからのコメント・トラバ」=「送り主を知られたくない人達からのコメント・トラバ」と言う意味なので、これはさっくり拒否しちゃっても大丈夫そうです。

以下、「Magic White」さんのこちらの記事を参考にしています。

導入したプラグイン:「mt-dsbl.pl」「mt-tbping-dsbl.pl」

以下、自分用の覚え書きです。

  1. (ロリポップの場合)こちらのサイトから「Net::DNS」をダウンロードしてきて解凍する。
  2. 「lib/Net/DNS.pm」をMT本体のフォルダ内にある「extlib/Net/」にFTPソフトなどでアップロードする。
  3. プラグインを落としてくる。
    • 「mt-dsbl.pl」の場合
      bradchoate.com」さん:MT-DSBL より「mtdsbl-1_1.zip」をダウンロードしてきて解凍すると、pluginフォルダの中に「dsbl_deny.pl」と「dsbl_moderate.pl」の二つのファイルが入っているので、これを確認
    • 「mt-tbping-dsbl.pl」の場合
      blog.bulknews.net」さん:Open ProxyからのTrackback Pingを拒否するMTプラグイン に行くと、記事の中程に「mt-tbping-dsbl.pl」へのリンクが張られているので、この上で右クリック→「対象をファイルに保存」(winの場合)する。
  4. プラグインをMT本体の「plugin」フォルダにFTPソフトなどでアップロードする。
    この時、怪しいコメントがきた場合に、コメントの承認待ちとする場合は「dsbl_moderate.pl」を、思いっきり全部拒否する場合は「dsbl_deny.pl」をアップロードする。その辺はお好みで(私はdenyにしました)。

これでおしまいです。
元記事によると両方ともMT-Blacklist(超有名スパムブロックプラグイン。いろんな噂を聞くので私は使ってないけど。)との併用も可能だそうですので、導入してみる価値はあるかも知れません。

参考にさせて頂いたみなさま、本当にありがとうございました。

Google Adsense

Comments & Trackbacks : 9

Response from foofoo@あんけらそ2005 年 3 月 22 日 9時58分

Net::DNSですが、
tar.gz以外の形式でダウンロードできました?
サイト上でtar.gzしか見つけられなくて、
自分のWindowsマシンでは解凍できない圧縮形式なので
はてさてどうすべぇ、と考えてしまっているのですが・・・。

Response from foofoo2005 年 3 月 22 日 10時00分

先のコメントの送信者が「foofoo@あんけらそ」になっているぅぅ。
「あんけらそ」はもう閉鎖したサイトでございますので、
この名前は間違いです・・・。
IEのオートコンプリート機能、ムダに動きすぎ(^^;

Response from もそ2005 年 3 月 22 日 16時02分

■foofooさま
メルアド教えてくれればNet::DNS添付して発射しますよ?
連絡待ってますぅ。

Response from GAKU2005 年 3 月 23 日 0時38分

こんばんは~
もそさんの記事からは離れちゃいますが、tar.gz形式のアーカイブファイルですが、Windowsでも開くことできます。ご安心下さ~い >foofooさん

僕はLHAユーティリティ32という解凍ソフトを使っていますが、これは、tar.gz形式に対応したdllがあれば、tar.gz形式の圧縮ファイルも解凍できます。必要なdllは、「統合アーカイバプロジェクト」で入手できます。
→http://www.madobe.net/archiver/index.html

同じように、tar.gz用dllがあれば解凍できるという解凍ソフトは、他にもあります。ぜひお試しください。

Response from yujiro2005 年 3 月 23 日 1時06分

こんばんは。
記事参照ありがとうございます。
Open Proxy拒否は効果ありそうですね。

私の方はイタチごっこで、フィルタ文字列にない文字のスパムが時々襲来します。
が次第に普通の単語になってきました(笑)。

Response from みよたん2005 年 3 月 23 日 2時26分

こんばんわ。トラバ及び記事参考ありがとうございました。
MT-Blacklistに関しては、設置方法さえ間違わずに、使い方さえ分かっていれば問題なく使えます。
たしかにこのプラグイン使う事で、一部のプラグイン使えなくなったりとかはありますが。
なんで悪いうわさばっかし流れるんだろ。と使ってる側として思いました。(涙。)

foofooさん
解凍しなくてもいい方法もあります。
http://search.cpan.org/src/CREIN/Net-DNS-0.48/lib/Net/DNS.pm
に直接アクセスしてテキスト文章形式で保存。
ファイル名を「DNS.pm」にすればいけるはず。

tar.gz形式は、cpanで配布されてる物今後利用する場合は、解凍出来るようにしておいたほうがいいかと。

Response from foofoo2005 年 3 月 23 日 9時25分

>もそさん
ご心配かけてすみません。
以下の通り、自分で解凍できましたので
ご報告まで(^^;

>GAKUさま、みよたんさま
tar.gzはリナックス・ソラリス上でしか解凍したことなかったんで、
LHAユーティリティ32でも解凍できるの知りませんでした・・・。
アドバイスありがとうございます。
ウチでもLHAユーティリティ32使ってますので、
さっそくDLL入れて使えるようにしました。

Response from もそ2005 年 3 月 23 日 16時50分

■GAKUさま
わざわざアドバイスありがとうございます。
私はだったらそれくらい送るよ?という適当な対処をしてしまって(苦笑)。
自分の使ってるソフトを説明しろ!っつう話ですよね。

■yujiroさま
普通の単語のスパムはうちにも来ました(つД`)
ハウルの動く城がどーのこーのってやつ。
それでOpen Proxy拒否を最終兵器として投入してみたんです。
これを入れて以来は食らってないので、それなりに効果ありそうですね。

■みよたんさま
MT-Blacklistは例のコメント騒動の時にはずしまして、それが直でトラブルにつながったなどとは全然思っていないのですが、何か起こった時にプラグインの追加・削除で即対応できる単純なシステムの方が好みなので、再投入は見送らせて頂きました。
欠点も利点も知っているんですけど、なんかごちゃっとしてるのが初めから好きじゃなかったんですよねぇ(苦笑)

■foofooさま
はいぃ^^、よかったです。
小粋な皆様はみんな親切だからうれしいですよね。

Response from gigantic2005 年 6 月 10 日 23時35分

MT3.1 コメントとトラックバックのスパム対策

今までMTのスパム対策は、全てソースに直接書き加える方法を取っていたのだけれども、MT3.17にアップグレードした時に、一日400件のコメントスパムを食らってし…