de:securingphp

Absicherung von php.ini-Einstellungen

Inhalt

Ab LiveConfig v1.6.2 können auch die Einstellungen für php.ini-Dateien bequem über die Weboberfläche verwaltet werden. Diese Anleitung beschreibt die wichtigsten Einstellungsmöglichkeiten und gibt Tipps für mehr Sicherheit auf dem Server.

Einstellungen

Nachfolgend sind die wichtigsten Einstellungen aufgeführt, die LiveConfig in der vertragsindividuellen php.ini modifiziert. Der Platzhalter %HOME% wird dabei jeweils durch das Verzeichnis des jeweiligen Kunden ersetzt (z.B. /var/www/web123).

  • disable_functions: legt fest, welche PHP-Funktionen „gesperrt“ sind.
    • Standardmäßig deaktiviert LiveConfig folgende Befehle. Mit dieser Standardeinstellung wird die Verwendung von PHP für die meisten Anwendungen praktisch nicht eingeschränkt:
      • show_source und highlight_file - gibt den Inhalt einer PHP-Datei im Quelltext aus. PHP-Dateien sollen aber in der Regel nicht im Quelltext angezeigt werden, schließlich könnten diese auch Passwörter und andere sensible Daten enthalten.
      • apache_child_terminate, apache_get_modules, apache_note, apache_setenv, virtual - all diese Befehle dienen der Steuerung von Apache-Modulen und werden von normalen Webanwendungen sicher nicht benötigt. Falls Sie PHP als Apache-Modul nutzen (mod_php) sollten Sie diese Funktionen also auch deaktivieren.
      • dl - lädt zur Laufzeit eine PHP-Erweiterung nach. PHP-Erweiterungen sollten ausschließlich über die php.ini hinzugefügt werden und nicht beliebig durch den Benutzer - hierbei könnte jegliche Art an Schadcode eingefügt werden.
      • diskfreespace und disk_free_space - zeigt an, wie viel Speicherplatz auf einer Partition noch frei ist. Das hat mit dem Quota eines Benutzers nichts zu tun und geht daher auch niemanden etwas an.
      • disk_total_space - zeigt an, wie viel Speicherplatz bereits belegt ist - geht ebenfalls niemanden etwas an.
      • posix_getpwnam - liefert Einträge aus /etc/passwd zurück.
      • posix_getpwuid - liefert Einträge aus /etc/passwd zurück.
      • posix_mkfifo und posix_mknod - FIFOs und Spezial-Dateien (z.B. Geräteschnittstellen) haben in Webanwendungen nichts zu suchen.
      • posix_setpgid, posix_setsid und posix_setuid - Web-Anwendungen brauchen keine User-ID ändern oder Prozessgruppen verwalten.
      • posix_uname - liefert detaillierte Informationen zum Serversystem und Kernel zurück, die bei der Suche nach bekannten Sicherheitslücken helfen können
      • proc_nice - ändert die Priorität des aktuellen Prozesses - ein Benutzer sollte eigentlich nicht die Möglichkeit bekommen, seinen Programmen mehr Rechenleistung zuzuordnen.
      • openlog und syslog - normale Webanwendungen brauchen keine Meldungen ins Systemprotokoll schreiben.
      • pfsockopen - baut eine persistente (dauerhafte) ausgehende Netzwerkverbindung auf. Webanwendungen sollten so etwas eigentlich nicht machen, meistens benötigen Bots oder Trojaner diese Funktion.
    • Für eine ideale Sicherheit empfehlen wir aber dringend, auch folgende Befehle noch zu sperren:
      • system, shell_exec, passthru, popen, proc_open - all diese Befehle dienen zur Ausführung irgend eines anderen Programms auf dem Server. Diese Befehle bergen jedoch verschiedene Sicherheitsrisiken - meist weil durch falsche oder unzureichend geprüfte Verwendung so das Einschleusen von Fremdcode oder die böswillige Ausführung von beliebigen Programmen ermöglicht wird.
      • exec - auch dieser Befehl dient der Programmausführung. Falls Anwendungen wie ImageMagick/GraphicsMagick oder ffmpeg nicht direkt ausgeführt werden müssen (dafür gibt es ja i.d.R. auch entsprechende PHP-Erweiterungen), dann kann dieser Befehl ebenfalls deaktiviwerden.
  • open_basedir: hiermit wird der Zugriff von PHP-Scripten auf bestimmte Verzeichnisse eingeschränkt. Standardmäßig erlaubt LiveConfig den Zugriff auf folgende Verzeichnisse:
    • %HOME%/htdocs - das eigentliche Webspace-Verzeichnis
    • %HOME%/apps - das Webspace-Verzeichnis für Anwendungen, die mit dem Application Installer installiert wurden.
    • %HOME%/priv - Verzeichnis für »private« Daten, die nicht direkt über den Webspace erreichbar sein dürfen (z.B. Include-Dateien mit Konfigurationsdaten und Passwörtern)
    • %HOME%/tmp - kundenindividuelles Vezeichnis für temporäre Dateien
    • /usr/share/pear und /usr/share/php - PEAR-Erweiterungen und zentral bereitgestellte PHP-Scripte
    • /tmp - manche Scripte benötigen (unnötigerweise) Zugriff auf das zentrale Verzeichnis für temporDateien
  • suhosin.upload.verification_script: alle mittels PHP hochgeladenen Dateien werden mit diesem Script auf Viren/Malware hin überprüft. Falls Linux Malware Detect (LMD) installiert ist, wird dessen Scan-Engine verwendet, alternativ nur ClamAV. Ist kein Scanner verfügbar, werden Uploads ungeprüft ptiert.
  • user_ini.filename: seit Version 5.3.0 unterstützt PHP (via suPHP/FastCGI) auch INI-Dateien auf Verzeichnisebene - ähnlich wie .htaccess-Dateien. Da Kunden über diese .user.ini-Dateien aber sehr viele Einstellungen wie z.B. memory_limit oder max_execution_time unbegrenzt (!) ändern könnten, sollte diese Konfigurationsoption deaktiviert werden.
de/securingphp.txt · Zuletzt geändert: 2015/05/26 16:24 von wikiadmin

Benutzer-Werkzeuge