これはすでにメンテナンスされていない旧バージョンです。最新版をご利用ください。●要旨
Xoops Protector は、XOOPS2 を様々な悪意ある攻撃から守るためのモジュールです。
このモジュールでは、以下の攻撃を防ぎます。
- DoS
- 悪意あるクローラー(メール収集ボットなど)
- SQL Injection
- XSS (といっても、ごく一部のパターンだけですが...)
- システムグローバル変数汚染
- セッションハイジャック
- ヌルバイト攻撃
- ディレクトリ遡り攻撃
- いくつかの危険なCSRF (XOOPS 2.0.9.2以下に存在するもの)
- Brute Force (パスワード総当たり)
- 拡張子偽装画像ファイルアップロード (すなわち、IE Content-Type XSS)
- 実行可能なファイルをアップロードする攻撃
- XMLRPC関連
これらの攻撃からあなたのXOOPSを守り、ログに記録します。
ただし、このモジュールはあくまで、最大公約数的な防御しか行いません。
一部の3rdパーティモジュールに見られるような穴の一部は防げるかもしれませんが、すべての穴を防ぎきるものではなく、過信は禁物です。
その限界は承知の上で、すべてのXOOPSユーザーに対して、インストールを
強くお勧めします。
●AntiDoS-P との関係
このモジュールの前身は、AntiDoS-P という名前でしたが、すでにDoS対策だけではなくなっていること、コードも全面的に書き直したことから、新たに Xoops Protector と名付けています。
また、モジュールとしては独立していますが、AntiDoS-P の機能はすべて Xoops Protector が引き継いでいますので、AntiDoS-P はアンインストールなされることをおすすめします。
●利用方法
通常のモジュールと同様にインストールして下さい。
それだけではまったく動作していませんので、mainfile.php からも呼び出すようにすることが絶対必要条件です。
Xoops Protector をインストール後、お使いのXOOPSの mainfile.php の一番下のあたりに
include( XOOPS_ROOT_PATH . '/modules/protector/include/precheck.inc.php' ) ;
if (!isset($xoopsOption['nocommon']) && XOOPS_ROOT_PATH != '' ) {
include XOOPS_ROOT_PATH."/include/common.php";
}
include( XOOPS_ROOT_PATH . '/modules/protector/include/postcheck.inc.php' ) ;
と、赤くなっている2行を追加して下さい。
青色の部分は、最初にインストールした時のバージョンによって異なりますが、違っていても気にしなくて結構です。
悪意ある攻撃を行ってくるようなIPを今後も継続的に排除するためには、
「システム管理」->「一般設定」->「一般設定」->「IPアクセス拒否」
をONにする必要があります。
通常は、このモジュールをインストールするだけで、ここがONになります。インストールしてもOFFのままだった場合、すぐ下の拒否IP一覧に、お使いのクライアントマシンが載ってしまっている可能性があります。
「IPアクセス拒否」を不用意にONにする前に、お使いのクライアントマシンのIPを、拒否IP一覧から削って下さい。
もし、なんらかの理由で、自分自身がIP拒否リストに載ってしまった場合、
http://(your xoops)/modules/protector/admin/rescue.php
にアクセスして、Protectorの一般設定で指定したパスワードを入力することで、一時的に、IP拒否機能をOFFにできます。
ただし、あらかじめこのパスワードを設定していないと、このレスキュー機能も無効になりますので、ご注意下さい。
2.34から、実験的に、.htaccessによるDoS防御というオプションを追加しました。これを利用する場合、XOOPS_ROOT_PATHにある.htaccessを書込可能とする必要があります。導入する際には、.htaccessファイルが書込可能である、というリスクと比較して下さい。
●バージョンアップ
まず、全ファイルを上書きアップロードします
管理画面からモジュール管理に入って、Protectorモジュールをアップデートします
つまり、基本的に、他のモジュールとまったく一緒です。
ただ、アップグレードの状況によっては、モジュール管理画面に入れないこともあり得ます。もしそうなった場合には、mainfile.phpを編集して、precheckおよびpostcheckの行をいったんコメントアウトしてください。
その場合、モジュール管理画面でアップデートを行った後に、再度、mainfile.phpを編集し、precheckおよびpostcheckを有効にする必要があります。
●謝辞
- Kikuchi (繁体中国語ファイル)
- Marcelo Yuji Himoro (ブラジルのポルトガル語・スペイン語ファイル)
- HMN (フランス語ファイル)
- Defkon1 (イタリア語ファイル)
- Dirk Louwers (オランダ語ファイル)
- Rene (ドイツ語ファイル)
- kokko (フィンランド語ファイル)
- Tomasz (ポーランド語ファイル)
- Sergey (ロシア語ファイル)
- Bezoops (スペイン語ファイル)
また、このモジュール作成にあたり、様々なご指導・ご鞭撻をいただいた、zxチームの皆様、とりわけJM2さん、minahitoさんに、心より感謝いたします。
●変更履歴
2.57 (2006/07/17)
- プレフィックスマネージャのバックアップでBLOBの処理がおかしかったのを修正 (thx fbs777)
- いくつか出ているNoticeを修正
- gticket2 に更新
2.56 (2006/03/30)
- コンフィグが取れないときのエラー処理を強制終了に変更した
- common.phpを読み込まないモジュールについても、DOS/CRAWLER処理にかからない設定を有効にした
2.55 (2006/02/11)
- 複数の.が存在するファイルでも、.tar.gzだけは通すように修正 (thx gusagi)
- mymenuにおけるXoopsCube 2.1との互換性問題解消
- スペイン語ファイル更新 (thx bezoops)
2.54 (2005/12/08)
- PREFIXマネージャにPREFIX毎のバックアップ機能をつけた (まだ実験段階です!)
- 複数の.が存在するファイルをアップロード出来ないように変更 (Apacheの仕様対策)
- ブラジルポルトガル語ファイルの更新 (thx Izzy)
- 偽装画像ファイルチェッカーがopen_basedir制限にひっかかっていたのを修正 (thx stefan88) - 2.54a
- 各種設定の初期値をいくつかと、ドキュメントの修正 - 2.54a
2.53 (2005/11/30)
- 偽装画像ファイルアップロードによるIEのXSS対策コードの追加
- データベースがbusy時にPath Disclosureとなっていた問題を改善
- Noticeを発生していたいくつかのミスを修正
- 管理画面が XOOPS 2.2.3 でエラーを起こしていた互換性問題の改善
- ドキュメントをdocsディレクトリに移動 (ドキュメントからのバージョン漏洩防止)
- updated mymenu into 0.15a
- PHP_SELF/PATH_INFO XSS対策をもう少し緩くした(強制終了からurlencode相当に)
- モジュールアイコンの変更 (thx Argon)
- ポーランド語ファイルの更新 (thx Tomasz)
- フランス語ファイルの更新 (thx marco)
- イタリア語ファイルの更新 (thx Defkon1)
- zipファイルのパッケージミスを修正 (thx Dave_L) 2.53a
2.52 (2005/8/27)
- WordPressモジュール等についても、xmlrpc.php機能を無効化するように仕様変更
- xmlrpc 攻撃についてのログが重複出力されないように仕様変更
- ロシア語ファイル追加 (thx Sergey)
2.51 (2005/8/24)
- セッションハイジャック対策で、IPマスクを指定できるようにした
- session.use_trans_sid についての注意書き追加
- PHP_SELF XSS 対策コードの改善
- フランス語ファイル更新 (thx HEMON)
2.50 正式版 (2005/8/22)
- PHP_SELF XSS 対策コード追加
- ブラジルポルトガル語・スペイン語ファイルを更新 (thx Yuji)
2.50 beta2 (2005/7/31)
- "2.0.9.2の穴"というY/Nの設定項目を、選択式の"機能無効化"に変更した
- ログ管理でページあたりの表示件数を変更できるようにした
- 繁体中国語ファイルを更新 (thx Kikuchi)
- ブラジルポルトガル語・スペイン語ファイルを更新 (thx Yuji)
2.50 beta1 (2005/7/22)
- 「DoS/Crawlerチェックをスキップするモジュール」というオプションの追加
- indexをつけ忘れていたフィールドにあらためてindex付与
- 「信用するIPアドレス」オプションの追加
- パスワード総当たり方式への対抗策追加
2.40 正式版 (2005/7/21)
- criteria attack への対策コード追加 (xoops <= 2.0.10*用)
- イタリア語ファイル更新 (thx Defkon1)
- フィンランド語ファイル追加 (thx kokko)
- ポーランド語ファイル追加 (thx Tomasz)
2.40RC2 (2005/4/4)
- モジュールアップデート時にブロックを削除するようにした (thx Dava_L)
- ブラジルポルトガル語・スペイン語ファイルを更新 (thx Yuji)
2.40RC (2005/3/31)
- ブロックでのチェックの全廃
- 動作チェック用URIの修正 (thx satanas)
- *check.inc.phpが効いているかどうかのチェック方法を修正 (thx peter & Dave_L)
- IP拒否解除パスワードの自動ハッシュ化
- 「疑わしいファイル指定の禁止」を、GETだけを対象にするようにした
2.38 (2005/3/18)
- DoS対策などで、.htaccess DENYを使う場合、ファイルが壊れた時のロールバック追加
- イタリア語言語ファイルの更新 (thx Defkon1)
2.37 (2005/3/9)
- prefix manager でDB名のクオーティング忘れを修正 (thx king76)
- Null-byte も、quite で消えるように
2.36 (2005/3/9)
- 禁止拡張子に抜けがあったのを修正
2.35 (2005/3/5)
- updated myblocksadmin 0.27 & mymenu 0.12
- ログレベルの導入(詳しくはMEMO参照)
- 一時的に全体の動作をOffにするオプションをつけた (thx Dave_L)
- 繁体中国語ファイルを更新 (thx Kikuchi)
- フランス語ファイルを更新 (thx HEMON) 2.35a
- ブラジルポルトガル語・スペイン語ファイルを更新 (thx Yuji) 2.35a
2.34 (2005/2/18)
- セッションハイジャック対策でゲストの処理を間違っていたのを修正 (thx blues)
- 特定パターン防御で強制終了する場合のメッセージを修正 (thx suin)
- DoS系防御で、.htaccess に DENY FROM を書き込むというオプションを実験的に追加
2.33 (2005/2/11)
- 「疑わしいファイル指定」で無限に .が増えるコードを修正 (thx mayor)
- チケットシステムからIPチェックを排除
2.32 (2005/2/1)
- 無効化していたMySQL/ブロックデバッグをチェックかけてから通すようにした (thx jseymour)
2.31 (2005/1/30)
- モジュール内ファイルをルートコントローラと誤認識する問題の解決 (thx nobunobu)
- IIS互換性の改善 (thx okuhiki)
- フランス語ファイル更新 (thx HMN) (2.31a)
- ドイツ語ファイルを追加 (thx Rene) (2.31b)
2.30 リリース版 (2005/1/30)
- いくつかのデフォルト設定値を変更した
- イタリア語ファイル更新 (thx Defkon1)
- ブラジルポルトガル語・スペイン語ファイルを更新 (thx Marcelo Yuji Himoro)
- オランダ語ファイルを追加 (thx Dirk Louwers)
2.30RC5 (2005/1/22)
- 細かなtypoの修正 (さほど重要ではないのであわてて上書きする必要はありません)
- イタリア語ファイル更新 (thx Defkon1)
2.30RC4 (2005/1/21)
- postcheck.inc.php において、nocommon状態のエラーをFix (thx dendeke)
2.30RC3 (2005/1/21)
- ヌルバイト文字列への対策を、強制終了からサニタイズに変更
- PREFIX マネージャの微調整
- フランス語ファイルを追加 (thx HMN)
- イタリア語ファイルを追加 (thx Defkon1)
2.30RC2 (2005/1/20)
- PREFIX マネージャの修正
2.30RC (2005/1/19)
- PREFIX マネージャの作成
- 2.0.9.2固有穴への対応 (Special thx to zx team!)
- ヌルバイト文字列への対策
- ディレクトリ遡りチェックが甘かったのを改善 (thx minahito)
- セッションハイジャック対策の追加
- postcheck.inc.php の追加 (パッチの当て方が変わっています)
- 変数汚染・SQL Injection2種の設定方法を変更
2.22 (2005/1/4) (そんなに重要じゃない修正です)
- check_dos_attack_* におけるtypo修正 (thx Mithrandir)
- IISだとREQUEST_URIが取得できないことへの対応
- updated myblocksadmin 0.22 & mymenu 0.07
2.21 (2004/12/31)
- 変数汚染のチェック漏れ修正 (thx onokazu)
2.20 (2004/12/27)
- 変数汚染のチェック漏れ修正(thx JM2)
- HTTP_*_VARS のglobal指定忘れ修正
- ファイル指定遡りをログ記録するようにした
- ブラジルポルトガル語・スペイン語ファイルを更新 (thx Marcelo Yuji Himoro)
- 繁体中国語ファイルを更新 (thx Kikuchi)
2.20RC3 (2004/12/18)
- 「疑わしいファイル指定を禁止する」オプションの追加 (thx JM2)
- スペイン語ファイルを追加 (thx Marcelo Yuji Himoro)
2.20RC2 (2004/12/16)
- updated myblocksadmin (0.12) & mymenu (0.06)
- ブラジルポルトガル語ファイルを更新 (thx Marcelo Yuji Himoro)
2.20RC (2004/12/15)
- HTTP_*_VARSの廃止 (PHP5用)
- レスキュー機能の追加
- エージェントも記録するように変更
- Anti-DoSのルーチンをまるまる書換え
- F5アタック・クローラー・歓迎すべきサーチエンジンで、それぞれ処理分けした
- 強制intvalが配列に対しても行われてしまっていたのを修正
- UNION発見パターンに抜けがあったのを修正
2.11 (2004/9/30)
- typo がいくつかあったので修正
2.10a (2004/9/27)
- ブラジルポルトガル語ファイルを更新 (thx Marcelo Yuji Himoro)
2.10 (2004/9/22)
- アップロードファイルの拡張子チェックを追加
- SQL Injectionがらみのサニタイズを、選択可能とした
- セキュリティガイドを追加
- 2箇所あった short tag を潰した (thx t_miyabi)
- 繁体中国語ファイルを追加 (thx Kikuchi)
2.01 (2004/9/11)
- 変数汚染チェックで足りなかったのを追加
- ブラジルのポルトガル語ファイルを更新 (thx Marcelo Yuji Himoro)
2.0 (2004/9/10)
- Xoops Protector としての最初のリリース