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

 

27 Kommentare » Schreibe einen Kommentar

  1. Hallo,

    unter CentOS sind es folgende Pfade:

    RPM Query Configuration Files
    /etc/php.d/curl.ini
    /etc/php.d/fileinfo.ini
    /etc/php.d/json.ini
    /etc/php.d/phar.ini
    /etc/php.d/zip.ini
    /etc/php.ini
    /etc/httpd/conf.d/php.conf
    /etc/httpd/conf.modules.d/10-php.conf

    Zum Finden von Dateien, folgenden Befehl verwenden:

    [root@centos7 ~]# find / -name php.ini
    Ausgabe: /etc/php.ini

    Hoffe, das hilft ein wenig… 🙂

  2. Webserver Version im Header

    Hallo,

    vielleicht kann mir hier jemand weiterhelfen
    Möchte folgendes unterbinden:
    „Die Webserver Version wird im Header mitgesendet.“

    Habe folgendes in der .htaccess versucht:

    Header always unset X-Powered-By
    Header always unset X-Pingback
    Header always unset SERVER

    Die Server Version wird aber immer noch mitgesendet….

    Eine Php.ini habe ich auch erstellt und auf den ftp server mit folgendem hochgeladen:
    expose_php = Off
    ServerSignature = Off
    ServerTokens = Prod

    hat aber auch nichts gebracht…

    Leider kann mir bei Strato keiner weiterhelfen…
    vielleicht hatte hier jemand ähnliches Problem??

    ServerTokens wo finde ich die oder wo kann ich die einfügen

    Danke für eure Hilfe!

    • Bei Strato kenne ich mich leider nicht aus aber der Support bei denen sollte diese normal beantworten können.

    • @ max:

      Bin auch bei Strato (V-server) und ich habe das in meiner .htaccess stehen:

      #################################################
      ##### SECURITY HEADER #####
      #################################################
      Header set X-Content-Type-Options “nosniff”
      Header set X-XSS-Protection “1; mode=block”
      Header set X-Frame-Options “SAMEORIGIN”
      Header always unset “X-Powered-By”

      Header always set X-Content-Type-Options ‘nosniff’

  3. Sehr schön erklärter Beitrag!
    Aber wo finde ich diese besagten Dateien, wie php.ini, etc…?
    Komme ich da über phpMyAdmin dran, oder brauche ich Zugriff auf den Server direkt, also das Betriebssystem des Server’s?

    • Hallo Stephan,

      über phpMyAdmin kommt man nur auf die Datenbank. Die php.ini ist eine Konfigurationsdatei von PHP welche sich im System des Serves befindet. Hat man ein Serverhosting kann man oftmals auf deren Adminbereich auf bestimmte Konfigurationen der php.ini zugreifen, das ist aber alles sehr abhängig von den verschiedenen Hosting Anbietern.

      Details zu php.ini findet man sonst noch hier: http://php.net/manual/de/configuration.file.php

  4. Hallo,
    wir nutzen einen nginx Server, wie sieht es hier mit der Beseitigung der X-Powered Ausgabe aus? Kannst Du dazu was sagen?

    Danke aus Berlin

  5. 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

  6. 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

  7. 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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert