« 2006年10月 | トップページ | 2006年12月 »
2006年11月22日
ぜろちゃんねる(0ch BBS Script)掲示板のスパム対策
1ヶ月ほど前から、うちのぜろちゃんねる掲示板に英文スパムが来襲するようになり、当初はDNSブラックリスト(DNSBL/RBL)で対処してたのですが、プロのスパム屋は新しいプロキシを次々と用意してくるわけで、ブラックリストがすべてを網羅できるわけはなく。それでも数が少ないうちはコマメに消してたのだけど、日増しにその数が増えて、やってらんねえ状態になったので、こんなふうにしてみますた、というメモ。
やってることは、2ちゃんねる BBQなどの任意のDNSBLサービスに登録されてるホストからの投稿を弾くのと、日本語文字(Shift_JISの2バイト文字)が本文に含まれない投稿を弾くこと(いわゆるひとつのBanAscii)。後者はURLだけのカキコとかも弾いてしまうわけですが、まあしょうがない。
ぜろちゃんねるスクリプトの改造は正直かなりマンドクセー('A`)わけですが、これなら改造が1箇所で済むし簡単な処理なのだけど、結構効果的なのではなかろうか、と。
追記@2007/01/30
- 0ch BBS Scriptの2007/01/24版でも確認。
- こちらを参考に、本文にAタグやBBCodeが含まれる場合、及びメール欄に@が含まれる場合も弾く処理を追加。
# 0ch BBS Scriptの2005/11/13、2006/02/27、2007/01/24版で確認
# test/module/vara.plファイル内の
# IsRegulation(規制チェック)サブルーチン(2007/01/24版なら296行目あたり以降)内の
# 適当なところ(例えば「# 規制ユーザ・NGワードチェック」とある行の前)に
# 以下の「...」に囲まれている箇所を追加
# エラー番号は既存のものを流用なのでエラーメッセージも既存のもののままです
# それではワケワカランと思われる場合は、test/info/errmsg.cgiに新しい番号とメッセージを追加し
# 以下の「return」の後に続く番号をそれと取り替えるとモアベター
sub IsRegulation
{
...
# 本文にShift_JISの2バイト文字が含まれていなければ
# 600エラー(NGワード)
if ($this->{'FORM'}->Get('MESSAGE') !~ /[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]/) {
return 600;
}
# 本文に<a~>または[url=や[url]が含まれていれば
# 600エラー(NGワード)
if ($this->{'FORM'}->Get('MESSAGE') =~ /(<a\b[^>]*?>|\[url(?:\s?=|\]))/i) {
return 600;
}
# メール欄に@が含まれていれば
# 600エラー(NGワード)
if ($this->{'FORM'}->Contain('mail','@')) {
return 600;
}
# IPアドレスが以下で指定するDNSBLのいずれかに登録されてれば
# 997エラー(PROXY規制)
# ブラックリスト鯖はお好みで
my @dnsbls = (
'niku.2ch.net',
'bsb.spamlookup.net',
'bbx.2ch.net'
);
$ENV{'REMOTE_ADDR'} =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
foreach my $dnsbl_host (@dnsbls) {
$dnsbl_host = "$4.$3.$2.$1.$dnsbl_host";
if (gethostbyname($dnsbl_host)) {
return 997;
}
}
...
}
で、昨日これを仕込んで以降24時間のうちに、以下のようなホストがスパムの投稿にやってきたわけですが、幸いすべて弾けた模様。エラーが103となってるものは「本文長すぎ」で、これは規制チェックより前に実施されるので、これに引っ掛かるヤツもいるのだけど、これで既に結構な数が弾けている。で、600エラーが本文に日本語文字が含まれなかったもの。ここまでですべて弾けてしまい、結局DNSBLのチェックにまではどいつも至ってなかったり。
| 来襲時刻 | エラー | ホスト名 | #1 | #2 | #3 | #4 | #5 | 国 |
|---|---|---|---|---|---|---|---|---|
| 11/21 20:29 | 103 | c-71-230-86-217.hsd1.pa.comcast.net | US | |||||
| 11/22 19:13 | 600 | bzq-84-110-225-57.red.bezeqint.net | IL | |||||
| 11/22 19:13 | 600 | bzq-84-110-236-82.red.bezeqint.net | IL | |||||
| 11/22 19:12 | 600 | bzq-84-110-231-119.red.bezeqint.net | IL | |||||
| 11/22 19:12 | 600 | bzq-84-110-233-25.red.bezeqint.net | IL | |||||
| 11/22 16:48 | 103 | 82.137.247.132 | yes | SY | ||||
| 11/22 15:00 | 103 | www.farmington.k12.mi.us | yes | US | ||||
| 11/22 13:22 | 103 | 84-123-102-217.onocable.ono.com | ES | |||||
| 11/22 12:11 | 600 | 200.29.137.217 | yes | yes | CL | |||
| 11/22 12:10 | 600 | 218.236.45.155 | yes | yes | yes | KR | ||
| 11/22 12:05 | 600 | S01060040ca37ccf6.cn.shawcable.net | yes | yes | CA | |||
| 11/22 12:05 | 600 | avquarantine.sec.kq.no | yes | yes | NO | |||
| 11/22 11:23 | 103 | proxy4-jan.integrity.com | yes | US | ||||
| 11/22 10:17 | 103 | 89-149-205-145.internetserviceteam.com | yes | DE | ||||
| 11/22 09:51 | 600 | 218.236.111.150 | yes | yes | yes | yes | KR | |
| 11/22 09:37 | 103 | 82.137.247.131 | yes | SY | ||||
| 11/22 07:50 | 103 | 94.190.189.72.cfl.res.rr.com | US | |||||
| 11/22 06:21 | 600 | ool-44c0fe41.dyn.optonline.net | US | |||||
| 11/22 06:02 | 103 | adsl-75-52-193-66.dsl.chcgil.sbcglobal.net | yes | US | ||||
| 11/22 04:11 | 600 | bzq-84-110-226-237.red.bezeqint.net | IL | |||||
| 11/22 02:27 | 103 | ulbcenter-04-b07.it-datacntr.louisville.edu | US | |||||
| 11/22 01:08 | 103 | riy01che02.ae.net.sa | yes | yes | yes | SA | ||
| 11/22 00:38 | 103 | 64.8.149.34 | US | |||||
| 11/21 23:56 | 600 | bzq-84-110-251-251.red.bezeqint.net | IL | |||||
| 11/21 23:56 | 600 | bzq-84-110-252-72.red.bezeqint.net | yes | IL | ||||
| 11/21 23:55 | 600 | bzq-84-110-241-44.red.bezeqint.net | IL | |||||
| 11/21 23:31 | 600 | 220.119.158.14 | yes | yes | yes | KR | ||
| 11/21 23:30 | 600 | 86.35.202.101 | yes | yes | RO | |||
| 11/21 23:29 | 600 | 211.207.215.84 | yes | yes | KR | |||
| 11/21 23:25 | 600 | 210.113.30.208 | yes | yes | yes | yes | yes | KR |
| 11/21 22:53 | 103 | 63-109-248-28.reverse.newskies.net | yes | yes | yes | US | ||
| 11/21 21:15 | 103 | 89-149-205-145.internetserviceteam.com | yes | DE |
上表の「#1~5」の欄は、各ホストについて以下の各DNSBLサービスでの登録の有無です。
- 2ちゃんねる BBQ - niku.2ch.net
- SpamLookup - bsb.spamlookup.net
- The Spamhouse Project - sbl-xbl.spamhaus.org
- SpamCop.net - bl.spamcop.net
- RBL.JP - all.rbl.jp
ご覧の通り、どのブラックリストにも登録されていないホストが結構あり、プロのスパム屋に狙われたら、やっぱしDNSBLでの規制だけでは不十分なんだよね、ということですな。
なお、2ちゃんねる BBQはDSBLでの登録状況も併せて応答するので、上表ではDSBLは端折ってます(なので、このふたつを併用するのは無意味です)。また、ちなみにどのホストも、2ちゃんねる BBX(bbx.2ch.net)には登録されていなかったので、こちらも上表では端折ってます。
参考になったり興味深く拝見したページ
- The Spamhouse Project: ROKSO(既知のスパム屋のリスト) - GIGAZINEの記事「世界中のスパムメールの80%がこの200人によって送信されている」の元ネタの元ネタ。
- The Spamhouse Project: Worst Countries - 本日現在のトップ10チャートでは、ニッポンがロシアを抑えて堂々3位!
- 自分自身のためのものづくりメモ: 掲示板spam対策
- 不正アクセスの発信地の国別統計をとろう!
- ぜろちゃんねる用BBQプラグイン
- opm.blitzed.org has shut down - DNSBLのひとつでしたが、鯖屋とトラブってお亡くなりになられたそうです。
» 「ぜろちゃんねる(0ch BBS Script)掲示板のスパム対策」の続きを読む
Category: ウェブ制作
Posted 2006年11月22日 23:38