Verwendung als Apache-Modul
Wenn PHP als Apache-Modul eingesetzt wird, übernimmt es
die Benutzerrechte des Apache (üblicherweise die des Users "nobody"). Das
hat verschiedene Auswirkungen auf Sicherheit und Authentifizierung. Wenn Sie
beispielsweise via PHP auf eine Datenbank zugreifen, müssen Sie
dem Benutzer "nobody" Zugriffsrechte auf die Datenbank erteilen, es sei
denn, diese Datenbank hat eine integrierte Zugriffskontrolle. Das
heißt, dass ein böswilliges Skript auch ohne Benutzerkennung und
Passwort auf die Datenbank zugreifen und sie verändern könnte. Es ist
durchaus möglich, dass ein Web-Spider über die Webseite eines
Datenbankadministrators stolpert und alle Ihre Datenbanken löscht.
Sie können sich dagegen mit Apache-Authentifizierung schützen, oder
ein eigenes Zugangsmodell unter Verwendung von LDAP, .htaccess Dateien
etc. entwerfen, und diesen Code als Teil Ihrer
PHP-Skripte einbinden.
Ist erst einmal eine Sicherheitsstruktur bis zu dem Punkt eingerichtet, an
dem der PHP-User (in diesem Falle der Apache-User) nur
noch ein geringes Risiko darstellt, hat man meist die Situation, dass
PHP gehindert wird, beliebige Dateien in das
Benutzerverzeichnis zu schreiben. Oder vielleicht ist PHP dann nicht mehr in
der Lage, auf Datenbanken lesend oder verändernd zuzugreifen. In gleicher
Weise wird auch verhindert, "gute" oder "bösartige" Dateien zu schreiben,
oder "gute" bzw. "bösartige" Datenbanktransaktionen durchzuführen.
Ein an diesem Punkt oft geöffnetes Sicherheitsloch ist die Zuweisung von
Root-Rechten an den Apache-Prozess oder die Ausweitung der Rechte des Apache
auf anderem Wege.
Die Ausweitung der Benutzerrechte für Apache auf root ist extrem
gefährlich und kann das gesamte System kompromittieren, daher sollten
Prozesse, die wie sudo oder chroot mit Rootrechten arbeiten, niemandem
zugänglich sein, der kein Sicherheitsprofi ist.
Es gibt deutlich einfachere Lösungen. Mit
open_basedir können Sie
kontrollieren, welche Verzeichnisse PHP benutzen darf
oder nicht. Sie können auch einen Bereich nur für Apache einrichten, um alle
webbasierten Aktivitäten auf dem System oder nicht dem Benutzer gehörende
Dateien zu verhindern.