
私は、ただ楽しむために実験的に Apache Web サーバーを運用しています。このサーバーの背景にあるアイデアの 1 つは、サーバーを一般に公開することです。たとえば、ルート ファイルシステムは誰でも参照できるように公開する必要があります。(実際、次のようになっています。http://sylvester.s.zbasu.net/rootfs/) その結果、セキュリティは後回しにされることになります。
そうは言っても、Apache がアクセスできるが、一般公開すべきではないものがあります。私が遭遇している例は、Django サイトです。ファイルはsettings.py
Apache が読み取り可能である必要があります。そうでないと、Django は動作しません。ただし、settings.py
秘密鍵が含まれているため、一般公開することはできません。したがって、ファイルは が所有する必要がありますwww-data
が、Apache はそれにもかかわらず、そのファイルの提供を拒否する必要があります。
1 つの解決策として考えられるのは ( ellipsis753
Freenode に感謝します)、おそらくファイルに特別なディレクティブを作成し.htaccess
、Apache にこのファイルを提供しないように指示することです。ただし、ファイルがすべてのユーザーから読み取り可能でない場合は、Apache によっても提供すべきではないと思います。
ファイルが誰でも読み取り可能でない場合は、そのファイルは提供されないよう Apache に指示できますか?
答え1
Django アプリケーションを FastCGI または mod_wsgi のデーモン モードで実行する場合、Apache を実行しているユーザーとは別のユーザーとして実行できます。その後、提供したくないファイルに対する Apache および World の読み取り権限を完全に削除できます。
たとえば、パスワードファイル/etc/shadow
Apache が権限を持っていないため、すでにアクセスできません。また、誰でも読み取り可能でもありません。たとえば、新しいユーザーを作成してweb-apps
Apache 構成に追加すると、Django アプリケーションをそのユーザーが所有し、その構成ファイルがすでにファイルのように誰でも読み取り可能でないようWSGIDaemonProcess myapp user=web-apps ...
にすることができます。web-apps
shadow