Apache2 Workshop Absicherung von PHP und CGI

Aus Xinux Wiki
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.