Site icon bintorosoft.com

PHP Security: disable_functions, open_basedir und sichere Defaults

Die PHP-Sicherheit ist ein zentraler Aspekt für stabile und geschützte Webserver. Funktionen wie disable_functions und open_basedir erlauben es, riskante PHP-Funktionen zu deaktivieren und den Zugriff auf bestimmte Verzeichnisse einzuschränken. Zusätzlich sollten sichere Default-Einstellungen in php.ini gesetzt werden, um Angriffsflächen zu minimieren. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers, wie PHP sicher konfiguriert wird.

disable_functions: gefährliche Funktionen deaktivieren

PHP bietet mächtige Funktionen, die in unkontrollierten Umgebungen ein Sicherheitsrisiko darstellen. Mit disable_functions können diese Funktionen global deaktiviert werden.

Empfohlene Funktionen zum Deaktivieren

; /etc/php/7.4/fpm/php.ini
disable_functions = exec,shell_exec,system,passthru,popen,proc_open,pcntl_exec,eval,create_function

open_basedir: Verzeichniszugriffe einschränken

Mit open_basedir kann der PHP-Prozess auf bestimmte Verzeichnisse beschränkt werden. Damit wird verhindert, dass Skripte auf sensible Systemverzeichnisse zugreifen.

Beispiel: Webroot einschränken

; /etc/php/7.4/fpm/pool.d/www.conf
php_admin_value[open_basedir] = /var/www/meineseite:/tmp

Alle PHP-Skripte können nur auf /var/www/meineseite und temporäre Dateien in /tmp zugreifen.

Sichere Defaults in php.ini

Bestimmte PHP-Einstellungen tragen wesentlich zur Sicherheit bei.

Empfohlene Einstellungen

; /etc/php/7.4/fpm/php.ini
expose_php = Off
display_errors = Off
log_errors = On
session.cookie_httponly = On
session.cookie_secure = On
allow_url_fopen = Off
allow_url_include = Off

PHP-FPM Pool Isolation

Jeder Webanwendung sollte ein eigener PHP-FPM Pool zugeordnet werden, um Benutzerrechte und Ressourcen zu isolieren.

[meineseite]
user = www-data
group = www-data
listen = /run/php/php7.4-fpm-meineseite.sock
php_admin_value[open_basedir] = /var/www/meineseite:/tmp
php_admin_value[disable_functions] = exec,shell_exec,system,passthru,popen,proc_open,pcntl_exec,eval,create_function

Logs überwachen

Fehler- und Access-Logs helfen, Sicherheitsprobleme frühzeitig zu erkennen.

tail -f /var/log/php7.4-fpm.log
tail -f /var/log/nginx/meineseite_error.log

Netzwerk- und Subnetzplanung

IP-Restriktionen für Admin-Bereiche oder FPM Pools benötigen saubere Subnetzplanung.

IPv4 Subnetz

<math>
Server-IP = 192.168.190.10/24
Subnetzadresse = 192.168.190.10 & 255.255.255.0 = 192.168.190.0
Broadcastadresse = 192.168.190.0 | ~255.255.255.0 = 192.168.190.255
</math>

IPv6 Subnetz

<math>
Server-IP = 2001:db8:abcd:190::10/64
Subnetzadresse = 2001:db8:abcd:190:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:190::0
Broadcastadresse = 2001:db8:abcd:190:ffff:ffff:ffff:ffff
</math>

Best Practices

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