スパム送信者のブラックリストを P2P 的に共有する:GOBLIN

Posted by
ぴろり
Posted at
2005/10/19 23:50
Trackbacks
関連記事 (1)
Post Comment
コメントできます
Category
MovableType カテゴリ

 GOBLIN は、スパム送信者のリモートアドレスを記録したブラックリスト(以下、BList)を参照し、スパムコメントおよびスパムトラックバックを拒否する実験的試みです。GOBLIN の特徴として、この BList をサイト間で P2P 的に共有し、他サイトにある BList を利用して自サイトの BList を更新・強化するという点が挙げられます。新出のスパム送信者の情報は、GOBLIN の似非 P2P ネットワークを伝播しながら、直接の共有関係にないサイトの BList にも連鎖的に反映されていきます。

このエントリーをはてなブックマークに追加  

GOBLIN って何?

 MovableType 3.2 には強力な対スパムプラグインが標準で添付しており、 公開されている DNS 式ブラックリスト(DNSBL)を参照して手軽にスパム対策を行うことができます。 また、Bulkfeeds では 独自の DNSBL と、ブラックリストへのフィードバックが行えるような仕組み を公開されており、 ユーザのレポートによってスパム情報を収集・蓄積するという興味深い方法が用いられています。
 これら DNSBL によるブラックリスト参照は、一種の クライアント・サーバ・モデル と見ることができますが、ここに一度、悪意のある偽のスパム情報が登録されてしまうと、 それを参照する全ての環境が同様に影響を受けてしまうと云う中央管理型のデメリットも考えられます。 (そのためか、これらの BList への登録は最終的には人手に頼っているようです)
 そこで、この BList をサイト間で P2P 的に扱ってみようという考えのもと、 MovableType のプラグイン+αを作成し、 これを GOBLIN(ゴブリン) と命名しました。 P2P を採用することの効果はイマイチ見えていませんが(ぉぃぉぃ)、 広く普及することで何かしら新しい BList の形態となれば面白いと考えています。

 ちなみに GOBLIN は 『General Open-ended BlackList Inheritance Network (汎用的な公開されたブラックリストの継承ネットワーク)』という一部無理矢理なフレーズのアクロニムです。

もうちょっとマシな命名でもあれば良かったんですが。

ブラックリストの共有

 各々のサイトは、自分が信頼した他サイトのブラックリストを参照し、その情報を自サイトのリストと結合します。 また自サイトのリストを公開することで、他サイトからも同様に参照されるようにしておきます。
 ここで、悪意のある偽のスパム情報(デタラメに作成されたリストなど)を P2P ネットワークに紛れ込ませないために、 自サイトが参照するリストは、そのサイト管理者が選択したものだけです。 サイト管理者は、リストを公開しているサイトの著名度やその内容を吟味した上で、 そのサイトの公開するリストが信頼できるものかを判断します。 例えば、誰かが悪意のあるリストを P2P ネットワークに紛れ込ませようとしても、 一朝一夕で作られた実の無いエントリが乱発されたようなサイトの公開するリストは信頼を得られず、 参照されにくいことでしょう。

ブラックリスト伝播の模式図

 また、ブラックリストの参照するレベルである"共有 POP 数(仮称)"を設定することで、 自サイトが直接参照していないリストを広範囲かつ間接的に参照することができます。 共有 POP 数を大きく設定すると、離れたサイトにあるリストを得ることができますが、 その分、途中で紛れ込んだ悪意のあるリストを拾う可能性も大きくなります。 逆に、共有 POP 数を小さく設定することで、自サイトが信頼したサイトに近い範囲のリストのみ 参照するようになります。

MovableType プラグインの導入

 アーカイブに含まれる mt-goblin.pl をエディタで開き、設定値を環境に合わせて変更した後、 MovableType の plugins ディレクトリにコピーします。 後述のブラックリストに記載された IP からのコメント投稿とトラックバックを拒否することができます。
;### Add the path string to your blacklist.
our @BListPath = ();
push @BListPath, '/home/magicvox/www/cgi-bin/mt/plugins/goblin/goblin.txt';
push @BListPath, '/home/magicvox/www/your/additional/blacklist.txt';
;### as much as like above...
↑テキスト形式で保存されたブラックリストへのパスを必要なだけ指定します。

ブラックリストの書式

 ブラックリストは単純なテキスト形式で、禁止したい IP を 一行に一つずつ羅列していきます。 また、他サイトのブラックリストから参照・追加された IP は、タブ区切りでその参照 URL の履歴を残しています。 下は共有 POP 数が 2 の場合のブラックリストの例です。
127.0.0.1
↑自サイトで追加したアドレス

192.168.1.1	http://www.example.com/hoge/blist.txt
↑http://www.example.com/hoge/blist.txt 経由で追加されたアドレス

192.168.100.100	http://www.AAA.com/blist.txt	http://www.BBB.com/blist.txt
↑http://www.BBB.com/blist.txt から http://www.AAA.com/blist.txt を経由して追加されたアドレス

 作成したブラックリストは他サイトから参照できるよう Web に公開することが望ましいです。 以下のようなステッカーでも作って目立つところに貼っておきましょう。 (もちろん、自サイトのブラックリストを公開する/しないの選択は自由です)

Ready to share my GOBLIN
GOBLIN 0.10 What's GOBLIN ?

ブラックリストの更新

 アーカイブに含まれる goblin.pl をエディタで開き、設定値を環境に合わせて変更します。 修正後、適当なディレクトリにアップロードした後、実行パーミッションを与えておきます。
;### 自サイトのブラックリストへのパス
our $BListPath = '/home/your/path/blist.txt';
↑mt-goblin.pl と同じ

;### 自サイトが参照する他サイトの公開ブラックリストの URL を列挙
our @BListList = (
	'http://www.example.com/~hoge/blist.txt',
	'http://foo.example.com/~hage/any/path/blist.txt',
);
↑ブラックリストを公開しているサイトを参照して、ブラックリストの URL を好きなだけ追加します

;### 共有POP数 (0 にすると外部参照しないので 1 以上を設定)
our $POPCount = 2;
↑"ブラックリストの共有"の節を参照してください。
※同じ IP が異なる共有 POP レベルにおいて出現した場合、自サイトにより近いデータで上書きされます。

 goblin.pl は Perl スクリプトになっているので、 シェルから実行するか、あるいは cron などで定期的に実行しリストを更新するよう設定します。 また、拡張子を CGI に変更することで、ブラウザからリストの更新作業を行えます。 この場合、パスワード認証を掛けるなどして第三者がアクセスできないようにしておきましょう。
 スクリプトを実行すると、@BListListで指定された他サイトのリストを取得し、 $BListPath で指定された自サイトのリストを更新にかかります。

ダウンロード

GOBLIN
0.11 new '05/11/15 0 bytes MovableType 3.1 以降 MovableType プラグイン、
更新用 Perl スクリプトを含む

 コメントフィルタおよびトラックバックフィルタは夫々、 Movable Type で言及リンクのない TrackBack ping を弾くプラグインMTBanASCII: コメントSPAM対策を MT3 に移植 より、コードを参考にさせて頂きました。

舞台裏

 MT の管理画面からブラックリストの更新作業が行えると便利。 あと、他サイトのブラックリストを参照する段も、 HEAD リクエストで内容が更新されていた場合のみ情報を取得するとか。 とにかく広く使ってもらえない限りは P2P ネットワークの意味が無いのもツライところ(´・ω・`)
このエントリーをはてなブックマークに追加  



関連記事/トラックバック (全 1 件中、最新 5 件まで表示しています)

Open MagicVox.net のスクリーンショット
タイトル
スパム検索からMovableTypeを守る
Trackbacked at
2006/06/22 23:34
from
Open MagicVox.net
概要
 先日、MovableType の管理画面からログを確認したところ、 "online poker"や"play roulette online"、"free b...

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。