Abhärtung von PHP-FPM unter Debian/Ubuntu

    • Offizieller Beitrag

    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.:

    Code
    apt install php-8.3-opt-hardened

    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

  • Hallo Herr Keppler,


    systemd-overrides müssten dann aber noch möglich sein, hat ja prinzipiell erstmal nichts mit ihrem PHP zu tun?

    Wir nutzen z.b: /etc/systemd/system/php83-fpm.service.d/override.conf um ein angepasstes ExecStart für FPM zu verwenden.


    Ansonsten, sehr schicke Angelegenheit ;)

    • Offizieller Beitrag

    Diese "Drop-Ins" sind sozusagen die Overrides (ich denke wir reden hier von der selben Sache). systemd sucht sowohl in /etc/systemd/system/<unit>.d/ als auch in /lib/systemd/system/<unit>.d/ nach entsprechenden Overrides/Drop-Ins.

    Wenn Sie "nur" ExecStart ändern, dann sehe ich auch keinerlei Konflikt mit den vom "10-sandbox.conf" vorgenommenen Einstellungen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!