2009-02-26 5 views
2

私は私のサーバ上にユーザが自分の写真をアップロードできるように、アクセス権を777(読み込み、書き込み、すべて実行)に変更したフォルダを持っています。CHMODと私のサーバ上のディレクトリのセキュリティ

私は知りたいのですが、これに関連するセキュリティリスクは何ですか?

アップロード可能なファイル形式を制限するコードを実装しましたが、ディレクトリの場所を見つけようとするとどうなりますか?これはサーバーに何らかの脅威を与える可能性がありますか?

希望のファイルをアップロードすることはできますか?

ありがとうございました。

+0

これ以上の情報なしではこの質問はお答えできません。たとえば、ファイルはどのようにアップロードされていますか?あなたのコードにはおそらくアップロードディレクトリの権限があなたの心配の中で最も少ないという独自の問題があります。 – hop

+0

私のコーディングについてpestamisticされていただきありがとうございますが、それは本当に質問に答えることはありません。ファイルは、PHPページで作成されたフォームを通じてアップロードされます。質問のポイントは、777の許可を得てディレクトリセットを残すことが安全かどうかを調べることでしたか? –

+0

その情報で質問を更新してください。 – hop

答えて

0

他に何もない場合は、すべてのユーザーの実行可能アクセス許可を削除します(所有者とグループでない場合)。これを有効にすると、誰かが写真のように見えるファイルをアップロードすることができますが、実際には実行ファイルになります。

匿名アクセスが必要な場合を除き、すべてのユーザーの読み取りと書き込みのアクセス許可を削除し、所有者とグループに制限することもできます。

+0

こんにちはsamoz、返信いただきありがとうございます。それはユーザー/グループと誰も - どのグループの下に落ちるのですか?私は所有者であると仮定していますか? –

+0

ディレクトリのeXecutableフラグは、実行ファイルをイメージとして見せかけることと何が関係していますか? – hop

+0

プログラムを実行する場合と同様に、実行可能プログラムによってはどういう意味ですか? –

-1

実行可能ビットはオンにしないでください。 * nixが行く限り、実行可能ビットは実際にファイルを実行できることを意味します。たとえば、PHPのスクリプトはJPEG形式でアップロードでき、場所を知っていれば誰でもそのスクリプトを実行でき、それはWebディレクトリ内にあります。

+0

フォルダのパーミッションは777です。必ずしもファイルパーミッションである必要はありません。私は同意する、ファイルは一般的に実行する必要はありません。フォルダは、実行(検索)権限なしで内部のファイルにアクセスできない場合と同じです。 –

1

これらのユーザーはどのような手段で写真をアップロードしていますか? Web上にある場合は、WebサーバーまたはCGIスクリプトにユーザーがそのフォルダにアクセスできるようにする必要があります。

ここで最も大きな危険は、ユーザーが他のユーザーのファイルを上書きしたり、他のユーザーのファイルを削除することができることです。このフォルダにアクセスできない人は、何人かのゲスト/匿名のユーザーを持っていない限り、誰にも書き込めません。

誰もがファイルを作成できるディレクトリが必要な場合は、/ tmpディレクトリのアクセス許可を模倣する必要があります。

$ chown root:root dir; chmod 777 dir; chmod + t dir;

この方法では、どのユーザーもファイルを作成できますが、他のユーザーが所有するファイルは削除できません。

他の人の言っていることとは逆に、UNIXシステムのディレクトリ上の実行可能ビットは、そのディレクトリを現在のディレクトリにすることができることを意味します。実行とは何の関係もありません(ディレクトリの実行は無意味です)。実行可能ビットを削除すると、誰もそれに「cd」することができなくなります。

+0

ディレクトリx-bitでは正しくないが、十分に近い。 – paxdiablo

+0

dirが-xの場合、chdir()はEACCESで失敗することがわかります。それは他のものを制御するかもしれない? –

+0

返事ありがとうございます。ユーザーは、PHPドキュメントのフォームを通じてアップロードされます。あなたはこのフォルダへのアクセスなしで言うと、理論的には私のウェブサイトにアカウントを持っている人は誰でも写真をアップロードするアクセス権を持っていますか?ゲスト/匿名ユーザのカテゴリに属する​​人は? –

3

WebフォームとPHPスクリプトを使用してユーザーがサーバーにファイルをアップロードすると、サーバー上のディスクアクセスは、Webサーバーが実行されているユーザーIDで行われます(通常、nobody、www-data、apache、_httpdまたは根まで)。

ここで、どのユーザーがファイルをアップロードしても、このシングルユーザーIDが使用されています。

他の手段(たとえばssh)でシステムにアクセスするローカルユーザーがいない限り、アップロードディレクトリのアクセス許可を0777に設定すると、それほど大きな違いはありません。誰かがセキュリティ脆弱性を悪用するあなたのシステムでは、そのようなアクセス許可は誰にも適用されません。そのような攻撃者はたぶん/tmpを使用します。

実際に必要とされるファイルまたはディレクトリに対するアクセス許可のみを設定することは常に推奨されます。おそらくのようなものを意味し、この場合:

drwxrws--- 5 www-data www-data   4096 Nov 17 16:44 upload/ 

を私は、Webサーバー以外のローカルユーザがシステム管理者やWebデザイナーのようにそれらのファイルを、アクセスしたいだろうと仮定しています。これらのユーザーをWebサーバーが実行されているグループに追加します。そのディレクトリにアクセスするには、sudoまたはroot権限は必要ありません。また、+sは、upload/の新しいファイルとディレクトリが同じグループによって自動的に所有されることを意味します。

あなたの最後の質問については、攻撃者がディレクトリの場所を知っているからといって、魔法のようにファイルを表示させることはできません。ファイルを受け入れてそこに格納する何らかのサービスを実行する必要があります...いいえ、許可を0777に設定しても、安全性が低下することはありません。

はまだ、あなたがこの全体のセットアップでは、ファイルのアクセス許可で対処できないことを「安全」と「安心」には、いくつかのより多くの次元がありますと、彼らはすべての仕事ので

  • アップローダはまだお互いのファイルを上書きすることができます同じユーザーID
  • 誰かが誰かが児童ポルノ
  • を配布するようにサーバーを使用することができます
  • アップロードディレクトリに悪意のあるPHPスクリプトをアップロードし、そこから実行し、おそらくあなたのシステム上の他の脆弱性を悪用し、rootアクセスを得ることができます誰かがpaypal.comのlookalikeをアップロードした後、あなたのサーバーからフィッシングサイトを実行する可能性があります。

...おそらくもっとあります。アップロードスクリプトで対処した問題のいくつかは、UNIXファイルのアクセス許可や適用場所についての理解は、セキュリティの問題について学習するときに最初は大したことではありません。考えられる問題の

誰かがあなたのコードを見ました!

+0

私は19歳ですが、9ヶ月間PHPをコーディングしています。私は言い訳として使用しようとしていませんが、セキュリティの程度は分かりませんが、私は思った。ありがとう、私は多くの研究があります! –

+0

oooともう1つ、悪意のあるPHPファイルをアップロードしているユーザーに関するものです。私はこれを防ぐことができる良い方法を知っていますか?本当に非常に役に立つでしょう!再度、感謝します。 –

+0

これを参照する別の質問でこれを尋ねます。私はそれに答えようとします。トラブルを避けるためにできることがいくつかあります。 – hop

関連する問題