Apache DocumentRoot
のセキュリティについて一般的な質問があります。これは、バイオインフォマティックWebサービスおよびインフラストラクチャであるGalaxyをインストールするときに読んだステートメントからのものです。声明は言う
「GalaxyをApacheのDocumentRoot内のディスクに配置しないでください。
デフォルトでは、これによりすべてのGalaxy(データセットを含む)がWeb上のすべてのユーザーに公開されます。」
この段落は https://wiki.galaxyproject.org/Admin/Config/ApacheProxy からコピーされています
だから問題は、いくつかのコンテンツをDocumentRoot
に置くこととDocumentRoot
のサブディレクトリに置くことの違いは何ですか?コンテンツがサブディレクトリに配置されている場合でも、デフォルトでは、すべてのコンテンツがWeb上の誰にでも公開されるというのも本当ですか?
コンテンツをDocumentRoot
サーバーのSSL
に配置し、認証および承認されたユーザーのみにアクセスを許可した場合、これで世界規模のアクセスの問題は解決しますか?
更新:あなたの思慮深い答えをありがとうございました。私はすべての質問に答えてもらいました。要約する:
DocumentRootのサブディレクトリは、異なる権限が設定されていない限り、誰でもアクセスできます。
SSLは、ネットワークを介して転送されたパケットのみを保護し、ファイルの許可は保護しません。
認証/承認により、DocumentRootにアクセスできるユーザーが制限されます。
すべてのファイルはWebサーバーの所有者がアクセスできる必要があるため、Unix/Linuxファイルのアクセス許可はアクセスに影響しません。
DocumentRootのサブディレクトリは、引き続きDocumentRoot内で考慮されます。
一部のソフトウェアパッケージがパッケージの一部をDocumentRoot内に配置しないようにアドバイスする場合、その意図は、実際にはDocumentRootの外部にある必要があるということです。
だから、例えば、 もし DocumentRootは/var/www/example.com/html
です。たとえば、/var/www/example.com/restricted
のように、これらのファイルを完全に別の場所に配置することをお勧めします。
いいえ、SSLは、ドキュメントルート内に機密性の高い構成ファイルがあることに関する懸念を解決せず、対処さえしません。
Joe Snidermanの回答に追加するために、ファイルをドキュメントルートの外に置くと、ブラウザにURLを入力するユーザーはファイルにアクセスできなくなりますが、ドキュメントルートで実行されているスクリプトは引き続き使用できます。
たとえば、ユーザーのログインデータを匿名化して集約するレポートを作成します。スクリプトをドキュメントルートに/var/www/example.com/html/report.php
として配置すると、他の人があなたのサイトの人気度を確認できます。
レポートは生のユーザーデータを消費する必要があるため、ソースとしてファイル/var/www/example.com/restricted/login.log
を参照します。このファイルはドキュメントルートにないため、とにかくデータを匿名化するreport.phpを介してのみアクセスできません。生データを公開したくないので、その機密データをドキュメントルートから遠ざけます。
DocumentRootの下にあるものはすべて、Webサイトの一部と見なされ、パスがわかっている場合はApacheによって適切に配信されます。
だが....
フォルダを保護するのはとても簡単です。その周りに書き換えルールを作成したり、アクセス制御などを行ったりするだけです。
ただし、さまざまなスクリプトを別の場所に配置することをお勧めします。他の回答には次のような行があります。
/var/www/example.com/restricted
しかし、それはDocumentRootの外ではありません。これは外にあります:
/var/www/example.com-scripts/
または:
/var/admin-code/example.com/
または実際にはファイルシステムの他の場所。必要なのは、コードが他の場所に存在することを期待するソフトウェアと、フォルダーの場所を指定する構成設定だけです。
前述のように、SSLは、ハッカー#2がデータベースパスワードを読み取るハッカー#1を盗聴できないようにする以外は何もしません。
引用
「GalaxyをApacheのDocumentRoot内のディスクに配置しないでください。デフォルトでは、Galaxyのすべて(データセットを含む)がWeb上のすべてのユーザーに公開されます。」
特定のソフトウェアに適用され、セットアップがどのように行われるかを期待します。
上記によると。デフォルトのGalaxy構成は、DocumentRootの下(「内部」)にあるすべてのファイルにアクセスできることを意味する場合があります。
これが、アクセスされないファイルをそこから移動することになっている理由です。
この仮定は、Galaxyの他のインストールまたは非標準のインストールでは当てはまらない場合があります。特に、Directory
命令はファイルシステムの一部を開いたり閉じたり、Location
命令はURIツリーの一部を開いたり閉じたり、Alias
命令はファイルシステムサブツリーをURIにマップしたりすることがあります、およびファイルシステムレベルのアクセス許可と強制アクセス制御(SELinuxまたは他のsystem =を介して)は、ファイルシステムの一部へのアクセスをWebサーバープロセスに許可または許可する場合があります。
「DocumentRootの外に移動する」の例: