Apache Security: CGI/PHP Scripte listen Directorys
Hallo Liste, Rein durch Zufall ist mir folgendes aufgefallen: Auf meinem Webserver herrscht folgende Verzeichnisordnung: /server/kunde01 /server/kunde02 /server/kunde03 .... Das mit dem "kunde" ist nicht so ernst zu nehmen, da das bislang nur Freunde von mir sind, deswegen ist folgendes Problem auch nicht so akut: Auf dem Webserver liegen in den einzelnen kundeXX Verzeichnissen Webordner die mittles Virtual Hosts Domains zugeordnet werden. Der Apache läuft unter wwwrun (bis auf den Mother Process aber das is klar :)) und die Files die in den Ordnern liegen gehören auch dem "wwwrun". Der Ordner "/server/" gehört root und hat den chmod 641 (respektive:drw-r----x 13 root root 320 Sep 3 15:25 server). Soweit zu den Umständen, jetzt kann ein schlauer und böser User einfach ein PHP Script schreiben mit dem er sich das Directory /server/ listen kann. Somit hat er die Möglichkeit herauszufinden was für Directorys da noch auf dem Server sind UND (was entscheidend ist) die Scripte da drin anzuschauen. Somit bekommt er (wenn er will) SQL Passwörter, Mail Passwörter...etc... raus. Das ist eigentlich nicht ganz in meinem Interesse :) Hat da jemand eine Idee wie ich das sichern kann? Eventuell würde ein stoppen des Listings für das Directory /server/ schon reichen, viel lieber wäre mir aber ein bessere Lösung, dass der Kunde in seinem Ordner bleibt und nicht raus darf. Vielen Dank schonmal! Gruß, Stephan
Hallo Stephan, hallo Leute, Am Mittwoch, 4. September 2002 11:18 schrieb Stephan Kessler:
Auf meinem Webserver herrscht folgende Verzeichnisordnung: /server/kunde01 /server/kunde02 /server/kunde03
Auf dem Webserver liegen in den einzelnen kundeXX Verzeichnissen Webordner die mittles Virtual Hosts Domains zugeordnet werden. Der Apache läuft unter wwwrun (bis auf den Mother Process aber das is klar :)) und die Files die in den Ordnern liegen gehören auch dem : "wwwrun".
IMHO nicht empfehlenswert. Falls jemand Deinen Apache knackt, hat er nämlich die Rechte von wwwrun und kann munter Dateien löschen... Dateieigentümer der Dateien im Webspace und UserID des Apache sollten aus Sicherheitsgründen immer verschieden sein, dann werden Hacker zusätzlich von den Dateiberechtigungen geblockt.
Der Ordner "/server/" gehört root und hat den chmod 641 (respektive:drw-r----x 13 root root
Seltsame Rechtevergabe. Egal, in Deinem Fall greift wohl nur "others", also das --x, da ja wwwrun (hoffentlich) nicht in der Gruppe root ist.
Soweit zu den Umständen, jetzt kann ein schlauer und böser User einfach ein PHP Script schreiben mit dem er sich das Directory /server/ listen kann. Somit hat er die Möglichkeit herauszufinden was für Directorys da noch auf dem Server sind
Sicher? Er hat keine Leserechte, also kann er es wohl nicht (ist zumindest in der Shell so). Allerdings wäre das dann Sicherheit durch Verstecken, und das hilft nicht weiter, wenn er den richtigen Verzeichnisnamen weiß.
UND (was entscheidend ist) die Scripte da drin anzuschauen.
Das auf jeden Fall, wenn er die Verzeichnisnamen kennt. (und die sind leicht zu erraten, wenn sie einfach durchnummeriert sind ;-)
Somit bekommt er (wenn er will) SQL Passwörter, Mail Passwörter...etc... raus. Das ist eigentlich nicht ganz in meinem Interesse :)
Verständlich. Mir würde das auch nicht gefallen ;-)
Hat da jemand eine Idee wie ich das sichern kann? Eventuell würde ein stoppen des Listings für das Directory /server/ schon reichen, viel lieber wäre mir aber ein bessere Lösung, dass der Kunde in seinem Ordner bleibt und nicht raus darf.
Einfachste Lösung: in der httpd.conf bei jedem VirtualHost folgendes eintragen: php_admin_value open_basedir /server/kunde_nn Die Dokumentation dazu findet sich in der configuration.html aus der PHP-Doku, die Du auf php.net findest. ---------- < configuration.html > ---------- open_basedir string Beschränkt die Dateien, die von PHP geöffnet werden können, auf Dateien im angegebenen Verzeichnisbaum. Wenn ein Skript versucht, eine Datei mit z.B. fopen oder gzopen zu öffnen, wird der Ort der Datei überprüft. Wenn sich die Datei außerhalb des spezifizierten Verzeichnisses befindet, wird PHP sie nicht öffnen. Alle symbolischen Links sind hier mit eingeschlossen, so dass es auch nicht möglich ist, dieses Verbot mittels symlink zu umgehen. ---------- </ configuration.html > ---------- Gruß Christian Boltz -- Registrierter Linux-Nutzer #239431 Linux - life is too short for reboots.
participants (2)
-
Christian Boltz
-
Stephan Kessler