suexec+php-fcgi+chroot möglich?

Apache, Lighttpd, nginx, Cherokee
Post Reply
dems
Posts: 4
Joined: 2005-04-24 05:42
 

suexec+php-fcgi+chroot möglich?

Post by dems »

Hallo,

Ich bin nach kase's (Danke an dieser Stelle nochmal!) wunderbarem Howto vorgegangen zum einrichten eines Apaches mit php5-fcgi und mod_fastcgi.

Jetzt möchte ich eine Kleinigkeit ändern und stosse dabei auf ein Problem. Also fange ich mal an zu erklären...

Ich würde gerne php-fcgi in einem chroot laufen zu lassen. Ist das möglich?

Hintergund des ganzen ist dass ich meine User über ssh in Ihren Home-Verzeichnissen eingesperrt habe. Um Sie nicht zu verwirren würde ich gerne die gleiche Umgebung auch auf PHP-Ebene wiedergeben.

Ich habe versucht den php-fcgi-Aufruf im starter-script ein chroot zu verpassen, was aber nicht funktioniert:

Code: Select all

exec chroot  /home/vhosttester /etc/php-fcgi
Die Pfade stimmen, keine Sorge. ;)

Ein

Code: Select all

exec /home/vhosttester/etc/php-fcgi
funktioniert problemlos. Auch über die shell gibt es keine Probleme. Ein

Code: Select all

chroot /home/vhosttester /etc/php-fcgi /home/vhosttester/www/test.php
gibt das gewüschte Ergebnis zurück.

Das suexec.log bleibt komplett leer. Im error.log stehen nur nichtssagende Meldungen:
[Sun Apr 24 05:59:21 2005] [error] [client xx.xx.xxx.xxx] FastCGI: comm with (dynamic) server "/var/www/php-fcgi-scripts/test/php-fcgi-starter" aborted: (first read) idle timeout (30 sec), referer: http://localhost/test.php
[Sun Apr 24 05:59:21 2005] [error] [client xx.xx.xxx.xxx] FastCGI: incomplete headers (0 bytes) received from server "/var//www/php-fcgi-scripts/test/php-fcgi-starter", referer: http://localhost/test.php
Eigentlich hätte ich wenigstens eine Meldung erwartet dass chroot nicht im doc_root von suexec liegt. Ich habe auch chroot in den doc_root kopiert und absolut referenziert, jedoch mit gleichem Ergebnis: 500er Fehler und nichts in den Logs.

Der Nutzer vhosttester war auch der Eigentümer von chroot. Aber selbst wenn nicht, steht in suexec.log kein Wort darüber. Was ja bei einem "normalen" Aufruf von php-fcgi der Fall ist.

Hat da vielleicht jemand einen Tip? Oder gibt es eine Alternative? Die open_basedir-Direktive in der php.ini ist mir bekannt, löst aber leider nicht mein Problem. Damit wird leider nur unterbunden dass die Nutzer unterhalb des angegebenen Pfades etwas öffnen/schreiben/suchen können.

Innerhalb von PHP scheint es anscheinend keine Möglichkeit zu geben. Die doc_root-Direktive scheint nutzlos in dieser Situation.
Eine Möglichkeit wäre es vlt. die PHP-Sourcen zu ändern und die PHP-Funktion chroot für alle Nutzer zugänglich zu machen. Dann einen chroot-Aufruf in eine PHP-Datei stecken und diese in der auto_prepend_file-Direktive referenzieren. Aber das muss doch auch schöner gehen, oder?

Ich bin für jeden Tip extrem dankbar! :)

Gruss,
Daniel
dems
Posts: 4
Joined: 2005-04-24 05:42
 

Re: suexec+php-fcgi+chroot möglich?

Post by dems »

dems wrote:Eine Möglichkeit wäre es vlt. die PHP-Sourcen zu ändern und die PHP-Funktion chroot für alle Nutzer zugänglich zu machen. Dann einen chroot-Aufruf in eine PHP-Datei stecken und diese in der auto_prepend_file-Direktive referenzieren.
Nein, das geht natürlich nicht. Wie ich gerade festgestellt habe ist chroot grundsätzlich nur für root zu haben. Liegt also nicht am PHP.
Ich könnte den Apache als root .... ähm ne...lieber nicht. ;)

Hat irgendjemand einen Tip wie ich die einzelnen VHOST's in Ihrem doc_root chrooten kann? Oder wieso das nicht mit dem php-fcgi-starter funktioniert?

Vielen Dank im Voraus.

Gruss,
Daniel
mydani
Posts: 152
Joined: 2003-08-18 19:34
 

Re: suexec+php-fcgi+chroot möglich?

Post by mydani »

Sollte open_basedir das nicht beschränken?
Gruß
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: suexec+php-fcgi+chroot möglich?

Post by captaincrunch »

Unter Umständen hilft dir mod_security weiter.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Post Reply