私は現在CentOs 6を実行している独自のLinuxサーバーを設定しています。サーバーのセキュリティをテストするために、「ナビゲーター」のように動作するPHPスクリプトを作成しました。ディレクトリの上に移動してファイルを開くなどの操作を実行できます。
問題は、私のツールを使って「/」まで上がることができるということです。しかし、それは好きではありません。 Apacheが「nobody」で実行されていても、サーバー全体のすべてのフォルダとファイルにアクセスできるようです。
私はcPanelのようにこの問題を解決しようとしましたが、cPanelがないため、これがどのように行われているのか正確にはわかりません。
基本的に私はこれを持っています:
/home/account/public_html /home/anotherAccount/public_html
「anotherAccount」が「account」のファイルにアクセスできないようにしたいと思います。私は実際に「anotherAccount」が自分のディレクトリを離れることができないようにしたいと思います!
はい、あなたがsuPHP/fastcgi/suExecをインストールしようとしていることを知っています。しかし、リソースをつかむので、そうすることはできません。私はそれらのいずれかをインストールせずに可能であることを知っています!私は私のスクリプトを専門的ですが、よく知られていないいくつかのWebホストにアップロードし、それを入れたり使用したりできますが、私のディレクトリ以外のホームディレクトリには入ることができません。 /home/列が空です!
私のホームフォルダをどのように保護しますか?
答え1
自分とルート以外の誰もがホームフォルダにアクセスできないようにするには、他のユーザーがホームディレクトリに対する権限を持っていないことを確認する必要があります。このように:
chmod o-rwx ~
これにより、ホームディレクトリに対する他のユーザーの読み取り、書き込み、および実行権限が削除されます。
ホームディレクトリを所有しているグループの誰もそのディレクトリにアクセスできないようにするには、次の手順も実行する必要があります。
chmod g-rwx ~
また、ディレクトリを所有するグループのグループメンバーからすべての権限が削除されます。
詳細については、マンページman 1 chmod
とをご覧くださいman 2 chmod
。彼らはあなたにすべての詳細を説明する必要があります。
ところで。ユーザーとしてのみ実行していても、誰でもファイルを閲覧できるようにするPHPスクリプトを自分のサーバーに配置するのは恐れていますnobody
。
答え2
Apacheユーザーは常にほとんどのファイルシステムを読むことができます。設計上、基本的に多くの場所はすべてのユーザーが読むことができ、時には実行することができます。これ自体は問題になりません。
あなたがチェックする必要があるのは、1)Apacheが特定のディレクトリセットの外側のドキュメントを提供しないこと、および2)PHPがアプリケーションのPHPファイルを含まないディレクトリに入ることができないことです。
1)<Directory>
エントリを使用してアクセスを制限し、設定ファイルに安全でないデフォルト値がないことを確認します。 Apacheではなくファイルを提供するPHPなので、これはあなたの質問とは多少関係がありません。しかし、まだ注目することが重要です。
2)セーフモードを有効にし、doc_rootおよびopen_basedirディレクティブを設定して、PHPが特定のディレクトリツリーに制限されるようにしますopen_basedir="/var/www/htdocs/<website>/";
。たとえば、これらの設定オプションは、システムのphp.iniからvhost別のphpまで、さまざまな場所で設定できます。 .iniファイル、PHPインタプリタApacheガイドラインなどに渡されたファイル。