Linux
PHP unter Linux sicher ausführen
Aktualisiert (Mittwoch, den 23. März 2011 um 11:30 Uhr)
Häufig haben Webserver Schwächen in der Implementierung von PHP in den Apache Server, weil der Administrator nur unzureichend PHP und Apache konfiguriert. Der folgende Artikel bezieht sich auf das Betreiben von PHP mit Apache Server unter Linux (bei meinen Servern auf Debian Lenny) und fasst meine Kenntnisse über die Sicherheit von PHP unter Apache zusammen. Inbesondere behandelt der Artikel das Zusammenspiel mit mod_fcgi, dessen Installation ich hier erklärt habe.
Apache Server mit PHP fcgid (ehemals FastCGI) und Debian 5.0 (Lenny)
Aktualisiert (Mittwoch, den 17. August 2011 um 13:55 Uhr)
Vorwort
Nach einigen Stunden Zeitinvestition und Tutorials lesen, habe ich es nun endlich geschafft fcgid auf Debian Lenny zum Laufen zu bringen. Da dies im Internet bisher nicht dokumentiert ist, fasse ich hier meinen Installationsweg zusammen. Das Tutorial funktioniert uneingeschränkt genauso auf Debian Squeeze (6.0).
Warum sollte ich fcgid benutzen?
Nun warum mache ich das so kompliziert und benutze nicht einfach mod_php, schließlich ist dieses Modul für Apache per Debian Paket in wenigen Sekunden schnell installiert und leicht konfigurierbar? Nun, das mod_php Modul hat einige gravierende Nachteile:
- PHP wird unter dem Apache-Benutzer (bei Debian www-data) ausgeführt. Dies führt dazu, dass wenn ein Benutzer ein PHP Skript auf dem Webserver ausführt, dieses unter den Benutzerrechten von www-data ausführt. Dies kann Sicherheitsprobleme mit sich bringen z.B. wenn das PHP-Skript Sicherheitslücken aufweist oder der Benutzer Zugriff auf die Skripte von anderen Webserver-Mitbenutzern erlangt (indem er sie per fopen() als www-data öffnet, auch open_basedir ist für fopen() leider nutzlos).
- Wenn der Webserver mit Hilfe von PHP Dateien anlegt, werden diese - logischerweise - ebensfalls unter dem Benutzer www-data angelegt. Dieser ist somit auch der Inhaber der Dateien. Möchte nun der Webmaster per FTP die Dateien mit seinem FTP-Benutzer löschen oder anpassen, hat er keine Zugriffsrechte. Hier wäre es wünschenswert die Skripte im Kontext des FTP-Benutzers auszuführen, damit dieser auch die von seinen Skripten angelegten Dateien wieder löschen kann.
- Das Modul mod_php kann nicht mit threadbasierten Apache-MPM worker zusammenarbeiten, sondern muss mit dem langsameren Apache-MPM prefork genutzt werden. Dies verursacht Performanceeinbußen und der größte Vorteil des Apache in Version 2, nämlich das Threading, geht verloren.
- Ich kann nur eine globale php.ini Datei verwenden und so für alle Srkipte auf dem Server nur eine Sicherheitsrichtlinie anwenden.
- Ich kann nur schwer PHP4 und PHP5 parallel einsetzen.
Genau diese Dinge kann das Modul fcgid mit Hilfe vom Apache-Modul suexec lösen. Es führt PHP-Skripte im Kontext eines vorgegebenen Benutzers aus. Übrigens: fcgid ist eine neu entwickelte Weiterentwicklung des Apache Moduls FastCGI.
Weiterlesen: Apache Server mit PHP fcgid (ehemals FastCGI) und Debian 5.0 (Lenny)
