掲示板スパムとの戦い

1.スパム出現(2005/12頃)
 遊びでサイトを立ち上げたのが2002年であり丸5年が経過しようとしている。この間、Niftyのメッセージボード、ノートブック、ココログ等々を立ち上げてきた。サイトを介したコミュニケーションツールとしてはメッセージボードという標準の掲示板ツールを使っていた。サイトの立ち上げ当初から、迷惑書き込み等々の存在は知っていたが、あのniftyが提供する掲示板サービス故に、スパムは排除してくれるものと当然思っていたのだが、2005年の末にスパム投稿を初めて発見した。
 この時は、月に数回程度であり、管理者モードで時折排除するという対応で済ませていた。甘えという訳ではないが、パソコン通信時代からの老舗のプロバイダーであるniftyが提供する掲示板サービス故に、スパムの排除はプロバイダー側でそれなりに対応するだろうという期待があったのは確かである。
 しかし、2006年に入ると週に数回のスパム投稿が目立つようになり、元々閑散とした掲示板故にスパムばかりが目立つ状態となってしまった。最初は自分の掲示板のみが対象か?とも思っていたが、同じくniftyの掲示板サービスを利用しているユーザーの掲示板をネットで見回ってみると、全く同じスパム投稿が為されている様子であり、スパム投稿のターゲットにniftyのメッセージボードサービスが選ばれてしまったんだなぁと判った。
 なお、週に数回のスパム投稿に曝されるようになっての対応としては、投稿直後に掲示板に反映させるでなく、一度管理者が目を通して反映可否を判断するように運営していた。
 niftyのメッセージボードサービスの弱点は、

1).掲示板アドレスが基本的に全て同じで、ある部分のみがユーザーのnifty IDに変わっただけである。
2).スパム投稿制限がプロバイダー側からは当時為されていなかった。
3).スパム対策等のCGIの組み込みが不可能である。

 という点が挙げられる。

2.プロバイダー(nifty)の対応(2006/6頃)
 一時期は利用頻度が少ないBBS故に閉鎖しようかな?とも考えていたが、遅ればせながらプロバイダーであるniftyがスパム対策に乗り出したこともあり、再び、投稿後直ぐに記事が反映させる設定に戻し運用した。niftyのスパム対策は、ロボット投稿を何らかの方法で判断して弾くというものであり、この対策によってスパム投稿は無くなり安心したのだが、それは今考えると束の間の安心だったようである。

3.メッセージボードからの離脱(2006/5)
 niftyのメッセージボードが無事だったのは僅か二ヶ月程であり、ついにメッセージボードからの離脱を決意した。決意したのは、同じくniftyのサービスであったnoteboookサービスが2006/5で終了予定というアナウンスが入り、日記代わりに使っていたnotebookをCGIを利用した日記に移行したのが切っ掛けでもある。なおnotebookサービスは当初のサービス終了予定日が延びた結果2006/8迄運用できた。
 niftyにCGI掲示板を設置するには、nifty側にCGI掲示板が設置できるような環境の準備が必要であり、この辺の整備を2006/4〜2006/5にかけて行った。自作CGIを設置するにはniftyは極めて不親切で制約が多いのが問題である。この時点で感じた問題は、

・CGI駆動で必須のPerlモジュールが全く準備されていないために、必要なライブラリー等は自分で準備する。

という問題だが、これはネット上で既にniftyでCGI掲示板を運用されている先人達の情報を収集する事で対応した。CGI掲示板はフリーのCGI掲示板を何種類か見繕い、nifty上で動作するようにソースコードの変更を行ったり、見栄えを比較したりして選んだ。選んだ掲示板は、最もメジャーのCGI掲示板であるYY-Boardと言うモノである。このYY-Boardはユーザー数も極めて多く、バージョンアップも盛んに行われており、初心者である自分が利用するには打ってつけの掲示板である。自分が利用したのはVer.5.8というモノだが、標準で或る程度のスパム対策機能が盛り込まれたものである。

4.CGI掲示板の改造と不具合(2006/9)
 YY-Boardを掲示板に用い運用する一方で、世間のスパム投稿に対する対応を見ていると、スパム対策は行う程良いという思いに駆られ、様々なスパム対策を掲示板に施していった。このスパム対策は、CGIのモジュールを追加することにより、何重ものスパム対策を施すものである。
 当初はYY-Boardのスパム対策のみだったものが、lunaさんとこのspamcheckのCGIを組み込んだりしている内に動作が緩慢になっていった。そして、時折、CGIの過負荷によるエラーが時折発生するようになり、2006/11には、CGIが巧い具合に動作しない場合が多い日も現れるようになった。この時の不具合はnifty側のサーバーの故障によるものだったらしいけど、そんな不調は後から判る事であり、最初にトラブルに見舞われたとすれば、ユーザーとしては不安が大きくなったりするものであり、過度なCGI対策の利用は控えた方が良いとの思いが強くなった。

5.HTML表示タイプ掲示板の導入(2006/11)
 先のように表示の度にCGIを駆動するのは、サーバーの状態によってはエラーが発生したりするのに嫌気が差し、閲覧や表示のみではサーバーの負荷を増やさずに軽快に動かすことを目的に、表示についてはHTML形式で行える掲示板の導入を決断した。心配毎と言えば、導入するフリーの掲示板は相当に古く、ユーザー数もYY-BOARDに較べると圧倒的に少ないモノであり、進歩の早いスパム投稿の手口に対応できるか?という事である。但し、掲示板の表示アドレスがメジャーな**bbs.cgiとかの名称で無い分、スパマー側の掲示板検索ロボットに見つかりにくいか?という淡い期待も持っていた。
 導入に際しては、表示用HTMLファイルを何処に設置するか?という事だが、メインサイトのHTMLファイルと同じサーバーに置くとメインサイトを作成しているソフトであるMicrosoft FrontPageでの記事のアップロード時に掲示板用ファイルが常に更新可否を聞いてくる事が面倒くさく、別のサーバー領域に置く事にした。ここで、念のためにHTMLファイルはパスワード制限が掛けれる領域において、メインサイトの更新作業とは独立させてある。
 スパマーからCGIがばれて直接アクセスされると意味は無いけど、表示ファイル自体を隠せる事が出来るんで気休め程度のスパム対策になるだろうという目論見だ。
 この対策により、軽快な動作を保ちつつ、スパマーからの攻撃にも曝されないという安息の状態に辿り着いた。この時は、これでOKと思ったのだが、この安息の日も半年程度しか続かなかったのである。

6.CGI動作のスパムフィルターの導入(2007/4)
 先の対策により半年は平穏に過ごせたのだが、2007/4になって再びスパム投稿が始まってしまった。掲示板の表示用HTMLファイルに入室パスワード制限を掛けても後の祭りである。直接CGIを駆動している様子であり、入室制限自体が無力化しているようである。当初は、スパム書き込みの件数は週に1回程度だったのだが、加速度的にスパム投稿が増大してきた。当初の対応は、フリー掲示板に標準添付の禁止ワード、アクセスIP制限程度で対応していたのだが、これでは手間が永遠に掛かりすぎるということで、掲示板の書き込み操作時に初めて動くCGI自体にトラップCGIを加える事で対策することにした。このCGIフィルターは『たけっぴろ』さん作のIPスパムフィルターというもので、スパムフィルターの類では日本最強とも言える類のモノである。このIPスパムフィルターの機能、組み込み後の掲示板の機能は、

1).日本以外の接続要求は原則的に全て拒否
2).サーバー名を逆引きして怪しいサーバーも全て拒否
3).その他に『たけっぴろ』さんの掲示板改造では、ダミーコントロール等々様々な処置が為されている。

と言うモノであり、素晴らしいモノだ。しかし、自分の掲示板にこれを利用しようとすると問題もあり、それは、

4).利用しているのがHTML表示形式の古いレアな掲示板ということもあり、簡単にインストールは出来ない。
5).
『たけっぴろ』さんのサイトでは@niftyでの組み込みに成功例が無い。
6).仮にniftyに組み込めたとしても、Socketサービスが利用出来ないために、機能に制限が生じる。

と言うことである。しかし、2).3).の機能はともかく、1).の機能には魅力を感じており、意地でも導入する事を決意して、どうにか動かす事が出来るようになった。勿論、日本以外の接続要求拒否以外にも掲示板本体側のCGIにも最近スタンダードとなった対スパム投稿機能を移植している。

7.現在運用中の掲示板(2007/5)
 以上のような経緯を経て掲示板を運用しているが、現掲示板の対スパム機能は次の通りである。

1).掲示板ページはHTML形式であり、そのページ自体へのアクセスにはID/Passwordが必要である。
2).『たけっぴろ』さんのIPスパムフィルターによって日本以外の接続要求を拒否している。
3).かな解析により、かな、カナが指定数以上連続して存在しない場合は、投稿拒否している。
4).投稿文中へのURLリンク数に制限を用い、制限を越えたものは投稿拒否している。
5).掲載禁止語句を辞書ファイルで提供し、サイトの主旨に則さない語句を含む本文があれば投稿拒否している。
6).投稿間隔制限、投稿サイズ制限、二重投稿制限、投稿はPOST限定、直CGI禁止制限といった制限は全て搭載している。

 このようなスパム対策によって、一応はスパム投稿が記事に反映されないようになっている。未だ完全でないが、思い付くスパム対策は随時搭載する予定だ。まぁ、現状のスパム対策によって、ほぼ100%のスパム投稿は遮断できてる。そのせいかしらないが、国内のスパマーからの投稿は殆ど無くなっている。海外からのスパマーからの投稿は相変わらず見受けられるが、国内からの投稿が減ってきたということは、投稿動作後に書き込みが出来ない事をフィードバックしているのかもしれない訳で、そうすれば、同様に海外からのスパムも減るかも知れない。但し、イタチごっこのようなモノで、対策を破って投稿する新手の手法が出てくるのは、間違い無いかも知れない。
 そういう訳で、不正アクセスは全てログに残してあるけど、毎日相当数の不正投稿が試みられているようであり、現在の対策が何時まで持ちこたえるか?が心配ではある。取り敢えずは、『たけっぴろ』さん製のダミーコントロール等々の機能を順次搭載する予定。

 考えてみれば、普通にYY-Boardを使っていたとしても良かったかもしれない。少なくとも、昨年末のCGI駆動時の不調はniftyの機器的な問題だった訳であり、その方が普遍的な対策が簡単に出来たようにも思う。まぁ、ユーザーが多い程、攻撃の対象ともなりやすいのは確かだし、それを防ぐには、常にバージョンアップし続けなければならないのかも知れない。
 将来的には、CGIを使う上で制限の少ないサーバーに引っ越すかも?というのが次なる選択肢の第一候補かも、、、。

 最新の情報だが、遂にniftyのメッセージボードサービスが終了の様子である。期限は2007/7末の様子であり、メッセージボードに対するSPAM投稿の防備が手詰まりになったのかもしれない。このサービスの終了に伴い、niftyの新しい掲示板サービスとして、無料レンタル掲示板というものが開始されるそうだ。この度はメッセージボードでのスパム投稿に懲りたのか、少し機能強化されており禁止IPアドレス、禁止ワードが登録できる仕様のようだが、CGIが組み込めるかどうかは不明。一応、無料ということなんで、掲示板は開設はしてみたけど、運用するかどうかは不明。パッと説明を読んだ限りでは、対スパム機能が貧弱かなぁというのが率直な感想だ。

〔ホームに戻る〕