Konfiguration des Apache bei Nutzung von PHP in MultiUser-Umgebung

01.07.2009 | Kategorie: HowTo, Top Artikel

Als Betreiber eines Apache-Webservers in einer Multiuser-Umgebung, welcher auch das Ausführen von PHP-Scripts zulässt, sollten Sie einige Sicherheitsvorkehrungen treffen.

Folgendes Fenster zeigt eine Beispielkonfiguration des virtuellen Webservers in der Apache-Konfiguration (/etc/apache/httpd.conf)

<VirtualHost 1.2.3.4>
ServerAdmin email@email.de
DocumentRoot /www/domain.de/
ServerName domain.de
ServerAlias www.domain.de
ErrorLog /log/domain.err
CustomLog /log/domain.full full
<Directory “/www/domain.de/”>
Options Includes FollowSymLinks MultiViews
AllowOverride None
php_admin_flag engine on
php_admin_flag log_errors on
php_admin_flag track_errors on
php_admin_flag display_errors on
php_admin_flag display_startup_errors on
php_admin_flag register_globals on
php_admin_flag magic_quotes_runtime off
php_admin_flag magic_quotes_gpc off

php_admin_value open_basedir /www/domain.de
php_admin_value upload_tmp_dir /www/domain.de/tmp
php_admin_value session.save_path /www/domain.de/session
php_admin_value error_log /www/domain.de/logs/php.error.log
php_admin_value sendmail_from irgendwas@domain.de
php_admin_value sendmail_path “/usr/sbin/sendmail -t”
</Directory>
</VirtualHost>

php_admin_value open_basedir

Dieser Befehl sorgt dafür, dass PHP Scripts innerhalb dieses VWEB keine Dateioperationen ausserhalb dieses Verzeichnises vornehmen können. Diese Einstellung ist sehr wichtig, damit fremde PHP Scripte keine wichtigen Server-Daten ausgeben können, wie z.B. /etc/passwd

php_admin_value upload_tmp_dir /www/domain.de/tmp
php_admin_value session.save_path /www/domain.de/session

Legen Sie mit den o.g. Befehlen temporäre Verzeichnisse für Daten und Session-IDs fest, damit jeder virtuelle Webserver in seiner eigenen Umgebung Daten speichern kann.

php_admin_value sendmail_from irgendwas@domain.de
php_admin_value sendmail_path “/usr/sbin/sendmail -t”

Geben Sie an, wo sich auf dem Server Sendmail bzw. der Sendmail-Ersatz befindet, so dass Scripts im jeweiligen VWEB auch Mails verschicken können. Legen Sie am Besten auch gleich eine Absender-Adresse fest. Damit vermeiden Sie böse Überraschungen, den Versand von eMails in fremden Namen.

In der globalen PHP-Konfiguration (php.ini) sollten Sie die nachfolgenden Funtionen deaktivieren, damit keine System-Programme angesprochen werden können.

disable_functions = exec,shell_exec,system,passthru,popen,proc_open,escapeshellcmd

Auch mit diesen Sicherheitseinstellungen kann keine 100%ige Serversicherheit gewährleistet werden. In der Regel sollten Sie, sofern möglich, bei virtuellen Servern, die nicht Ihrem Einfluss unterliegen, PHP deaktivieren.

Tags: ,

Kommentieren