Hallo,
ab sofort gibt es die Möglichkeit, PHP-FPM zusätzlich abzuhärten.
Die Pakete php-(VERSION)-opt-hardened können als Ergänzung zu den von uns bereitgestellten PHP-Versionen installiert werden z.B.:
Diese beinhalten ein sogenanntes Drop-In für die jeweiligen Systemd-Unit-Files, um den FPM-Pool-Manager mit zusätzlichen Einschränkungen laufen zu lassen. Das sind unter anderem:
- das gesamte Dateisystem ist "read-only", außer den zwingend benötigten Pfaden (/run, /var/log, /var/www)
- unterhalb von /var/www dürfen keine Binärdateien mehr ausgeführt werden (z.B. hochgeladene Malware)
- die Erlangung von root-Rechten durch Ausnutzung von Exploits wird erschwert (durch Beschränkung der Capabilities)
- kein Zugriff mehr auf's zentrale /tmp-Verzeichnis (open_basedir lässt sich in den meisten PHP-Versionen ja trivial umgehen)
- Beschränkung des Zugriffs auf /dev/
- es können keine Kernel-Einstellungen geändert oder Kernel-Module geladen werden
- es dürfen keine Netzwerk-Sockets für eingehende Verbindungen geöffnet werden
Alle Einstellungen sind (inklusive Kommentaren und Verweis auf die jeweilige systemd-Dokumentation) unter /lib/systemd/system/php(VERSION)-fpm.service.d/10-sandbox.conf zu finden. Sollten einzelne Einstellungen im konkreten Fall Probleme machen, kann man diese durch ein zusätzliches Dop-In wieder überschreiben.
Bitte geben Sie uns Bescheid, falls Probleme oder unerwartete Einschränkungen im Betrieb auftauchen. Längerfristig planen wir, PHP-FPM standardmäßig mit diesen Beschränkungen auszustatten. Weitere Maßnahmen zur Erhöhung der Serversicherheit sind auch noch in Arbeit.
Die hardened-Pakete sind für PHP 5.6 - 8.3 unter Debian 10-12 und Ubuntu 18-22 verfügbar.
Viele Grüße
-Klaus Keppler