0

現在、CentOs 6を実行する独自のLinuxサーバーをセットアップしています。基本的なコマンドなどはすでに知っていますが、PHP自体については多くの経験がありますが、apache/phpセキュリティについてはあまり経験がありません。

そこで、サーバーのセキュリティをテストするために、一種の「ナビゲーター」のように機能するPHPスクリプトを作成しました。1つのディレクトリを上に移動したり、ファイルを開いたりすることができます。

問題は、私のツールでは「/」まで上がることができ、これにはあまり満足していないということです。Apacheは「誰も」として実行されていませんが、サーバー全体のすべてのフォルダーとファイルに到達できるようです。

私はcPanelのようにこれを解決しようとしましたが、cPanelを持っていないので、これがどのように行われるのか正確にはわかりません。

基本的に私はこれを持っています:

/home/account/public_html
/home/anotherAccount/public_html

「anotherAccount」が「account」のファイルにアクセスできないようにしたい。「anotherAccount」が自分のディレクトリの外に出ることさえできないように、実際に私はそれが大好きです!

はい、あなたが考えていることは知っています:suPHP / fastcgi / suExecをインストールしますが、彼らがリソースを消費しているため、これを行うことはできません。どちらもインストールしなくても可能だと思います!私は自分のスクリプトをいくつかの専門家であるがあまり知られていないウェブホストにアップロードしました、そして私はそれを使って/中に入ることができましたが、私自身を除いてホームディレクトリの中には入りませんでした。/ home /は空としてリストされています!

ホームフォルダを保護するにはどうすればよいですか?

4

1 に答える 1

0

php.ini でディレクティブを使用してopen_basedir、スクリプトをディレクトリに制限できます。ドキュメントを参照してください。

異なるサイトに異なる制限を持たせたい場合は、PHP インスタンスに異なる値の を持たせる必要がありますopen_basedir。これは、仮想ホストごとに apache で設定できます。詳細については、スタック オーバーフローのこの質問を参照してください。

ただし、and friendsopen_basedirを使用して実行される外部コマンドには適用されないことに注意してください。system()それを回避したい場合は、php-fpm の複数のインスタンスを異なるユーザーとして実行するか、suPHP を使用することをお勧めします。この質問に対する回答の 1 つに、ユーザーが自分のファイルへのアクセスのみを許可するように所有権とアクセス許可を設定する方法の説明が含まれています。

于 2013-02-20T22:59:16.677 に答える