Bekanntermaßen werden über den PHP-Header HTTP-Informationen gesendet. Darunter auch X-Powered-By, worüber Informationen über das verwendete System anzeigt werden. Diese Ausgabe ist normalerweise nicht nötig und kann sogar gefährlich sein, weil Hacker solche Informationen eventuell für einen Angriff ausnutzen könnten. Je nach System gibt es unterschiedliche Wege, X-Powered-By zu entfernen.
Nicht zuviel verraten und Angriffe vermeiden!
Je nach System unterscheidet sich die Vorgehensweise, um den X-Powered-By-Header zu entfernen. Oft reicht es eben nicht, nur die Datei php.ini zu modifizieren oder die Apache-Konfiguration mit Header always "unset X-Powered-By" z.B. in der htaccess-Datei anzupassen, vor allem wenn Verwaltungs-Tools bzw. Administrationswerkzeuge wie Confixx oder Plesk usw. und vielleicht noch Nginx eingesetzt werden.
Es ist also kaum möglich, eine Beschreibung für alle Systeme in möglichst kurzen Worten zu verfassen. Deshalb soll es hier exemplarisch um einen virtuellen Server mit Debian 8, Nginx und Plesk 17 gehen, wie er auch bei Ahadesign.eu verwendet wird. Ein Shell-Zugriff auf den Server z.B. via Putty, ist natürlich Voraussetzung. Auf Linux-Befehle für den Verzeichniswechsel, Kopieren usw. wird hier nicht extra eingegangen. Sicher lassen die nachfolgenden Ausführungen auch Rückschlüsse auf andere Systeme zu.
Kommt Plesk zum Einsatz, muss zunächst die Datei server.php modifiziert werden. Der Pfad zur Datei lautet:
/opt/psa/admin/conf/templates/default/server.php
Wenn man jetzt diese Datei verändert, ist nach einem Update von Plesk alles wieder futsch. Aus diesem Grund verwendet man anstelle des Ordners default, das Verzeichnis custom. Also wird dieser Ordner erstellt und die server.php dort hinein kopiert. Damit sieht der neue Pfad so aus:
/opt/psa/admin/conf/templates/custom/server.php
Jetzt kann aus dieser Datei der Eintrag für Powered-By wie er im ersten Screenshot ganz oben zu sehen ist, ganz einfach gelöscht werden. Ist dies geschehen, werden die Server-Konfigurationsdateien mit folgendem Befehl neu generiert:
/opt/psa/admin/bin/httpdmng --reconfigure-all
Damit ist ein wichtiger Schritt getan. Dennoch könnten jetzt noch Angaben zur Linux-Distribution wie Debian oder ähnlich, erscheinen. Dies könnte man eventuell mit folgendem Befehl für die Datei php.ini verhindern:
expose_php = off
Normalerweise ist der Befehl bereits vorhanden und wird nur von "on" auf "off" gesetzt. Die Datei php.ini kommt allerdings mehrfach vor. Man müsste je nach Konfiguration also folgende Pfade berücksichtigen:
/etc/php5/cgi/php.ini
/etc/php5/fpm/php.ini
/etc/php5/apache2/php.ini
Ändert man in allen Pfaden, ist das sicher kein Schaden. In dem hier beschriebenen Fall für Debian 8 und Plesk, kann man sich diesen Vorgang aber komplett sparen. Er würde wohl nicht dauerhaft zum Erfolg führen.
Wirklich funktionieren wird es, wenn man das Plesk-Panel und dort die PHP-Einstellungen für diesen Befehl bemüht.
Diese Einstellungen sind in Plesk auf unterschiedlichen Wegen erreichbar. Z.B. über ein angelegtes Service-Paket für einen Reseller.
Also einfach im Menü auf Service-Pakete und dann auf einen Paketnamen klicken. Der Eintrag von expose_php = off erfolgt dann im Reiter "PHP-Einstellungen" ganz unten bei den zusätzlichen Konfigurationsanweisungen.
Ein anderer Weg wäre der Klick auf ein Abonnement. Dort steht ein Link zu den PHP-Einstellungen zur Verfügung und die Eintragung erfolgt auf die gleiche Weise, wie eben für den Reseller beschrieben.
Erscheint jetzt trotzdem noch eine Information wie X-Powered-By PlesLin, liegt das wohl an statischen NGINX-Dateien. Aber auch das lässt sich durch Modifikation der Datei nginxDomainVirtualHost.php lösen.
So sieht der Pfad aus:
/opt/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php
Wie man sich denken kann, würden nach einem Plesk-Update auch hier die Änderungen verworfen werden. Es wird also wieder ein Custom-Ordner erstellt und die Datei dann dorthin kopiert. Dann ist es folgender Pfad:
/opt/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php
Damit sollte der X-Powered-By Header in allen Situationen entfernt sein und nicht mehr zuviel an Angreifer verraten.
Für eine entsprechende Prüfung nicht nur des X-Powered-By Headers gibt es eine Vielzahl an Diensten wie z.B. GTMetrix.