Top | BBSantispam

ASKA BBS spam 対策改造

最新版: version 1.2 (2006/03/14) 改定履歴
KENT WEB 様の ASKA BBS に、自作の 掲示板用アンチスパムライブラリ BBSantispam を組み込みました。
ASKA BBS 標準の spam 対策機能
追加機能
CGI引数名のランダム化 | 英字のみの投稿禁止 | 不適切な語句を含む投稿の禁止 逆引きできないホストからの投稿禁止 | 逆引きで得たホスト名が正引きできない場合の投稿禁止 | ホスト名・IPアドレスのホワイトリスト | コメント中のURL数の制限 | フォーム表示から投稿までの最少時間の設定 | GET/HEAD以外での記事表示の禁止 | おかしなHost:ヘッダの拒否 | おかしなReferer:ヘッダの拒否 | URLの自動リンクに rel="nofollow" を挿入する | spam 投稿のログ作成
インストール・設定
必要なもの | 手順
うまく動作しない時は
著作権とか
無保証です
ダウンロード

ASKA BBS 標準の spam 対策機能

ASKA BBS 3.3 には標準で「ホスト名やIPアドレスでのアクセス制限」「連続投稿制限」「他サイトから投稿排除」といった機能があります。

追加機能

CGI引数名のランダム化

CGIの引数名としてランダムな文字列を使用します。

オリジナルの ASKA BBS は、例えば名前の引数名は name、本文のは comment というように、引数名が固定されています。 この場合、aska.cgi に POST のみを行うような単純な spam 投稿ロボットにすら狙われてしまいます。

またボットネットを利用していると思われる海外からの spam 投稿で、

という動作をするものがありました。

これらへの対策として、CGIの引数名としてランダムな文字列を使用します。

この機能は「投稿キー」と主旨が似ています。 またこの機能の副作用として「掲示板を表示してから1時間以内に投稿する必要がある」という制限が出てきますが、実運用にはほとんど影響はないと考えています。

英字のみの投稿禁止

英字のみの投稿を禁止します。

(主に海外(英語圏)からの)英語の spam 投稿を防ぎます。 日本人を対象とした掲示板を運用するのならば問題ないでしょう。

不適切な語句を含む投稿の禁止

不適切な語句(禁止ワード/ブラックワード)を含む投稿を禁止します。

逆引きできないホストからの投稿禁止

逆引き(IPアドレス→ホスト名への変換)ができないホストからの投稿を禁止します。

海外の ISP には逆引きを設定していない所が多いです。 それを利用し、逆引きできないホストからの投稿を拒否することにより、海外からの spam 投稿を防ぎます。

国内でもたまに逆引きできないホストがあったりしますが、それは後述の「IPアドレスのホワイトリスト」を利用してください。

この機能は「ホスト名やIPアドレスでのアクセス制限」と似ていますが、特に登録しなくても効果がある反面、逆引きできてしまうISPには効果がありません。 組み合わせて使うといいでしょう。

逆引きで得たホスト名が正引きできない場合の投稿禁止

逆引きは設定されているものの、逆引きで得られたホスト名に対する正引きがちゃんと設定されていないホストからの投稿を禁止します。 (ただし逆引きと正引きの一致までは検査しません)

海外の ISP には適当な逆引き情報を設定している所もあったりします。 それを利用し、海外からの spam 投稿を防ぎます。

ホスト名・IPアドレスのホワイトリスト

ここで登録したホストは「CGI引数名のランダム化」の制限が緩和されます。 (ワイルドカード対応、半角スペースで区切って複数列挙可能)

例えばある組織 example.jp からのアクセスが gw1.example.jp 〜 gw10.example.jp という複数のゲートウェイに分散されているとします。 また example.com という組織も同じようになっているとします。 これらからの投稿を許可するには

white_host=*.example.jp *.example.com
と指定します。

通常は gw1.example.jp からのアクセスと gw2.example.jp からのアクセスには異なるCGI引数が使用されますが、 上記の設定をすると *.example.jp にマッチするホストからのアクセスには同じCGI引数が使用されるようになります。

この機能は逆引きを詐称されると回避されてしまいますが、そこまでやる spammer はほとんどいないかと思います。

コメント中のURL数の制限

コメント中にURLが大量に記載されている投稿を禁止します。

フォーム表示から投稿までの最少時間の設定

フォームを表示してから一定時間経たないと投稿を受け付けないようにします。

aska.cgiにアクセスしてフォームを取得した直後に投稿を行うタイプの spam 投稿ロボットからの投稿を防ぎます。

GET/HEAD以外での記事表示の禁止

GET/HEAD以外のHTTPメソッドで記事表示することを禁止します。

現在当方にきているspam投稿ロボットが、最初にとりあえずPOSTメソッドでアクセスすることが多いので、この機能を追加してみました。

おかしなHost:ヘッダの拒否

環境変数 HTTP_HOST (HTTPのHost:ヘッダ)に通常ありえないホスト名や文字列が入っている場合に、投稿を拒否します。

おかしなReferer:ヘッダの拒否

環境変数 HTTP_REFERER (HTTPのReferer:ヘッダ)に通常ありえないリファラーや文字列が入っている場合に、投稿を拒否します。

URLの自動リンクに rel="nofollow" を追加する

「URLの自動リンク」を有効にしている($autolink = 1)場合、リンクに「rel="nofollow"」という属性を追加します。

Google・Yahoo!・Microsoft(msn)など大手サーチエンジンは、この属性が含まれているリンクをページの重要度(Googleでいう所のページランク)の計算から除外します。 つまり spam を投稿しても検索結果の順位向上に繋がらなくなるので、spammer の攻撃する気を多少なりとも削ぐことができるかもしれません。 (単に URL を撒き散らし掲示板の訪問者に踏ませるのが目的の場合はあまり意味がないでしょうけど)

spam 投稿のログ作成

spam と判断した投稿のログを作成します。

spam と判断した投稿を、独立したログファイルに保存することができます。 形式はタブ区切りのテキストファイルで、項目は順番に次の通りです。

このログを使用して、先回りして禁止ワードを設定したりアクセス制限を行ったりという対策が取れるかと思います。
ログファイル閲覧用のサンプルCGIはBBSantispam.pmのアーカイブに含まれていますが、そのCGIはアクセス制限などは一切考慮されていませんので、ご利用の際は などを行ってください。

インストール・設定

必要なもの

オリジナルの ASKA BBS が動作する環境に加えて、perl の Digest::MD5 ライブラリが必要となります。 比較的新しい perl ならどちらも標準で提供されていると思います。

手順

  1. まずは同じバージョンのオリジナルの ASKA BBS (3.3かそれ以降のバージョン)をインストールし、動作することを確認してください。 インストール方法はASKA BBSのページをご参照ください。

  2. 当サイトからアーカイブをダウンロード、展開します。
  3. アンチスパム機能について BBSantispam-config.cgi で設定します。 具体的な設定方法についてはBBSantispam.pmマニュアルのCONFIGURATIONの章をご参照ください。
  4. Webサーバに転送します。
    aska.cgi (当方で配布しているもの)
    古い aska.cgi と挿し替える場合は、先頭部分の ASKA BBS の設定を、既存のものに合わせて改めて変更してください。
    BBSantispam.pm , BBSantispam-config.cgi
    aska.cgiと同じパーミッションで転送します。
    spamlog.cgi
    askalog.cgiと同じパーミッションで転送します。(spamのログを取る場合のみ必要です)

  5. 掲示板が正常に動作することを確認してみてください。 また Webブラウザで掲示板の HTML ソースを表示させ、CGI の引数が次の例のようにランダムパターンになっていることを確認してみてください。
      <td nowrap><b>おなまえ</b></td>
      <td><input type=text name=a046da9e160548ba74df0ff493d1afd70 size=28 value=""></td>
    

うまく動作しない時は

オリジナルの ASKA BBS で動作確認をしていない。
→まずはオリジナルの ASKA BBS (3.3かそれ以降のバージョン)が動作することを確認してください。
perl のライブラリ(Digest::MD5)がない。
→ISPやレンタルサーバを利用している場合はそちらに確認してください。 自宅サーバ等の場合は自分が利用しているOSのコミュニティに相談してください。
エラーを確認する。
ISPのレンタルスペースやレンタルサーバの場合はエラーメッセージを確認できなかったり、Webサーバのログを見れない場合があるかと思います。 その場合はこのprinterror.cgiを利用してエラーメッセージを表示させ、解決を図ってください。

著作権とか

BBSantispam.pm その他 BBSantispam 関連ファイル、aska.cgi の改造部分
著作権は主張します。
Copyright 2006, HIRAMOTO Kouji. All Rights Reserved.

コードやアルゴリズムなどの流用は自由に行っていただいて構いませんし、 特に連絡もいりません。 しかし、丸々パクって自分の著作であると主張したりというような 恥ずかしい行為だけはご遠慮ください。

それ以外の aska.cgi オリジナルの部分
ASKA BBSに準じます。 ASKA BBSの権利などについては「CGIスクリプト利用規定」をご参照ください。

無保証です

ダウンロード

ダウンロードの前に「CGIスクリプト利用規定」をご一読、ご理解いただいた上で、ご利用ください。

改定履歴

ASKA BBS 3.3 spam対策改造版 (version 1.2) (2006/03/14)