Zitat von axo
jeder, der den trick kennt, holt sich mit confixx root-rechte über den server.
http://www.debianhowto.de/howtos/de/webconfig/ eine kurze anleitung - scheint ganz ok zu sein.
Zitat von debianhowto
Allerdings gibt es auch geeignete Möglichkeiten, PHP als normales Apachemodul (mod_php4) anzubieten und gleichzeitig die nötige Sicherheit herzustellen. Diese beschreibe ich im Folgenden.
Das PHP-Modul kann dazu veranlasst werden, sich nur in einem Bereich zu bewegen, d.h. nur dort Dateien einzubinden (include) oder Dateioperationen durchzuführen. Ebenso kann ein Verzeichnis definiert werden, in das temporäre (Upload-)Dateien geschrieben werden, sodass die nicht ins /tmp des Systems gelangen. Dazu einfach folgende dre Zeilen wieder in jedem VHost angepasst (User- und Domainname) hinzufügen:
Das PHP-Modul kann dazu veranlasst werden, sich nur in einem Bereich zu bewegen, d.h. nur dort Dateien einzubinden (include) oder Dateioperationen durchzuführen. Ebenso kann ein Verzeichnis definiert werden, in das temporäre (Upload-)Dateien geschrieben werden, sodass die nicht ins /tmp des Systems gelangen. Dazu einfach folgende dre Zeilen wieder in jedem VHost angepasst (User- und Domainname) hinzufügen:
Code:
php_admin_value open_basedir /var/www/user1/user1-1.tld/ php_admin_value upload_tmp_dir /var/www/user1/user1-1.tld/temp php_admin_value session.save_path /var/www/user1/user1-1.tld/temp/
Noch mehr Sicherheit kann mit dem safe_mode erreicht werden, der genauso für jeden VHosts extra an (=sicher) oder ausgeschaltet werden kann. Dazu folgende Direktive noch einfügen:
Code:
php_admin_value safe_mode on
Wer den safe_mode ausschalten muss (einige Skripte erfordern dies leider), kann in der Systemweiten PHP-Konfigurationsdatei /etc/php4/apache/php.ini kritische Funktionen verbieten. Das kann momentan allerdings nur in dieser Datei geschehen, nicht pro VHost einzeln. Dazu einfach die Funktionen durch Kommas getrennt hinter der Direktive disable_functions aufzählen. Mindestens folgende:
Code:
disable_functions = system,exec,passthru,popen,escapeshellcmd,shell_exec
Probleme mit Confix 3.01
Wer exec deaktiviert bekommt Probleme, sofern er die (unnoetige) Resellerverwaltung Confixx 3.01 nutzt.
Wer exec deaktiviert bekommt Probleme, sofern er die (unnoetige) Resellerverwaltung Confixx 3.01 nutzt.
Hier eine Liste der "bösen Funktionen", die man nach Prüfung mehr oder weniger global verbieten muß, wenn man den safe_mode ausknipst:
system():
Die Funktion system() ähnelt der C Version der Funktion sehr, indem es einen übergebenen Befehl ausführt und dessen Ausgabe anzeigt. Wir als zweiter Parameter der Funktion eine Variable übergeben, so wird der Rückgabestatus des Befehls in diese geschrieben.
exec():
exec() führt ein gegebenen Befehl aus, ohne eine Ausgabe zu erzeugen.
passthru():
Die Funktion passthru() ähnelt der Funktion exec(), da sie ebenfalls einen Befehl ausführt. Ist der Parameter return_var angegeben, wird der Rückgabestatus des UNIX-Befehls hier abgelegt.
popen():
Öffnet eine Verbindung zu einem Prozess, der durch die Anweisung command ausgeführt wurde.
escapeshellcmd():
escapeshellcmd() maskiert alle möglichen Zeichen in einer Zeichenkette, die dazu benutzt werden könnten, um einen Shellbefehl zur Durchführung von willkürlichen Befehlen zu veranlassen.
shell_exec():
Diese Funktion ist identisch mit dem 'backtick operator'.
proc_open():
proc_open() is similar to popen() but provides a much greater degree of control over the program execution. cmd is the command to be executed by the shell.
highlight_file():
Die Funktion highlight_file() erzeugt die Ausgabe des Codes der Datei filename mit hervorgehobener Syntax. Dabei werden die Farben des in PHP eingebauten Syntax-Highlighter benutzt.
disk_free_space():
Diese Funktion gibt den freien Speicherplatz eines Verzeichnisses in Byte zurück.
diskfreespace():
Von diesem Alias wird abgeraten, benutzen Sie stattdessen disk_free_space().
popen():
Öffnet eine Verbindung zu einem Prozess, der durch die Anweisung command ausgeführt wurde.
fsockopen():
Öffnet eine Socket-Verbindung zum Internet (AF_INET, unter Verwendung von TCP oder UDP) oder unter Unix (AF_UNIX).
pfsockpen():
Diese Funktion beinhaltet das gleiche wie fsockopen() mit dem Unterschied, dass die Verbindung nicht beendet wird, sobald das Script beendet wird. Sie ist die permanente-Version von fsockopen().
show_source():
Diese Funktion ist ein Alias der Funktion highlight_file().
php_uname():
php_uname() returns a string with a description of the operating system PHP is built on.
ini_get():
Returns the value of the configuration option on success.
ini_get_all():
Returns all the registered configuration options as an associative array. If optional extension parameter is set, returns only options specific for that extension.
ini_alter():
This function is an alias of ini_set().
ini_restore():
Restores a given configuration option to its original value.
ini_set():
Sets the value of the given configuration option. Returns the old value on success, FALSE on failure.
getrusage():
Zeigt den aktuellen Ressourcenverbrauch an. Dies ist eine Schnittstlle zu getrusage(2). Stellt ein assoziatives Array mit den Daten zur Verfügung, die der Systemaufruf ausgibt. Wenn who 1 ist, wird getusage mit RUSAGE_CHILDREN aufgerufen.
mysql_list_dbs():
mysql_list_dbs() liefert eine Ergebnis-Kennung, die alle Datenbanken auf dem Datenbankserver enthält.
get_current_user():
Zeigt den Namen des Besitzers des aktuellen PHP-Scripts an.
set_time_limit():
Legt die Zeit in Sekunden fest, die ein Script laufen darf.
getmyuid():
Zeigt die User-ID des aktuellen Scripts oder FALSE bei einem Fehler.
getmypid():
Zeigt die aktuelle ID des PHP-Prozesses oder FALSE bei einem Fehler.
Achtung: Wenn PHP als Server-Modul läuft, ist es nicht garantiert, dass Scripts unter verschiedenen PIDs laufen.
dl():
Lädt die mittels dem Parameter library angegebene PHP-Erweiterung.
leak():
void leak(int num_bytes=3)
Cause an intentional memory leak, for testing/debugging purposes.
listen():
this function lacks a proto definition
chown():
Ändert den Eigentümer der Datei filename in Benutzer user.
chmod():
Diese Funktion ändert die Zugriffsrechte der Datei spezifiziert in filename in die Zugriffsrechte um, die in mode spezifiziert sind.
chgrp():
Weist der Datei filename die Benutzergruppe group zu (spezifiziert durch Name oder Nummer).
realpath():
realpath() expandiert alle symbolischen Links, und beseitigt Verweise zu '/./', '/../' und extra '/' Zeichen im Input path, und gibt den absoluten Pfadnamen kanonisch zurück. Der Pfad im Ergebnis enthält keine Komponenten eines symbolischen Links mehr, wie '/./' or '/../'.
link():
link() erzeugt einen absoluten Link mit dem Ziel target.
Siehe auch symlink() um symbolische Links zu erstellen und readlink() zusammen mit linkinfo().
Die Funktion system() ähnelt der C Version der Funktion sehr, indem es einen übergebenen Befehl ausführt und dessen Ausgabe anzeigt. Wir als zweiter Parameter der Funktion eine Variable übergeben, so wird der Rückgabestatus des Befehls in diese geschrieben.
exec():
exec() führt ein gegebenen Befehl aus, ohne eine Ausgabe zu erzeugen.
passthru():
Die Funktion passthru() ähnelt der Funktion exec(), da sie ebenfalls einen Befehl ausführt. Ist der Parameter return_var angegeben, wird der Rückgabestatus des UNIX-Befehls hier abgelegt.
popen():
Öffnet eine Verbindung zu einem Prozess, der durch die Anweisung command ausgeführt wurde.
escapeshellcmd():
escapeshellcmd() maskiert alle möglichen Zeichen in einer Zeichenkette, die dazu benutzt werden könnten, um einen Shellbefehl zur Durchführung von willkürlichen Befehlen zu veranlassen.
shell_exec():
Diese Funktion ist identisch mit dem 'backtick operator'.
proc_open():
proc_open() is similar to popen() but provides a much greater degree of control over the program execution. cmd is the command to be executed by the shell.
highlight_file():
Die Funktion highlight_file() erzeugt die Ausgabe des Codes der Datei filename mit hervorgehobener Syntax. Dabei werden die Farben des in PHP eingebauten Syntax-Highlighter benutzt.
disk_free_space():
Diese Funktion gibt den freien Speicherplatz eines Verzeichnisses in Byte zurück.
diskfreespace():
Von diesem Alias wird abgeraten, benutzen Sie stattdessen disk_free_space().
popen():
Öffnet eine Verbindung zu einem Prozess, der durch die Anweisung command ausgeführt wurde.
fsockopen():
Öffnet eine Socket-Verbindung zum Internet (AF_INET, unter Verwendung von TCP oder UDP) oder unter Unix (AF_UNIX).
pfsockpen():
Diese Funktion beinhaltet das gleiche wie fsockopen() mit dem Unterschied, dass die Verbindung nicht beendet wird, sobald das Script beendet wird. Sie ist die permanente-Version von fsockopen().
show_source():
Diese Funktion ist ein Alias der Funktion highlight_file().
php_uname():
php_uname() returns a string with a description of the operating system PHP is built on.
ini_get():
Returns the value of the configuration option on success.
ini_get_all():
Returns all the registered configuration options as an associative array. If optional extension parameter is set, returns only options specific for that extension.
ini_alter():
This function is an alias of ini_set().
ini_restore():
Restores a given configuration option to its original value.
ini_set():
Sets the value of the given configuration option. Returns the old value on success, FALSE on failure.
getrusage():
Zeigt den aktuellen Ressourcenverbrauch an. Dies ist eine Schnittstlle zu getrusage(2). Stellt ein assoziatives Array mit den Daten zur Verfügung, die der Systemaufruf ausgibt. Wenn who 1 ist, wird getusage mit RUSAGE_CHILDREN aufgerufen.
mysql_list_dbs():
mysql_list_dbs() liefert eine Ergebnis-Kennung, die alle Datenbanken auf dem Datenbankserver enthält.
get_current_user():
Zeigt den Namen des Besitzers des aktuellen PHP-Scripts an.
set_time_limit():
Legt die Zeit in Sekunden fest, die ein Script laufen darf.
getmyuid():
Zeigt die User-ID des aktuellen Scripts oder FALSE bei einem Fehler.
getmypid():
Zeigt die aktuelle ID des PHP-Prozesses oder FALSE bei einem Fehler.
Achtung: Wenn PHP als Server-Modul läuft, ist es nicht garantiert, dass Scripts unter verschiedenen PIDs laufen.
dl():
Lädt die mittels dem Parameter library angegebene PHP-Erweiterung.
leak():
void leak(int num_bytes=3)
Cause an intentional memory leak, for testing/debugging purposes.
listen():
this function lacks a proto definition
chown():
Ändert den Eigentümer der Datei filename in Benutzer user.
chmod():
Diese Funktion ändert die Zugriffsrechte der Datei spezifiziert in filename in die Zugriffsrechte um, die in mode spezifiziert sind.
chgrp():
Weist der Datei filename die Benutzergruppe group zu (spezifiziert durch Name oder Nummer).
realpath():
realpath() expandiert alle symbolischen Links, und beseitigt Verweise zu '/./', '/../' und extra '/' Zeichen im Input path, und gibt den absoluten Pfadnamen kanonisch zurück. Der Pfad im Ergebnis enthält keine Komponenten eines symbolischen Links mehr, wie '/./' or '/../'.
link():
link() erzeugt einen absoluten Link mit dem Ziel target.
Siehe auch symlink() um symbolische Links zu erstellen und readlink() zusammen mit linkinfo().
Kommentar