Site icon bintorosoft.com

PHP Security Hardening: disable_functions, open_basedir, FPM isolation

PHP ist eine der am weitesten verbreiteten Programmiersprachen für Webanwendungen. Damit Webserver sicher betrieben werden können, ist ein gezieltes Hardening der PHP-Umgebung essenziell. Dies betrifft insbesondere die Einschränkung von gefährlichen Funktionen, die Beschränkung von Dateisystemzugriffen mittels open_basedir sowie die Isolation von PHP-FPM-Pools. In diesem Artikel erfahren Sie praxisnah, wie diese Sicherheitsmechanismen implementiert und optimiert werden können, um Angriffsflächen zu minimieren.

Disable Functions: Gefährliche PHP-Funktionen sperren

Viele PHP-Funktionen können von Angreifern missbraucht werden, z.B. zur Ausführung von Shell-Befehlen oder zur Manipulation des Dateisystems. Die Direktive disable_functions in php.ini ermöglicht es, diese Funktionen zu sperren.

Typische Funktionen, die gesperrt werden sollten

Beispielkonfiguration

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval,assert

Hinweis: Funktionen wie file_get_contents() oder fopen() sollten nur eingeschränkt werden, wenn die Anwendung diese nicht benötigt.

Open_basedir: Zugriff auf das Dateisystem einschränken

Mit open_basedir können PHP-Skripte nur auf bestimmte Verzeichnisse zugreifen. Dies verhindert, dass kompromittierte Skripte das gesamte Dateisystem auslesen oder manipulieren.

Syntax und Beispiel

open_basedir = /var/www/html:/tmp

Erklärung:

Tipps für sichere Konfiguration

PHP-FPM Pool Isolation

PHP-FPM ermöglicht es, mehrere Pools zu betreiben, die unabhängig voneinander laufen. Dies bietet Vorteile für Performance und Sicherheit.

Vorteile der Pool-Isolation

Beispiel einer Pool-Konfiguration

[www-site1]
user = site1
group = site1
listen = /run/php/php8.1-site1.sock
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
php_admin_value[open_basedir] = /var/www/site1:/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,eval,assert

[www-site2]
user = site2
group = site2
listen = /run/php/php8.1-site2.sock
pm = dynamic
pm.max_children = 15
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
php_admin_value[open_basedir] = /var/www/site2:/tmp
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,proc_open,popen,eval,assert

Weitere Hardening-Maßnahmen

Memory Limits und Execution Time

Error Reporting und Logging

display_errors = Off
log_errors = On
error_log = /var/log/php-fpm-site1.log

Session Hardening

session.cookie_secure = 1
session.cookie_httponly = 1
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

Monitoring und Security Checks

Regelmäßige Überwachung ist essenziell, um Konfigurationsabweichungen oder Sicherheitsprobleme früh zu erkennen.

Tools und Prüfungen

Zusammenfassung

Ein professionelles PHP-Hardening kombiniert das Sperren gefährlicher Funktionen, die Beschränkung des Dateisystemzugriffs über open_basedir und die Isolation von PHP-FPM-Pools. Ergänzende Maßnahmen wie Memory-Limits, sichere Error-Logs und Session-Hardening erhöhen die Sicherheit der Webapplikation erheblich. Durch konsequentes Monitoring und regelmäßige Überprüfungen bleibt die PHP-Umgebung auch unter hoher Last stabil und sicher.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version