DNSBLクライアントのライブラリdnsbl_clientをGithubに置きました。
komagata’s dnsbl_client at master ? GitHub
Install:
% sudo gem install komagata-dnsbl_client -s http://gems.github.com
Usage:
require 'dnsbl_client'
DNSBL::Client.new('list.dsbl.org', 'niku.2ch.net').listed? '61.211.32.39' # safe ip
=> false
DNSBL::Client.new('list.dsbl.org', 'niku.2ch.net').listed? '78.157.143.202' # spam ip
=> true
2chのDNSBL、BBQ用のライブラリも同梱してます。
require 'dnsbl_client'
DNSBL::BBQ.listed? '61.211.32.39' # safe ip
=> false
DNSBL::BBQ.listed? '78.157.143.202' # spam ip
=> true
何で作ったのか
人への嫌がらせ方法も進化したのか、「玄関前に猫の死体」から「ピザの大量注文」になり、最近では「お墓の資料の大量注文」というのもあるようです。
仕事で霊園(お墓)のサイトをやっています。そこでは、お墓を買う予定のある方が興味のある霊園(を運営する石材店)にフォームから資料請求できるようになっています。
この資料請求はお墓の購入にほとんど直結するといってもいいような確度を持つ大事なものです。(お墓は高いすからね)
普通は特定の市、区全体にカラーの広告を配布してやっと1件、2件獲得できる。それがお墓の資料請求なのです。
で、やられました。お墓の資料の大量注文。オープンプロクシ経由でゲイバーに。
そのプロクシ:
% nmap xxx.xxx.xxx.xxx
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2008-09-20 20:41 JST
Interesting ports on xxx.xxx.xxx.xxx:
Not shown: 1655 closed ports
PORT STATE SERVICE
21/tcp open ftp
53/tcp open domain
80/tcp open http
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
157/tcp open knet-cmp
179/tcp filtered bgp
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
554/tcp filtered rtsp
593/tcp open http-rpc-epmap
636/tcp open ldapssl
1026/tcp open LSA-or-nterm
1027/tcp open IIS
1050/tcp open java-or-OTGfileshare
1720/tcp filtered H.323/Q.931
1723/tcp open pptp
1755/tcp filtered wms
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
7070/tcp filtered realserver
8080/tcp open http-proxy
8443/tcp open https-alt
Nmap finished: 1 IP address (1 host up) scanned in 65.058 seconds
Windowsなのでスパムメールより主にプロクシとして日本から便利に活用されてるホストみたいです。
追跡を断念して今後の予防策を調べてみたところ、知ったのが2chで使っているDNS BlacklistのBBQです。
DNSBLはスパムメール対策としてよく使われるみたいですが、スパムメール対策としては効果は微妙なようです。ですが、BBSやコメントスパム対策にはかなり効果がありそうです。
荒らしの総本山といえる2chのデータを元にメンテナンスされているBBQのブラックリストは日本で使うには一番の品質なんじゃないでしょうか。実際、上記のプロクシのIPも登録されています。
実装の方は、Apacheで直接DNSBLを使えるモジュールもありますが、完全に弾くだけでなく、どこかに退避させたりしたいのでアプリの中から使いたいところです。PHPではPEARにNet_DNSBLというライブラリがあるみたいです。Rubyで見当たらなかったので作ってみたというわけです。
まだテストもなくしょぼいコードなので何かあったらご指摘(もしくはpush)いただければと思います。
参照: