O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

24110.11 Rootjail-Lösungen
Wenn Sie sich an die Tipps im Abschnitt über safe_mode_exec_dir
halten, sollten Sie auch mit dem ansonsten durchaus nicht ungefährli-
chen mod_suid keine Probleme bekommen.
Fazit: mod_suid bietet eine dringend benötigte Funktion, die den
Safe Mode und
open_basedir unterstützen kann, sollte aber nur einge-
setzt werden, wenn Sie genau wissen, was Sie tun, und vor allem keine
allzu heterogene Skriptsprachen-/Kundenumgebung zu pflegen haben.
Eine Installation als CGI/FastCGI ist fast immer unproblematischer zu
administrieren und erfordert nicht, dass Sie einen Webserver mit Root-
Rechten laufen lassen. Dennoch ist mod_suid eine Alternative, wenn
Sie nicht von mod_php auf ein CGI umsteigen können oder möchten.
10.11 Rootjail-Lösungen
Um Webserver- und PHP-Instanzen sauber voneinander abzuschotten,
kann man auch eine Rootjail-Lösung in Betracht ziehen. Dieses
»Gefängnis« für Anwendungen setzt mit einem Aufruf der Kernel-
funktion
chroot() das Wurzelverzeichnis für die aktuelle Anwendung
von / auf ein anderes Verzeichnis, beispielsweise
/home/www. Die Anwen-
dung kann aus dieser Umgebung nicht ausbrechen, da der Verzeichnis-
wechsel auf Betriebssystem- und nicht auf Anwendungsebene (wie
etwa
open_basedir) implementiert ist.
10.11.1 BSD-Rootjails
Die Entwicklergemeinde der BSD-Betriebssystemfamilie hat bereits im
Jahr 2003 erkannt, dass Angriffe auf den Apache-Webserver für eine
zunehmende Anzahl von Problemen verantwortlich sind und den Web-
server in ein Rootjail »eingesperrt«. Auf der BSD-Plattform sind der-
artige chroot-Umgebungen sehr einfach zu erstellen, da das Betriebs-
system alle notwendigen Werkzeuge selbst mitbringt. Aus Sicherheits-
aspekten ist dieses Feature ein sehr gutes Argument für BSD, das zu
Unrecht noch immer ein Schattendasein gegenüber dem wesentlich
populäreren Linux führt.
Die Einrichtung eines BSD-Rootjails für Apache würde den Rah-
men dieses Buches sprengen und wird in BSD-Fachliteratur
8
detailliert
beschrieben.
8. Michael W. Lucas, Absolute OpenBSD, dpunkt.verlag 2002,
ISBN 978-1-886411-74-6
10 PHP intern242
10.11.2 User Mode Linux
Ein anderer Ansatz, der streng genommen nichts mit einem klassischen
Rootjail zu tun hat, wird von dem Projekt »User Mode Linux«
9
ver-
folgt: Anstatt nur einzelne Anwendungen in eine abgeschottete Umge-
bung zu verfrachten, werden mehrere komplette Linux-Installationen
auf einem Kernel betrieben. Dieses »virtuelle Linux« erfreut sich mit-
tlerweile auch auf dem Hosting-Markt als sogenannter »VServer« gro-
ßer Beliebtheit und bietet dem Kunden alle Vorteile einer eigenen
Linux-Umgebung. Der Anbieter hingegen muss sich kaum Sorgen
machen, dass ein böswilliger Kunde oder ein externer Angreifer von
den virtuellen Installationen in das Wirtssystem ausbrechen kann. Fast
sämtliche Funktionen eines normalen Linux-Servers werden zur Verfü-
gung gestellt – inklusive des viel ersehnten Root-Zugriffs.
User Mode Linux erfordert Änderungen am Kernel und einige
Einarbeitungszeit, ist danach jedoch die sicherste Möglichkeit, ver-
schiedene Kunden oder Projekte sauber voneinander zu trennen. Glei-
ches gilt für die kommerzielle Virtualisierungssoftware Virtuozzo, ihr
quelloffenes Pendant OpenVZ oder Xen.
10.11.3 mod_security
Das in Abschnitt 12.3 ausführlich beschriebene Apache-Modul mod_
security hat einen eigenen Rootjail-Mechanismus, mit dem der Web-
serverprozess in seinem Wurzelverzeichnis festgesetzt werden kann.
10.11.4 mod_chroot
Auch für reine chroot-Aufgaben existiert ein Apache-Modul. Im
Gegensatz zu mod_security wird der chroot-Aufruf hier ganz am Ende
des Starts durchgeführt. Dadurch müssen weniger Bibliotheken und
Systemdateien ins Wurzelverzeichnis kopiert werden – für PHP und
MySQL werden trotzdem einige Libraries benötigt.
Der Quellcode von mod_chroot orientiert sich weitestgehend an
dem von mod_security, und es erlaubt ebenso nur, das Wurzelverzeich-
nis des gesamten Webservers zu ändern. Ein chroot pro virtuellem
Host ist nicht möglich.
Das Apache-Modul
mod_chroot lässt sich auf der Projekt-Home-
page
10
herunterladen und ist schnell installiert: Ein
apxs -cia mod_chroot.c
9. http://user-mode-linux.sourceforge.net/
10. http://core.segfault.pl/~hobbit/mod_chroot/

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required