PEAK XOOPS - Xoops Protector 2.57 in englishin japanese






Main : XOOPS Modules : 

Category: XOOPS Modules           php5
Download Now! Download Now! Xoops Protector 2.57 Popular Version: 2.57
Submitted Date:  2006/7/17
Description:
これはすでにメンテナンスされていない旧バージョンです。最新版をご利用ください。

in englishin japanese

●要旨

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 としての最初のリリース




Downloaded 35586 times  35586  File Size 87.58 KB  Supported Platforms tar.gz|zip|php5  Home Page http://www.peak.ne.jp/
Modify | Report Broken File | Tell a Friend | Comments (3)


Comments list

GIJOE  Posted on 2006/9/5 6:53
device  Posted on 2006/9/4 18:05
Hello GIJOE and Everyone!

Ive been introduce to Xoops a few month ago and I found out that Xoops really rock! Or in other word Im kinda in a rookie class about all this. So please be patient with me.. hehe. Anyways, wherever I may wonder around the net..(learning more about Xoops) I always ended up to Xoop Protector, whenever security issues kicks in and highly recomended too..Congrats!

So the story began when Ive downloaded Protector 2.57 and tried to install it into my test website running Apache 2,PHP5, MYSQL5..etc, and Xoops 2.2.13. And also on Xoops 2.0.15. ( Im learning ..ok ) Well everything runs fine, on both of them, until Ive modified the mainfile.php file according to your guideline. And afterthat..my website retuns empty page. Ive tried to do the same on a hosting service Ive subcribed. Well they runs PHP 4 and MySQL 4 also..but then the same thing happens. So, the question is "what am I missing here?"

So MR GIJOE and friends..can you guide me throughly about Protector installation? A "Dummie" kinda guideline would really help..Not for me but also ther rookies that shared the same fate as I did. And of course we would really appreciate that..
GIJOE  Posted on 2006/7/22 5:26
mainfile.dist.php は、mainfile.php を作るための雛形ですので、そこにパッチを当てても意味がありません。
あくまで、mainfile.php です。

もし似たような部分が本当に存在しないのだとしたら、mainfile.php 待避Hackみたいなのがかかっているかもしれませんね。
osaemon  Posted on 2006/7/21 22:24 | Last modified
現在、xoopsを構築中で、評判を聞き、Protector2.57をダウンロード、インストールさせていただきました。
うまくいったかに思えたのですが、セキュリティガイドを見たところ、

  「'mainfile.php' : missing precheck 非推奨
READMEに記述された通りに、mainfile.php にパッチを当てて下さい」

と表示されていました。
確かに、mainfile.phpにはパッチは当てていません。
というのが、ダウンロードの記事中に具体例として

    define('XOOPS_GROUP_ADMIN', '1');
define('XOOPS_GROUP_USERS', '2');
define('XOOPS_GROUP_ANONYMOUS', '3');

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' ) ;

となっていたため、当該mainfile.phpを見てみたのですが、該当するような部分がなかったので、他のファイルを探したところ、mainfile.dist.phpに

    define("XOOPS_GROUP_ADMIN", "1");
define("XOOPS_GROUP_USERS", "2");
define("XOOPS_GROUP_ANONYMOUS", "3");

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' ) ;
}

という部分を見つけたので、こちらが当該ファイルだと思い、こちらにパッチを当てました。

しかし、以上のような始末です。
いったいどこが間違っていたのでしょうか。
素人なのでご教示いただければと思い、こちらに書き込みました。

当方の環境は次のとおりです。
サーバー xrea
xoops  2.0.15

よろしくお願いします。
tl  Posted on 2005/12/24 8:56 | Last modified
Firefox 1.0.7 has the prefetch as default and I have been able to deny any firefox 1.0.7 access by adding the following lines into .htaccess
RewriteCond %{HTTP:x-moz} ^prefetch [OR]
RewriteCond %{X-moz} ^prefetch 

I have also added the following lines into header.php

//stop prefetching
if ((isset($_SERVER['HTTP_X_MOZ'])) && ($_SERVER['HTTP_X_MOZ'] == 'prefetch')) {
    header('HTTP/1.0 403 Forbidden');
    echo '403: Forbidden<br><br>Prefetching not allowed.';
    exit;
}

It seems not working. Firefox 1.5 with prefetch on will continue the crawling through all the links except it is getting 403 denied (I am not sure if it is because of the codes or the the lines in .htaccess - I have not done the test).

If protector could detect "prefetch", then it would be great if it could stop the crawling right away so no valuable resource get wasted by prefetch.

I am seriously thinking of banning firefox all together (including those with prefetch off) because of this extremly abusive feature.
GIJOE  Posted on 2005/12/24 6:54
hi tl.

Quote:
Any plan adding an option against prefetch. Currently, DOS would be triggered if preftech were enabled. But the problem is that prefetch would continue to go through all the links regardless. It would be great if prefetch were detected, Protector would immediately stop rendering to the browser and maybe a warning message to the user (immediately replacing what the page they are seeing).
Is this possible?

It is possible if the client sends "This access is prefetch".

Do you mean google or the other reliable application service ?
If so, they tell us "This access is prefetch" by sending HTTP_USER_AGENT or the other HTTP request header.

I'm sorry that I'm not familier with such informations.
tl  Posted on 2005/12/22 8:07
GIJOE:
Any plan adding an option against prefetch. Currently, DOS would be triggered if preftech were enabled. But the problem is that prefetch would continue to go through all the links regardless. It would be great if prefetch were detected, Protector would immediately stop rendering to the browser and maybe a warning message to the user (immediately replacing what the page they are seeing).
Is this possible?
tl
Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!