open_basedir() zum Einsperren der Webseiten
Passwörter auslesen, in Systembereichen schreiben – das alles können PHP Skripte. Meist aber ungewollt. Ein beliebter Weg, um Hacker Tür und Tor von Servern zu öffnen, sind fehlerhafte Programmierungen von PHP Skripten, die dem Angreifer sämtliche Rechte auf dem gesamten Dateisystem einräumen.
Die kann man mit einem simplen Befehl verhindern. open_basedir definiert die Umgebung, in dem das PHP Skript arbeiten darf.
open_basedir() in Apache-Konfiguration aktivieren
Eingebaut werden muss der Befehl in die Webserverkonfiguration, z.B. Apache:
Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all php_admin_value open_basedir /www/server-wissen.de/www
Dies verbietet dem PHP Skript das wechseln in Verzeichnisse unterhalb von /www/server-wissen.de/www.
Sollen zusätzlich Dateiuploades erlaubt werden, muss meistens noch das /tmp freigegeben werden. Dies erreicht man mit einem Zusatz:
php_admin_value open_basedir /www/server-wissen.de/www:/tmp
open_basedir restriction in effect
Sollte dann doch einmal ein Skript ausserhalb der freigegebenen Verzeichnisse aufgerufen werden, wird dies mit einer Fehlermeldung quittiert:
Warning: main(): open_basedir restriction in effect. File(/www/mysql.php) is not within the allowed path(s): (/www/server-wissen.de/www:/tmp) in /www/server-wissen.de/www/angriffsversuch.php on line 2