Multi-Hosting Server mit PHP-Modul
Tom
- php
Hello,
ich wende mich erstmal an alle, die auf ihren Servern auch Gäste beherbergen oder sogar selber echter Provider sind. Bei meinen Beratungsaufgaben für entnervte Kunde stoße ich immer wieder auf Provider, die ihren Kudnen aus eigener Unkenntnis das Leben schwer machen und trotzdem noch genügend Sicherheitslücken haben bei der Einrichtung von PHP-Accounts auf Shared Hosts.
Leider sind die meisten sogar Beratungsresistent.
Also wie richtet Ihr die Accounts für Eure "Kunden" ein?
Meine Frage nun an Alle:
Welche Rechte habt Ihr, die in eurer php-Info nachlesbar sind:
Wem gehört Eurer Document-Root?
(hoffentlich Euch als User)
Gibt es ein für Euch erreichbares Verzeichnis außerhalb der Document Root?
Habt Ihr einen Konsolenzugang zum Server?
Welche Gruppe hat das Verzeichnis der Document Root?
Welchen Gruppen gehört Ihr an?
Welchen Gruppen gehört der PHP-Daemon an?
Darf die Gruppe des PHP-Daemon in Eurem Root-Dir schreiben?
Ich würde aus diesem Entwurf gerne einen aussagefähigen Fragebogen machen. Auf Eure Antworten und Anregungen freue ich mich daher.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
was spricht gegen die CGI-Variante?
dann braucht man die Krücke von Safe-Mode nicht ;-)
mfg
Twilo
Hello,
was spricht gegen die CGI-Variante?
dann braucht man die Krücke von Safe-Mode nicht ;-)
Die CGI-Variante ist eine Krücke, die viele sinnvolle Features nicht möglich macht.
Wenn z.B. Apache und PHP-Leute sich endlich mal darüber ins benehmen setzen würden, unter welchem User PHP-Instanzen laufen dürfen, dann wäre das Problem mit dem Safe Mode auch geklärt.
Die Einschränkung auf "wem gehört das Script" im Safe_Mode benötigt man übrigens aus PHP-Sicht überhaupt nicht. Allerdings sind alle mit dem Safe-Mode verbundenen Restriktionen wichtig. Leider berücksichtigt er nicht automatisch auch open_basedir und upload_tmp_dir ...
Dann wäre der Safe-Mode wirkolich safe.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Die CGI-Variante ist eine Krücke, die viele sinnvolle Features nicht möglich macht.
das kann ich von der Modul Version genauso sagen...
ich brauche oft "is_readable()", funktioniert mit der Modul Version NICHT zufriedenstellend :(
und ein Systembefehl kann man auch nicht benutzen
mfg
Twilo
Hello,
das kann ich von der Modul Version genauso sagen...
ich brauche oft "is_readable()", funktioniert mit der Modul Version NICHT zufriedenstellend :(
und ein Systembefehl kann man auch nicht benutzen
Könntest Du mir da noch einen Hinweis geben, was nicht funktioniert?
Is_readable() berücksichtigt die Userrechte des PHP-Prozesses und den Safe_mode.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
das kann ich von der Modul Version genauso sagen...
ich brauche oft "is_readable()", funktioniert mit der Modul Version NICHT zufriedenstellend :(
und ein Systembefehl kann man auch nicht benutzen
Könntest Du mir da noch einen Hinweis geben, was nicht funktioniert?
Is_readable() berücksichtigt die Userrechte des PHP-Prozesses und den Safe_mode.
dir wird per Include_Path eien Datei zur Verfügung gestellt, die Datei gehört natürlich nicht dir.
dann Versuche mal herauszufinden mit diesen Befehl, ob du diese Datei lesebar ist
Das selbe Problem wie bei is_writable
Keep in mind that PHP may be accessing the file as the user id that the web server runs as (often 'nobody'). Safe mode limitations are not taken into account.
tolle Wurst...
mfg
Twilo
Hello,
Keep in mind that PHP may be accessing the file as the user id that the web server runs as (often 'nobody'). Safe mode limitations are not taken into account.
tolle Wurst...
toll scheiße beschrieben.
Aber safe_mode-Restrictions gelten schon für den Zugriff auf include-Dateien im include:path. Es gibt dafür eigens einen safe_mode_include_path und wenn der nicht gesetzt ist, wird nicht mehr automatisch gesucht.
Ich werde mir das nochmal für dien Beschreibung des Safe_mode merken. Da hab ich gerade das Test-Script nachgebessert. Es fehlt aber noch ein ganz großes Kapitel über sonsite Zugriffsbeschränkungen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Es gibt dafür eigens einen safe_mode_include_path und wenn der nicht gesetzt ist, wird nicht mehr automatisch gesucht.
funktioniert trotzdem nicht :-/
mfg
Twilo
Hello,
Es gibt dafür eigens einen safe_mode_include_path und wenn der nicht gesetzt ist, wird nicht mehr automatisch gesucht.
funktioniert trotzdem nicht :-/
Sorry. der heißt auch safe_mode_include_dir
und der PHP-daemon (Modul-Version!) muss natürlich Zugriff darauf eingeräumt bekommen haben über das Filesystem.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Es gibt dafür eigens einen safe_mode_include_path und wenn der nicht gesetzt ist, wird nicht mehr automatisch gesucht.
funktioniert trotzdem nicht :-/
Sorry. der heißt auch safe_mode_include_dir
ich wußte schon was du meinst ;-)
und der PHP-daemon (Modul-Version!) muss natürlich Zugriff darauf eingeräumt bekommen haben über das Filesystem.
include('Datei'); funktioniert
ich kann nur nicht überprüfen, ob ich die Datei auch lesen kann, also mit den Befehl is_readable()
mfg
Twilo
Hello,
include('Datei'); funktioniert
ich kann nur nicht überprüfen, ob ich die Datei auch lesen kann, also mit den Befehl is_readable()
was sagt dann fopen('Datei','rb') ?
Da wäre jetzt noch interessant.
Alles, was ich mal über Unix und DOS Systemprogrammierung gelernt habe, sollte das öffnen einer nicht näher spezifizierten Datei (also nur über den Namen) mittels PAHT-Angabe möglich sein.
Allerdings wird PHP hier das Rad neu erfinden, und das, was in den Betriebssystemen üblicherweise schon vorhanden ist, nochmals emulieren.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Die CGI-Variante ist eine Krücke, die viele sinnvolle Features nicht möglich macht.
dann zähl mal die ganzen Features auf...
mir fällt jetzt nur der http Login ein
mfg
Twilo
Hello,
Die CGI-Variante ist eine Krücke, die viele sinnvolle Features nicht möglich macht.
dann zähl mal die ganzen Features auf...
mir fällt jetzt nur der http Login ein
Gut. Das werde ich dann ebenfalls mal in Angriff nehmen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
Hello,
dann zähl mal die ganzen Features auf...
mir fällt jetzt nur der http Login ein
Gut. Das werde ich dann ebenfalls mal in Angriff nehmen.
ich fang dann mal an ;)
Chapter 34. HTTP authentication with PHP
mfg
Twilo
Hello,
interessante Frage für alle PHP-Nutzer ist
<?php ### schreibtest.php ###
if (!is_writable('.'))
{
echo "Zielverzeichnis ist <b>nicht</b> beschreibbar<br>";
}
else
{
echo "Zielverzeichnis ist beschreibbar<br>";
}
?>
Dieses kleine Script, hochgeladen z.B. mit ftp in die Document Root, kann für viele PHP-Nutzer die notwendige Aussage treffen, ob sie mit ihrem Webspace und PHP (als Modul) glücklich werden können.
Ich werde da mal weitere kleine Scripts, die für sich genommen möglichst alle unschädlich sind, zusammenstellen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
da kommt bei mir leider folgendes:
Zielverzeichnis ist nicht beschreibbar
Gruß Nizzan
Hello Nizzan,
da kommt bei mir leider folgendes:
Zielverzeichnis ist nicht beschreibbar
Danke.
Hast Du Webspache mit "PHP-Unterstützung" gemietet?
Unter PHP-Unterstützung versteht man, dass das dafür zuständige Programm alle dem Stand der Technik entsprechenden Operationen im dem User zugewiesenen "Webspace" vornehmen darf. Dazu gehören insbesondere das Anlegen, Verändern und Löschen von Dateien und Verzeichnissen bis zur gemieteten Gesamtnutzungsgröße...
So (oder zumindest so ähnlich) hat die "Beraterkommission EDV-Anwendungen" für die deutschen IHKn gerade formuliert und wird diesen Entwurf nun auf diesem Wege allen Sachverständigen nahelegen.
Es gibt nämlich mit vielen Providern Stress und die haben sich bisher immer hinter der unfreiwilligen Unkenntnis der geplagten Richter verstecken können.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
Hast Du Webspache mit "PHP-Unterstützung" gemietet?
Unter PHP-Unterstützung versteht man, dass das dafür zuständige
Uff das ist eine gute Frage. Ich habe PHP also meine Skripte sind alle in PHP geschrieben und die laufen. Ich verstehe gerade nicht so ganz was du damit meintest.
Also ich kann wenn ich mit FTP auf den Server zugreife, Daten löschen und auch Ordner erstellen. Mehr kann ich aber dann auch nicht machen.
Meintest du das ?
Gruß Nizzan
Hello,
Also ich kann wenn ich mit FTP auf den Server zugreife, Daten löschen und auch Ordner erstellen. Mehr kann ich aber dann auch nicht machen.
Nein. Wenn Du für Deinen Webnspace "PHP-Unterstützung" bezahlst, muss dieses kleine Scriptechen in der _Document_Root_ des Webspace die Meldung ausgeben "Zielverzeichnis ist beschreibbar". Ausnahme könnte sein, dass der Provider Dir die PHP-Unterstützung nur in einem bestimmten Unterverzeichnis gewährt.
PHP ist eigentlich eine geniale API für alle Webspaces. Durch falsche Einrichtung führt es aber dazu, dass die User dann zu "chmod(777)" greifen. Das führt dann zu Sicherheitslücken, die nicht notwendig wären, wenn die Provider ihre Materie (und nicht nur ihr Geschäft) verstehen würden.
Wenn Du also schreibst: "php läuft bei mir" und das Script failed im Document Root, dann passt da was nicht. Du zahlst dann den vollen Preis für einen Bruchteil der Leistung.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
ja und was kann ich nun dagen machen? Kann ich dem Provider das sagen? Oder hmm wenn das vor Gericht gehen wurde, wer bekommt dann in diesem Fall recht?
Gruß Nizzan
Hallo,
interessante Frage für alle PHP-Nutzer ist
<?php ### schreibtest.php ###
if (!is_writable('.'))
{
echo "Zielverzeichnis ist <b>nicht</b> beschreibbar<br>";
}
else
{
echo "Zielverzeichnis ist beschreibbar<br>";
}?>
funktioniert bei mir ohne Probleme
die CGI-Variante läuft auch bei mir :-)
mfg
Twilo
Hello,
Hallo Tom,
Meine Frage nun an Alle:
Welche Rechte habt Ihr, die in eurer php-Info nachlesbar sind:
- open_basedir
- safe_mode
On
- safe_mode_gid
On
- session.save_path
/var/lib/php4
- disable_* Funktionen
disable-posix, disable-debug
- safe_mode_exec_dir
/home/empty/
- safe_mode_include_dir
no value
Wem gehört Eurer Document-Root?
(hoffentlich Euch als User)
Jep
Gibt es ein für Euch erreichbares Verzeichnis außerhalb der Document Root?
Ja
Habt Ihr einen Konsolenzugang zum Server?
Nein, bisher noch nicht, habe aber auch noch nicht explizit danach gefragt (Muß ich noch...!)
Darf die Gruppe des PHP-Daemon in Eurem Root-Dir schreiben?
Nein! (Sagt auch Dein nettes Script...)
Da das Generve abzusehen war, habe ich mich aber noch nicht ernsthaft mit diesem (recht neuen) Account auseinandergesetzt...
P.S.: Mein Provider ist Dein Provider...
Gruß aus Essen
Maik
Hello,
Darf die Gruppe des PHP-Daemon in Eurem Root-Dir schreiben?
Nein! (Sagt auch Dein nettes Script...)
Das sollte sich aber ändern lassen.
Ist immer eine Frage von Request und response ;-))
Ggf. wird das auch generell mal geändert.
Für die Safe Mode Beschreibung ist es aber durchaus wichtige, damit man weiß, in welcher Ebene man mit php-eigenen Verzeichnissen und Dateien anfangen kann.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom