X-Powered-By und Server Header entfernen

Viele Apache Server sind in ihrer Standard Installation sehr freizügig mit der Bekanntgabe von Informationen. Dies betrifft vor allem den X-Powered-By und Server Header. Diese sollten aus Sicherheitsgründen immer deaktiviert bzw. die Ausgabe minimiert werden. Durch die Ausgabe der laufenden PHP oder Apache Version oder welcher Server dahinter steckt, würde man einen Angreifer unnötig in die Hände spielen.

Beispiel eines X-Powered-By Headers der die PHP Version ausgibt:

X-Powered-By: PHP/5.4.0

Servers der anzeigt, dass es sich um eine Plesk Installation handelt:

X-Powered-By PleskLin

Der Server Header kann auch einiges verraten:

Server: Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.6

Um die Ausgabe zu unterbinden, gibt es mehrere Möglichkeiten.

 

Apache

Mit dem folgenden Eintrag in der /etc/apache2/httpd.conf (Pfad kann variieren) kann der X-Powered-By Header entfernt werden.

Header unset X-Powered-By

 

Plesk Server (Version 11)

Um auf einem Plesk Server den X-Powered-By  Header auszublenden, muss man etwas anders vorgehen. Hier werden die Config Dateien automatisch generiert. Eine Variante ist es in der server.php die folgende Zeile auszukommentieren.

In Datei: /usr/local/psa/admin/conf/templates/default/server.php

Zeile ersetzen gegen

#Header add X-Powered-By PleskLin

anschließend mit dem Befehl die Konfiguration neu laden

/usr/local/psa/admin/sbin/httpdmng --reconfigure-all

 

PHP

Um den Server Header zu hindern die PHP Version auszugeben, muss in der php.ini der folgende Eintrag gesetzt werden.

expose_php = Off

So wird zum Beispiel aus

Server: Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.

nur noch

Server: Apache/2.4.7 (Win32) OpenSSL/1.0.1e

 

ServerTokens und ServerSignature

Wie manchen vielleicht auffällt, gibt im letzten Beispiel der Server Header noch immer einiges an Infos aus. Dafür ist die ServerTokens Einstellung im Apache verantwortlich. Diese sollte im produktiven Einsatz immer auf Prod gestellt sein.

Unter Ubuntu findet man die Einstellung in der Datei: /etc/apache2/conf.d/security
Ansonsten kann es auch in der apache2.conf oder httpd.conf definiert werden.

ServerTokens Prod

Nach dem Server Neustart sieht der Server Header so aus

Server: Apache

Zusätzlich muss in der Config Datei ServerSignature auf Off gesetzt werden.

ServerSignature Off

Dadurch wird die Signatur auf automatisch generierten Seiten (Fehlerseiten, Verzeichnisauflistungen) deaktiviert. Ohne diese Einstellung sieht zum Beispiel eine 404er Fehlerseite so aus.

Not Found

The requested URL /ad was not found on this server.
Apache Server at 192.168.0.100 Port 80

 

18 Kommentare » Schreibe einen Kommentar

  1. Danke für die Information – das war eine große Hilfe! In der Welt des Internet (und nicht nur in der) lernt man eben jeden Tag wieder was Neues dazu…
    Beste Grüße, Johannes

    • WordPress und php.ini sind zwei verschiedene Baustellen. WP ist eine Software welche man auf einem Webserver mit PHP installiert. Die php.ini ist eine Konfigurationsdatei für PHP. Je nach Webhoster gibt es verschiedene Zugänge zu dieser Datei und wie man diese bearbeiten kann. Hier am besten bei deinem Hoster anfragen. Details zur php.ini findet man hier -> php.ini

  2. Den zu gesprächigen Header kann man auch komplett durch Apache entfernen.

    Das geht über folgende Apache-Konfiguration bzw. in .htacces eintragen:

    Header unset X-Powered-By

  3. Danke, das hat mir schonmal sehr weitergeholfen, da ein SEO-Tool so freundlich war, mich darauf hinzuweisen. Header unset X-Powered-By hat bei meinem Apache-Server nicht geholfen, aber durch expose_php = Off und ServerTokens ist dann doch alles prima.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.