Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicherheit von mod_php
Petra Sütterlin
10.07.2006, 17:05:57
Hallo,
auf meinem managed-Server läuft php als cgi und ich würde es gerne als mod_php laufen lassen. Jedoch habe ich folgendes gefunden:
"http://kris.koehntopp.de/artikel/webtune/
Hat man seinen Webserver mit mod_php oder mod_perl konfiguriert, dann werden auch alle Dateizugriffe dieser beiden Module unter der einen zentralen Identität des Servers ausgeführt werden, da die Module im Kontext des Serverprozesses ablaufen. Das ist eine Tatsache, die man unbedingt im Hinterkopf behalten sollte, wenn man Webserver aufsetzt, auf denen mehrere unterschiedliche Kunden eigene Scripte ausführen können. Da alle diese Scripte immer unter derselben UID/GID ausgeführt werden, gibt es nichts, das verhindern könnte, daß ein Kunde auf die Dateien eines anderen Kunden zugreift. Ein solches Konzept ist für das Webhosting untauglich."
Verstehe ich das richtig?: ich installiere für einen Kunden ein cms, das plugins erlaubt. Der Kunde schreibt sich selber ein plugin und kann mit diesem auf Daten meiner eigenen Webseite zugreifen (meine Datenbank auslesen, files auslesen, löschen etc.)
Schöne Grüße
Petra
xabbuh
10.07.2006, 19:27:46
Verstehe ich das richtig?: ich installiere für einen Kunden ein cms, das plugins erlaubt. Der Kunde schreibt sich selber ein plugin und kann mit diesem auf Daten meiner eigenen Webseite zugreifen (meine Datenbank auslesen, files auslesen, löschen etc.)
Generell ist das so richtig. Du solltest also zusehen, dass der Zugriff des Benutzers per PHP auf bestimmte Verzeichnisse beschränkt (http://www.php.net/manual/en/features.safe-mode.php#ini.open-basedir) wird. Zusätzlich solltest du auch die Ausführung von Shellkommandos verhindern, in dem du die entsprechenden Funktionen über disable_functions (http://www.php.net/manual/en/features.safe-mode.php#ini.disable-functions) deaktivierst.
Petra Sütterlin
10.07.2006, 21:51:14
Na das hört sich doch machbar an. Also wenn ich für jedes script mit open_basedir den Verzeichniszugriff beschränke, mit disable_functions die Ausführung von Shellkommandos verhindere, dann habe ich damit die Sicherheitslücken geschlossen und php als module laufen lassen!?
Ist das alles, was zu berücksichtigen ist, oder fehlt etwas?
xabbuh
10.07.2006, 21:53:27
Zusätzlich wichtig: Die Verzeichnisse zum Speichern von hochgeladenen Dateien (upload_tmp_dir) und der Sessiondatei (session.save_path) dürfen jeweils nur von einem Kunden beschrieben werden.
Ich hoffe, dass ich soweit nichts vergessen habe.
Petra Sütterlin
10.07.2006, 23:26:11
Zusätzlich wichtig: Die Verzeichnisse zum Speichern von hochgeladenen Dateien (upload_tmp_dir) und der Sessiondatei (session.save_path) dürfen jeweils nur von einem Kunden beschrieben werden.
Öhm- könntest du mir bitte wie bei deiner letzten Antwort Links mitschicken, bei denen ich nachlesen kann, wie ich das machen kann.
Oder wäre das hier richtig:
Für jedes script einzeln festlegen:
upload_tmp_dir = eigeneTmpDir
session.save_path = eigenerSavePath
und diese kann ich nach eigenem Belieben wählen!?
Ich hoffe, dass ich soweit nichts vergessen habe.
Ich auch!
Folgende Pfade/dirs habe ich noch gefunden: sind die auch festzulegen?
session.cookie_path
safe_mode_include_dir
safe_mode_exec_dir
doc_root
user_dir
extension_dir
Und was mir dabei gerade einfällt: wenn ich all dies machen kann, indem ich die php.ini-Einstellungen per .htaccess oder im php-script überschreibe, dann kann das doch jeder andere auch wieder überschreiben - oder?
xabbuh
11.07.2006, 08:32:48
Öhm- könntest du mir bitte wie bei deiner letzten Antwort Links mitschicken, bei denen ich nachlesen kann, wie ich das machen kann.
Eine Liste der Konfigurationsvariablen findest du unter http://www.php.net/manual/en/ini.php. Dort ist auch beschrieben, in welchem Kontext diese Werte jeweils verändert werden dürfen.
session.cookie_path
doc_root
user_dir
extension_dir
Musst du überlicherweise nicht verändern.
safe_mode_include_dir
safe_mode_exec_dir
Diese beiden Einstellungen sind sinnvoll, wenn du den Safe Mode (http://www.php.net/manual/en/features.safe-mode.php) verwenden möchtest. Dazu kannst du dann den Benutzer unter dem der Webserver sowie der FTP-Zugang laufen in die gleiche Gruppe packen und safe_mode_gid (http://www.php.net/manual/en/features.safe-mode.php#ini.safe-mode-gid) setzen.
wenn ich all dies machen kann, indem ich die php.ini-Einstellungen per .htaccess oder im php-script überschreibe, dann kann das doch jeder andere auch wieder überschreiben - oder?
Ob und wenn ja in welchem Maße ein Benutzer per .htaccess-Datei Einstellungen verändern kann, hängt von der Direktive selbst ab. Einen Überblick bietet dir die am Anfang dieses Beitrages von mir verlinkte Seite.
Petra Sütterlin
11.07.2006, 15:39:55
Fein, das hilft mir schon mal viel weiter :))
Ob und wenn ja in welchem Maße ein Benutzer per .htaccess-Datei Einstellungen verändern kann, hängt von der Direktive selbst ab. Einen Überblick bietet dir die am Anfang dieses Beitrages von mir verlinkte Seite.
Da steht:
disable_functions php.ini only
open_basedir PHP_INI_SYSTEM
d.h. ich kann das ganze vergessen (was meint: wenn php als mod_php läuft, kann ich nicht verhindern, daß ein anderer meine Datenbank ausliest), weil ich (bei meinem ManagedServer) nur über die .htaccess oder eine php-datei die php.ini-Einstellungen verändern kann - richtig?
Ich kann ja selbst nur über .htaccess oder php-datei die ini-Einstellungen verändern und wenn ich das kann, kann das ja jeder andere, der auf ein Verzeichnis zugreifen kann auch...
xabbuh
11.07.2006, 17:20:08
Ich kann ja selbst nur über .htaccess oder php-datei die ini-Einstellungen verändern und wenn ich das kann, kann das ja jeder andere, der auf ein Verzeichnis zugreifen kann auch...
Wenn du selbst gar keinen Zugriff auf die generelle Konfiguration des Webservers hast, wäre es auch Wahnsinn, Webspace weiter zu verkaufen. Oder was genau hast du vor?
Petra Sütterlin
10.09.2006, 20:21:51
Hallo xabbuh,
sorry, daß ich nicht mehr geantwortet habe- ich habe keine Benachrichtigungsmail bekommen (oder diese übersehen) und gedacht, daß der thread jetzt zu Ende ist. (als ich wieder mal gegoogelt habe, habe ich deine Antwort entdeckt)
Wenn du selbst gar keinen Zugriff auf die generelle Konfiguration des Webservers hast, wäre es auch Wahnsinn, Webspace weiter zu verkaufen.
So schätze ich das mittlerweile auch ein - das Thema wird erst wieder relevant, wenn ich einen root-Server habe.
Danke vielmals - ich habe über diesen thread viel gelernt.
Petra
vBulletin® v3.8.3, Copyright ©2000-2013, Jelsoft Enterprises Ltd.