[スポンサーリンク]

スパムコメント対策

お気づきの方も多いと思いますが、この数ヶ月くらい、当サイトにスパムコメントが大量に書き込まれています。最初はかなりエグイ内容のアダルトサイトと思われるWebへのリンクでした。

実は私のメールアドレスやこのサイトのURLをかたって、出会いサイトやSMクラブなんかにメンバー登録しているらしい輩は前からいましたし、政治的な問題を(とりわけ「左」のスタンスで)扱うサイトは荒らされやすいもんだと思ってましたから、最初のうちはこれもまあそういうしょーむない類かなと思ってのんびりしてました。それで「さっくり即消し」で対応しつつ、基本的に無視してきたわけです。

しかしこれはどうもそれだけではないかも?と思ったのは、先日、海外のオンラインカジノへのリンクを貼りつけただけのコメントが実に250件も投稿されていた時です。まあ、MovableTypeはコメント管理機能が優れているので、こんなことされてもボタン一つで(正確には2クリックくらいで)一気に全部削除できてしまいます。よってさほどの負担でもないけど、ウザイことは確かです。

実はこれ、ある種のプログラム(スクリプト)によって、自動的かつ無差別に、世界中のブログを巡回して書き込まれているものらしいのです。私の250件なんてまだまだ甘ーい!というか、こちらのErianeさんなんか、なんと13000件(!)ものスパムが一度に登録されていたということです。一昔前の非力なサーバーならダウンしかねない数字です。

その多くがコメントスパム(スパムコメントとも言いますが)として、不要なコメントを、MovableType の comments.cgi へ直接流し込むスクリプトで、多くが英文のポーカーとかを紹介するコメントスパム行為を行うものです。
コメントスパム 対策いろいろ」(話題のナレッジスペース)より

なんとブログ本文にアクセスすることすらなく、comments.cgi に直接アクセスしていたとは、なんちゅー横着な!いくらスパムでもスパムなりの最低限の礼儀(?)というものがあるでしょう。せめてカウンターくらい回せっちゅうねん(笑
アクセスの少ないブログなんか、カウンターはゼロのままでアダルトサイトへのスパムコメントだけが100件以上書き込まれていたら、顔に縦線がはいって「俺っていったい・・・」のちびまる子ちゃん状態になってしまいます。私だったら世をはかなんで出家するか逆に犯罪に走るかも(^-^;

このスパムコメントの書き込みならぬ「大量流し込み」は、ここ数ヶ月で日本語のブログに対する被害も急速に拡大したようです。
ある程度は人気というかアクセス数があり、自分のサイトにMovableTypeを自力でインストールして動かしているようなブログが狙われているようなので、まあ大量のスパムコメントがきたら「これで俺もメジャーだ!」とも言えるのですが、そんな呑気なことばかりも言っていられません。いくら何でも一日で13000件のスパムとなると、さすがに顔に縦線入ってしまいます。

これはもう転ばぬ先の杖。大手のブログサービスを利用しているならサービス提供会社の仕事ですが、自力でMovableTypeをインストールして動かしている者は、自衛のためにも自分でできることはしておかねばと思い、ちょっと考えてみることにしました。

考えてみた対策いろいろ

コメントを受け付けない

究極の方法であるが、私にとっては論外。まだコメントスパムを受けていたほうが良いくらい。

TypeKey認証を要求する/管理人が承認したコメントのみ掲載する設定にする

どちらも標準の機能で可能な最大の対策ですが、ブログ全体が非常に閉鎖的な印象になってしまいます。そこでこれは万策尽きた後の「最後の手段」として残しておきたい。

1月にリリースされるMovableType3.14を使う

米国でMovable Type 3.14の提供を開始しました。大量のスパムを受信したときのサーバー負荷を軽減するための変更などを実施しました。
日本では現在、バージョン3.121をご提供していますが、2005年1月中に日本語版のバージョン3.14をお届けする計画です。

これはスパムそのものをはじくものではないようです。しかし「サーバー負荷の軽減」は他のユーザーに迷惑をかけないためにも必要なものですので、これはこれで導入の予定。

MovableTypeの設定画面から、投稿を禁止するIPリストを手作業で一件づつ入力する

これは面倒くさいのでやらなかった(笑
第一、スパム業者も馬鹿ではない。あらゆるプロクシサーバーを経由して同じコメントでもほぼ一件づつIPを変えているし、そのたびに全部を入力してもイタチごっこです。やはり日々このブラックリストを更新しつづけないと、あまり効果はあがらないらしいです。

半角英数字のみのコメントをブロックする

コメントスパムの送信を引き受けているのはほぼ海外の業者であり、送られてくるスパムは英語ばかりです。そこでブログを「鎖国」し、英語のみのコメントはすべてエラーにしてはじいてしまおうというものです。日本人の多くがこの方法をとっているようです。
確かにこの日本語のブログを見て、しかもコメントしようとする外国からの訪問者はほぼ皆無に等しいとは思います。やり方も簡単で、今のところは絶大な効果があるらしいです。
しかしやはり「アクセスするユーザーを制限する」という方向には行きたくないし、そのうちには英語のページも作りたいと思っているので(いつのことやら!)この方法は採用しないことにしました。
また、この方法を多くの人がとるようになってきたためスパム業者も学習し、コメント内にアスキー文字をおりまぜるという手法でこのブロックを突破しているようです。近日中には効果の少ない方法になるかもしれません。

コメント投稿時にパラメータを要求する

探してみると、「Comment Spam Quick Fix」に素敵なアイデアのコメントスパム対策が紹介されていました。その内容とは、コメント投稿時にユニークなパラメータを付加することで、そのパラメーターが無いと投稿を、comments.cgi が受付けないという仕組みです。単純ですが効果は絶大!

そこで最初にやってみたのがこの話題のナレッジスペースさんが紹介されている方法。
ちゃんとテンプレートにパラメーターを組み込み、mt-comments.cgi も改造しました。ところがテスト投稿してみると、全部にエラーが出てはじかれてしまう。ソースを見てみると、テンプレートにinput type=”hidden”で組み込んだはずのパラメータが消えている!
もう一度テンプレートにちゃんとパラメータが追加されていることを確認し、何度も保存、再構築しましたがやはり駄目なので、mt-comments.cgi を元に戻し、別の方法を考えることにしました。しかしやっぱり改造前には元のファイルをちゃんとバックアップしておかなあかんね。

プレビューボタンのみ表示してhashを仕込む

これはMusings: Forcing Comment Previewsで紹介されていた方法で、コメントをいきなりPostすることを許可せずにプレヴューしないとPostできないようにするという方法です。そしてプレビュー画面にhashでランダムに表示させたキーをhidden属性に入れておくことでこれが入っていない場合投稿できなくすると言うものです。

次にやってみた方法がこれです。上記のGoing My Wayさんの記事で導入方法が詳しく解説されています。
やはり手順通りにちゃんとやったはずなのですが、テスト投稿しようとすると何回やっても「プレヴューしてから投稿せよ」みたいな英文エラーが出てはじかれてしまいます。ちゃんとプレヴューしてるやんけ!と叫びつつ、何度もプレヴューしますがやはり駄目。もうちょっとあれやこれやすれば導入できたかもしれませんが、あんまりComments.pmの改造なんて、理屈のわかっていない者が深入りするのはやめておこうと思い、あきらめることにしました。

MT-Blacklistを使う

・コメントとトラックバックの両方をスキャンして、コメントスパム・データベース(=ブラックリスト)に登録されているアドレスなら受け付けない
・1日1回コメントスパムサイトのデータベースを参照してブラックリストを自動で更新
・14日以上前の記事にコメントが付いた場合は、自動的に「承認要求」モードに切り替える
・URLを多く含むコメントも自動的に「承認要求」モードに切り替える。

これはMovableTypeのプラグインの一つでかなり強力。よほど導入しようかと思ったが、英語版しかないのと、まだベータ版なので、少し様子をみることにしました。意図しないブログが全部削除されてしまったり、トラックバックが文字化けするなどの症状も報告されているようです。また、ブラックリストがどんどん増えてくると、読み込みや処理が重くなるのでは?と思っています。
激しくコメントスパムに悩まされていて、是非導入したいという方は、PRO’ LOGUEさんのサイトやTak’s ウエブログさんの記事のまんまやれば大丈夫みたいです。

mt-spamstop_20041107を使う

ベリー・ベリー・シンプルなコメントスパム対策用のプラグインです。mod_perl 環境でも使用可。
概  要: アンカータグを含むコメントスパムをブロック
利用方法: Plugins フォルダに入れるだけ

結局、私が導入したのはこれ。MT-Blacklistのような豊富な機能はなく、URLアンカーリンクのみをはじくというシンプルな思いつきが素晴らしい!コメントスパムは必ずURLアンカーリンクを含んでいますので、これだけで確実にはじくことが出来るでしょうし、当サイトではもともとコメントにHTMLの使用を許可してないのでぴったりです。何よりもPlugins フォルダに放り込むだけという手軽さがイイ!どうしてもコメントにHTMLをタグを許可したいという方以外は、これが一番のおすすめだと思います。
ただ、blog:N@TURE BRAINさんのレポートによるとURLを自動リンクに設定している場合、URLの含まれるコメントを書き込んで「確認」を押し、プレビューするとリンクタグに変換されてしまい投稿出来なくなるということです。仕方なくうちではURL自動リンクを解除しました。これは残しておきたかった機能なので、ちょっと残念かも。

//////////////////////////

しかしまあ、調べてみても、みなさん「今度という今度は許さん」「むかむかする」「爆撃がはじまった」「うちみたいなところにまで!」と一様に腹にすえかねる様子。そりゃそうだ。少なくても20件、多くて数百のゴミコメントを一度に突っ込まれた日にはねえ。

どうもやつらの目的はメールなどの「本来のスパム」のような「広告」ですらないらしい。やつらはオンラインカジノなどのシステムを提供するサイトに登録し、自分のカジノやアダルトページのランキングをあげて、表示の上位にくるためにやっているらしいのだ。もともとが「不道徳」な内容だからイメージが下がるなんてどうでもいいし、上位表示さえされてしまえば本来の「お客さん」が呼び込めるので、スパムを送られた人が腹をたてても、そんなことはどうでもいいのだ。だからリンクタグを無効にしてしまえば、たとえこのブロックを破ってスパムを書き込んでも効果は半減以下となる。

防ぐほうも上記で紹介した方法以外に、投稿欄にチェックボックスをつけて投稿する時にチェックしないと送信できないとか、使い捨てのパスワードを入力させるようにするなど、わりと効果がありそうな方法が編み出されている。
ざっと見渡したところでは、みなさんこの問題については情報を公開・共有して他の人の参考にもしてもらおうという姿勢が見えて気持ちがいいです。これらのサイトの皆様に心からの感謝と敬意を表したいと思います。私のこのエントリーも、誰かの参考になれば幸いなのですが。

コメントを見る

  • mt-comments.cgiをリネームする方法がありますよ。
    スパムコメントは、mt-comments.cgiを決めうちしてきてるようなので、mt.cfg中のmt-comments.cgiをmt-com.cgiとかに直してmt-comments.cgiをmt-com.cgiにリネームする。http://blog.bulknews.net/mt/archives/000927.html

  • 情報コメントありがとうございます。その方法を書いておくのを忘れていました。
    mt-comments.cgiのお名前変更作戦については、スパマー側からする「対策」が進みつつあるらしいといことだったので、ほとんど調べませんでした。ともかく、できることをいろいろ試してみるしかないですね。
    けどやはりURLが自動リンクされないのは面倒だなあ。

  • TBありがとうございました。
    このように多くの方法を試した内容は、多くの方々に役立つものとなりそうですね。
    とても参考になります。

    私が試したCGIの改造は上手く機能しなかったようですが、私はこれで完璧に無くなり、不快な思いすることもなく毎日が少し楽になりました。
    拝見する限りでは、input type="hidden”のタグのダブルコーテーションが、記事内のコメントでは"半角”全角になっていますが、テンプレートに記述した"hidden”が消えてしまうという事は、記述に間違いがあるように思えます。
    今後試す機会があれば、確認してみてはいかがですか。
    今後ともよろしくです。

  • はじめまして。
    御記事を参考にさせていただきました。
    コメントスパムを扱った記事ということで、トラックバックを送らせていただきます。