Apache2 Workshop Absicherung von PHP und CGI
Zur Navigation springen
Zur Suche springen
Apache2 Absicherung von PHP und CGI
- PHP und CGI-Skripte stellen ein Sicherheitsrisiko dar, wenn sie nicht korrekt konfiguriert sind.
- Wichtige Maßnahmen umfassen die Einschränkung von Skriptausführung, sichere Konfigurationen und Logging.
- Die Einstellungen erfolgen in /etc/apache2/apache2.conf, php.ini oder pro VirtualHost.
PHP-Sicherheit optimieren
- Unsichere PHP-Funktionen deaktivieren:
- cat /etc/php/8.1/apache2/php.ini*
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
- Dateioperationen auf bestimmte Verzeichnisse beschränken:
- cat /etc/php/8.1/apache2/php.ini*
open_basedir = /var/www/html:/tmp
- Fehlermeldungen deaktivieren, um keine sensiblen Daten preiszugeben:
- cat /etc/php/8.1/apache2/php.ini*
display_errors = Off log_errors = On error_log = /var/log/php_errors.log
CGI-Skripte absichern
- CGI-Modul deaktivieren, wenn es nicht benötigt wird:
- a2dismod cgi
- CGI-Skripte nur in bestimmten Verzeichnissen erlauben:
- cat /etc/apache2/apache2.conf*
<Directory /var/www/cgi-bin>
Options +ExecCGI
Require all granted
</Directory>
- Skriptausführung außerhalb des vorgesehenen Verzeichnisses verhindern:
- cat /etc/apache2/conf-available/security.conf*
<Directory />
Options -ExecCGI
AllowOverride None
</Directory>
PHP über FPM statt mod_php nutzen
- Apache kann PHP über FastCGI Process Manager (FPM) statt mod_php ausführen.
- Vorteile: Bessere Performance und Sicherheitsisolierung.
- PHP-FPM installieren:
- apt install php8.1-fpm
- Apache für FPM einrichten:
- cat /etc/apache2/sites-available/example.conf*
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
- Apache-Module für FPM aktivieren:
- a2enmod proxy_fcgi setenvif
- a2enconf php8.1-fpm
- systemctl restart apache2
Aufgaben
- Deaktiviere unsichere PHP-Funktionen und teste die Auswirkungen.
- Konfiguriere Apache so, dass CGI nur in einem sicheren Verzeichnis ausgeführt werden kann.
- Stelle PHP von mod_php auf FPM um und überprüfe die Performance.
Warum ist die Absicherung von PHP und CGI wichtig?
- Verhinderung von Remote Code Execution (RCE) durch unsichere PHP-Funktionen.
- Reduzierung der Angriffsfläche durch restriktive Skript-Berechtigungen.
- Verbesserung der Server-Performance durch sichere Konfigurationen.