PHP “allow_url_fopen”

Auf einigen unserer Webserver war es bisher möglich, über die fopen()-Funktion zum Laden von Dateien auch externe Dateien per HTTP oder FTP von anderen Servern zu öffnen. Dies bietet jedoch bei fehlerhaft programmierten PHP-Scripten ein Einfallstor für Hacker, die über diese Funktion Scripte mit Schadcode laden und ausführen können (Remote File Inclusion). Daher ist das Öffnen von URLs mit fopen() bei den meisten Webhosting-Anbietern standardmäßig deaktiviert, und sollte auch bei uns eigentlich standardmäß deakviert sein. Leider hat sich jedoch vor einigen Jahren ein Fehler bei unseren Standard-PHP-Einstellungen eingeschlichen, so dass diese Option auf einigen Webservern und bei bestimmten PHP-Versionen nicht mehr deaktviert war.

Aktuell gibt es eine schwere Sicherheitslücke im weit verbreiteten Content-Management-System Joomla (CVE-2014-7228), bei dem über die fopen()-Funktion Schadcode geladen wird. Um massenhafte Hacks von Joomla-Installationen auf unseren Webservern zu verhindern haben wir uns daher entschlossen, diese Option nun kurzfristig auf allen Servern zu deaktivieren. Die meisten bekannten Shop- und Content-Management-Systeme nutzen diese Funktion angesichts der Sicherheitsproblematik nicht zum Laden von entfernten Dateien, daher ergeben sich im Normalfall keine Probleme durch diese Änderung.

Falls Sie eine PHP-Anwendung nutzen, die fopen() zum Laden von entfernten Dateien nutzt, können Sie dies über eine php.ini-Datei mit der Option “allow_url_fopen = on” wieder erlauben. Alternativ können Sie bei selbst programmierten PHP-Scripten auch die Funktion fsockopen() benutzen.

Aktuelle Änderungen an der Webserver-Konfiguration

Gegenwärtig wechseln wir die Server-Plattform bestehender älterer Webserver auf unsere aktuelle Softwareumumgebung, die wir seit Januar 2014 für neue Benutzeraccounts einsetzen. Dabei aktualisieren wir auch die verwendete Webserver-Software Apache von Version 2.2 auf 2.4, wodurch es vereinzelt zu Problemen aufgrund geänderter Konfigurationsdirektiven kommen kann.

Betroffen sind Benutzeraccounts, die vor dem Januar 2014 angelegt wurden.

Grundsätzlich sollten bestehende .htaccess-Konfigurationsdateien sowie HTML-Dateien mit “Server-Side-Includes” weiterhin funktionieren, in wenigen Ausnahmefällen kann es jedoch zu Problemen kommen. Eine ausführliche Dokumentation der mit Apache 2.4 möglichen Konfigurationsoptionen und SSI-Direktiven finden Sie hier.

Die Änderungen im Einzelnen:

  • Verzeichnisindex
    Auf den alten Webservern wurde für Verzeichnisse ohne Indexdatei (index.php, index.html usw.) standardmäßig eine Auflistung aller Dateien angezeigt, dieser Verzeichnisindex ist auf den neueren Webservern aus Sicherheitsgründen deaktiviert. Falls es keine gültige Index-Datei gibt, wird eine Fehlermeldung angezeigt. Diese Änderung wurde notwendig, da viele Kunden dieses Verhalten des Webservers nicht erwartet haben, und dadurch unter Umständen Dateien mit sensiblen Inhalten ungewollt  im Internet auffindbar waren. Um den Verzeichnisindex wieder zu aktivieren, legen Sie in in Ihrem Benutzerverzeichnis (bzw. dem gewünschten Unterverzeichnis) auf dem Webserver eine .htaccess-Datei mit der Option “Options +Indexes” an.
  • .htaccess-Dateien
    In .htaccess-Dateien ist unbedingt auf korrekte Groß- und Kleinschreibung bei den Konfigurationsdirektiven zu achten.
  • Server-Side-Includes
    Die Syntax für SSI-Expressions wurde in Apache 2.4 geändert, die alte Syntax lässt sich durch eine .htaccess-Datei mit der Option “SSILegacyExprParser on” wieder aktivieren.
  • Cronjobs
    Es ist in Einzelfällen vorgekommen, dass Cronjobs, die auf den bisherigen Servern liefen jetzt nicht mehr aktiv sind. Bitte fügen Sie diese wieder hinzu, sollte Ihr Benutzeraccount von dem Problem betroffen sein.
  • PHP
    Auf den neuen Webservern steht PHP 4 nicht mehr zur Verfügung, da es mittlerweile veraltet ist und sei Jahren nicht mehr mit Sicherheitsupdates versorgt wird. Verfügbar sind die PHP-Versionen 5.2, 5.3, 5.5 und 5.6. Die Standard-PHP-Version hat sich nicht geändert, für ältere Accounts ist dies weiterhin PHP 5.3. Sie können auch eine andere PHP-Version auswählen, Informationen dazu finden Sie hier. Bitte beachten Sie: Die Deaktivierung des ebenfalls veralteten PHP 5.2 ist für den 1.7.2015 geplant.
    Aus Sicherheitsgründen wurde weiterhin die PHP-Einstellung “allow_url_fopen” in allen PHP-Versionen standardmäßig deaktiviert. Sie können diese Einstellung über eine php.ini-Datei mit der Option “allow_url_fopen = on” wieder aktivieren.
  • SSH Host Keys
    Wir haben einige bestehende Webserver mit sehr vielen Präsenzen auf mehrere neue Server aufgeteilt, um die Leistung zu verbessern. Daher kommt es bei einigen Kunden-Accounts zu einer Warnung beim SSH- bzw. SFTP-Zugriff, dass sich der Host-Key geändert hat.
  • HTTP Status Codes
    Mit der neuen Apache-Version werden nur noch offizielle HTTP Status-Codes unterstützt. Die Verwendung inoffizieller Status-Codes wie 421 oder 509 in .htaccess-Direktiven führt jetzt zu einem Server-Fehler.
  • Server-Betriebssystem
    Durch den Wechsel der verwendeten Linux-Distribution von CentOS 5 auf Ubuntu 14.04 kann es für Kunden, die eigene Binärpakete nutzen, ebenfalls vereinzelt zu Problemen aufgrund aktuellerer Softwarepakete und Systembibliotheken kommen.