Kann Apache so konfiguriert werden, dass nur allgemein lesbare Dateien bereitgestellt werden?

Kann Apache so konfiguriert werden, dass nur allgemein lesbare Dateien bereitgestellt werden?

Ich betreibe einen experimentellen Apache-Webserver, der nur zum Spaß genutzt wird. Ein Teil der Idee hinter diesem Server ist, dass er ungewöhnlich offen für die Öffentlichkeit sein soll; zum Beispiel sollte das Root-Dateisystem für jedermann zugänglich sein. (Hier ist es tatsächlich:http://sylvester.s.zbasu.net/rootfs/) Infolgedessen wird die Sicherheit in den Hintergrund treten.

Allerdings gibt es Dinge, auf die Apache zugreifen können sollte, die Öffentlichkeit jedoch nicht. Das Beispiel, auf das ich stoße, ist eine Django-Site. Die Datei settings.pymuss für Apache lesbar sein, sonst funktioniert Django nicht. Sie settings.pydarf aber nicht für die Öffentlichkeit lesbar sein, da sie einen geheimen Schlüssel enthält. Die Datei sollte also im Besitz von sein www-data, Apache sollte sich jedoch dennoch weigern, sie bereitzustellen.

Eine mögliche Lösung (danke an ellipsis753Freenode) besteht darin, eine spezielle Anweisung zu erstellen, beispielsweise in einer .htaccessDatei, die Apache anweist, diese Datei nicht bereitzustellen. Ich bin jedoch der Meinung, dass eine Datei, die nicht von allen Benutzern gelesen werden kann, wahrscheinlich auch nicht von Apache bereitgestellt werden sollte.

Kann ich Apache mitteilen, dass eine Datei nicht bereitgestellt werden soll, wenn sie nicht für alle lesbar ist?

Antwort1

Wenn Sie Ihre Django-Anwendung unter FastCGI oder im Daemon-Modus von mod_wsgi ausführen, können Sie sie als anderer Benutzer ausführen als den, unter dem Apache ausgeführt wird. Anschließend können Sie Apache und World die Berechtigung zum Lesen aller Dateien, die Sie nicht bereitstellen möchten, vollständig entziehen.

Beachten Sie beispielsweise, dass Ihre Passwortdatei/etc/shadowist bereits nicht zugänglich, da Apache keine Berechtigungen dafür hat und es nicht allgemein lesbar ist. Wenn Sie beispielsweise einen neuen Benutzer erstellen web-appsund ihn WSGIDaemonProcess myapp user=web-apps ...zur Apache-Konfiguration hinzufügen, können Sie die Django-Anwendung dem Benutzer zuordnen web-apps, wobei seine Konfigurationsdatei nicht allgemein lesbar ist, wie dies shadowbereits der Fall ist.

verwandte Informationen