I18N版(rev.923以降)に実装されています。
この機能を有効化する前に、必ず、このドキュメントを一読下さい。この機能を有効化することで、文書などの書き込み時に、秒単位で処理が遅延します。ご注意下さい。
Blocking SPAM
SPAM対策機能について、以下に説明します。
Splog(TrackBack SPAM)の対応や、
Referer SPAM、各種書き込みにおけるSPAM対策ができるようになります。
また、利用するブロックリスト(:config/spam/BlockList)は、各自で変更可能な仕組みとなっています
ので、SPAM検知の精度が悪いような場合、簡単に変更することも可能です。
また、管理者が利用する端末が SPAM扱いされて書き込み制限されないような対策
(除外リスト(ホワイトリスト)の登録)も可能となっています。
前提環境
このSPAM対策の仕組みを利用するためには、PukiWiki Plus! が稼動しているサーバから、
DNS(53番ポート)の利用が可能である必要があります。
インターネットへProxyサーバ経由でアクセスしているような環境の場合、考慮が必要です。
今すぐ、SPAM機能を有効にしたい
SPAMに困っているので、難しい解説は後にして、まずは有効にしたい。という場合は、
- pukiwiki.ini.php
- 以下の 0 の箇所を、機能を有効にするために 1 にして下さい。
/////////////////////////////////////////////////
// Blocking SPAM
$use_spam_check = array(
'page_view' => 0,
'page_remote_addr' => 0,
'page_contents' => 0,
'page_write_proxy' => 0,
'trackback' => 0,
'referer' => 0,
);
- もし、SPAMだと誤判定されたら
- コンテンツ管理者以上の場合は、強制的にSPAM判定が無効になります*1。
それでは困るという場合は、このドキュメントを最後までお読み下さい。
SPAM判定の仕組み
SPAMを判定する仕組みは色々ありますが、PukiWiki Plus! I18N で採用している方法は、
DNSサーバを利用してSPAMの判定をおこなっています。
DNSサーバを提供しているゾーンに、判定したいホスト名をサブドメインとして、
名前解決をさせてIPアドレスが取得できた場合(127.0.0.2などが引けた場合)には、
SPAMと判定する仕組みです。
したがって、とあるゾーンの登録されている情報の内容や精度によって、判定される内容が異なってきます。
また、ブロックリストには、大きく分けて2種類の使い方があります。
1つは、IPアドレスベースのブロックリスト(IPBL)です。
この方法では、IPアドレスを直接指定して名前解決するため、端末単位での判定となります。
もう1つは、ドメインベースのブロックリスト(DNSBL)です。
この方法では、ゾーン単位で正規化(a.b.co.jp と www.b.co.jp は b.co.jpとして1つ)して判定
するため組織単位での判定になります。
- 日本固有のリスト
- niku.2ch.net(IPBL)
2chで利用しているブロックリストです。この場合だと、2chと同じ制限が入ることになります。
- rbl.bulkfeeds.jp(DNSBL)
bulkfeeds.jp
で試験的にサービスしているブロックリストです。
機能の有効化
プロの手口まで考慮すると、DUL(ダイアルアップユーザリスト)のような対策まで行う必要があります。
とは言え、Referer も Trackback も、送信してきた端末の規制(IPアドレスでのブロック)まで
行うことはせず、送ってきた内容を検査するまでとしています。
- pukiwiki.ini.php
- 以下の 0 の箇所を、有効にする場合には、1 にして下さい。
/////////////////////////////////////////////////
// Blocking SPAM
$use_spam_check = array(
'page_view' => 0,
'page_remote_addr' => 0,
'page_contents' => 0,
'page_write_proxy' => 0,
'trackback' => 0,
'referer' => 0,
);
| 設定 | 内容 | BLの種類 | 備考 |
| page_view | 閲覧規制 | 管理者指定による | |
| page_remote_addr | 書き込み端末規制 | IPBL | |
| page_contents | 書き込み内容規制 | DNSBL | |
| page_write_proxy | Proxy経由での書き込み規制 | | rev1608から有効 |
| trackback | TrackBack (splog) | DNSBL | |
| referer | Referer SPAM | DNSBL | |
- 役割
- コンテンツ管理者以上の場合は、page_remote_addrとpage_contentsの制限が自動で回避されます。
役割についての詳細は、Documents/Roleを参照下さい。
- Referer
- Refererデータは、そもそも統計的利用のためにあり、信頼できるデータとは限らないという性質上、
検査する意味があるのかということもあります。設定は、各自にお任せします。
- TrackBack
- 昨今の TrackBack Ping を見ると、splog だらけなので、対策する必要があると思いますが、
今回の対応を組み込んでも回避は厳しいと思われます。
つまり、コンテンツとして関連性・派生性がないようなページかどうかという内容による判断が必要
となり、自動では行えません。ただし、SPAM的な用語をスコア式でカウントした場合には、ある程度の
splogを除外することができるかもしれませんが、今回の機能には実装されていません。
定義ファイル
各定義ファイルの書式
利用するブロックリストを定義します。Use の項目を 1 とした Zone しか利用しません。
IPアドレスベースのブロックリスト(IPBL)と、ドメインベースのブロックリスト(DNSBL)を分けて登録
します。ブロックリスト(BL)を各自で追加できるようにしています。
Use を増やせば増やすほど、処理時間がかかることを理解した上で、利用する Zone を決定して下さい。
秒単位での処理と認識して下さい。
- 使用項目
- 定義するラベル
- IP
IPBL のリストを定義します。
- HOST
DNSBL のリストを定義します。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| *IP
|Zone |Use|Listing|WebSite|h
|sbl-xbl.spamhaus.org | 1|Spam Source & Open Proxy|http://www.spamhaus.org/|
|bl.spamcop.net | 1|Content Based|http://www.spamcop.net/|
|opm.blitzed.org | 1|Open Proxy|http://opm.blitzed.org/|
|list.dsbl.org | 0|open SMTP relays|http://dsbl.org/usage|
|bsb.empty.us | 0|Blog Spam|http://bsb.empty.us/|
|bsb.spamlookup.net | 0|Blog Spam|http://bradchoate.com/projects/spamlookup|
|niku.2ch.net | 1|BBQ あらしお断りシステム|http://bbq.uso800.net/code.html|
|relays.ordb.org | 0|Open Relay|http://www.ordb.org/faq/#usage_dns|
*HOST
|Zone |Use|Listing|WebSite|h
|rbl.bulkfeeds.jp | 1||http://bulkfeeds.net/app/blacklist|
|psbl.surriel.com | 0|Spamtrap Driven or Automated|http://psbl.surriel.com/|
|spamtrap.surriel.com | 1|Spamtrap Driven or Automated|http://psbl.surriel.com/|
|sbl-xbl.spamhaus.org | 1|Spam Source & Open Proxy|http://www.spamhaus.org/|
|sbl.spamhaus.org | 0|Spam Source|http://www.spamhaus.org/|
|xbl.spamhaus.org | 0|Open Proxy|http://www.spamhaus.org/|
|multi.surbl.org | 1|Content Based|http://www.surbl.org/lists.html|
|bsb.empty.us | 0|Blog Spam|http://bsb.empty.us/|
|bsb.spamlookup.net | 0|Blog Spam|http://bradchoate.com/projects/spamlookup|
|cbl.abuseat.org | 0|Open Proxy|http://cbl.abuseat.org/|
|spam.wytnij.to | 0|Local and Personal|http://spam.wytnij.to/|
|ppbl.beat.st | 0|Local and Personal||
|blocked.asgardnet.org| 0|Local and Personal||
|
管理者が強制的に適用したい場合に登録します(rev1456から有効)。
ホスト名、IPアドレス、User-Agentによる定義が可能です。
- 稼動するタイミング
$use_spam_checkが page_remote_addr の書き込み端末規制の場合に適用されます。
- 定義するラベル
- IP
強制的に、書き込み禁止したい端末のIPアドレスを定義します。
帯域指定または、範囲指定が可能です。
帯域指定の場合は、開始のみ指定して下さい。
サブネットマスク省略時は、32 となります。
範囲指定の場合は、開始IPアドレスおよび終了IPアドレスを指定して下さい。
ex. 192.168.1.0/24
| 開始 | 終了 | 備考 |
| 192.168.1.1 | | |
| 192.168.101.0/24 | | |
| 192.168.1.0 | 192.168.255.255 | |
- HOST
ホスト名で登録します。後方一致となります。
| FQDN(後方一致) |
| pukiwiki.example.com |
仕組み的には、IPアドレスからの逆引きしたホスト名でチェックするため、Aリソースレコードが複数登録されているようなFQDNに対してのチェックはできません。逆引きできるホスト名のみでのチェックとなります。
- UA
User-Agent(ブラウザの種類)を登録します。
| Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.2) Gecko/20070301 Firefox/2.0.0.0 |
詐称できるブラウザもありますが、そうではない機器もありますので、そのような場合のみに効き目があります。
前述の :config/spam/BlackList と書式は同様です。
- 稼動するタイミング
$use_spam_checkが page_view が有効の場合、閲覧そのものを規制します。
真っ白な画面を戻すのみとなります。
ここにドメインを登録しておくと、ブロックリストの参照を行うことなく、常にホワイトリストと判断します。
ブロックリストを参照すると、DNSの問い合わせが発生しますので処理時間がかかります。
ここに既知なドメインを追加することで、DNSでの問い合わせを回避します。
- 登録するドメイン
- トップレベルドメイン(TLD) で定義されるドメイン+1レベルとなります。
例えば、www.example.co.jp なら、TLD では、co.jp となりますので、example.co.jp を
登録することになります。
- 定義するラベル
- LIST
問い合わせを回避させたいドメインを定義します。
0
1
2
3
4
5
6
7
8
9
10
11
12
| *LIST [#pf70daff]
**goo.ne.jp [#b84f4ca4]
--TRUE
**google.com [#k84806e3]
--TRUE
**googlebot.com [#c220a3d1]
--TRUE
**msn.com [#z2969a4c]
--TRUE
**yahoo.co.jp [#g8d97d61]
--TRUE
**yahoo.com [#kfff7206]
--TRUE
|
- TLDのレベル
| レベル | トップレベルドメイン(TLD) | 採用されるドメイン(例) | 備考 |
| 1 | com,net,org,edu,gov,mil,int,biz,info,name,pro,museum,aero,coop | X.biz | TLD |
| 2 | arpa | X.e164.arpa | Infrastructure TLD (e164.arpa, ip6.arpa, in-addr.arpa) |
| 2 | | X.or.jp | ccTLD(国単位のドメイン) |
- 定義するラベル
- IP
グローバルなIPアドレスで、特定のセグメントを常時許可したい場合に定義して下さい。
プライベートアドレスは、全てホワイトリストへ自動で登録されます。
また、Documents/Logging における nolog_ip として、ロギングしないIPアドレスを
登録しているホストも、ホワイトリストへ自動で登録されます。
- HOST
常時許可したい特定ホスト名を定義します。
部分一致となります。
- DYNAMIC_HOST
IPアドレスベースでのブロックリストのチェックにおいて、動的なIPアドレスなために
登録できないような場合、ここに定義したホスト名(FQDN)からIPアドレスを求めて、
ホワイトリストに追加します。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| *IP
グローバルIPで、特定のセグメントを常時許可したい場合に、定義して下さい。
プライベートアドレスは、全てホワイトリストに自動で登録されます。
また、[[Documents/Logging]] で、nolog_ip として、ロギングしないIPアドレスを登録している
ホストも自動でホワイトリスト扱いします。
|IP/SubNetMask|h
|192.168.16.32/26|
|192.168.0.32|
*HOST
常時許可したい特定ホスト名を定義します。
部分一致となります。
|Host Name|h
|pukiwiki.cafelounge.net|
*DYNAMIC_HOST
IPアドレスベースでのブロックリストのチェックにおいて、動的なIPアドレスなために
登録できないような場合、ここに定義したホスト名(FQDN)からIPアドレスを求めて、
ホワイトリストに追加します。
|Dynamic Host Name|h
|example.or.jp|
|