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
[…] Quelle: https://dev.scoutman.at/2014/01/x-powered-by-und-server-header-entfernen/ […]
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… 🙂
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’
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
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
Sorry aber nginx verwende ich selbst nicht.
Sehr sehr gut. Vielen Dank für die effektiven Tipps. Gleich umgesetzt.
Genau das habe ich gesucht! Perfekt, danke!
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
Danke für Ihren Beitrag sehr Interessant werde da mal checken!
Danke für den Beitrag. Doch leider bin ich noch nicht ganz weiter.
Gibt es auch eine .htaccess Lösung?
Manche der von mir genannten Apache Konfigurationen können auch direkt in die .htaccess geschrieben werden. Wichtig hier ist, die Apache Konfiguration muss das überschreiben der Standardwerte in der .htaccess zulassen. Am besten einfach ausprobieren und schauen ob es funktioniert.
Funktioniert auch in .htaccess:
ServerSignature – Direktive – https://httpd.apache.org/docs/2.4/de/mod/core.html#serversignature
oder
Header – Directive – https://httpd.apache.org/docs/2.4/de/mod/mod_headers.html#header
In der Apache Dokumentation steht immer der “Context” dabei, hier kann man sehen wo überall sich diese Einstellungen verwenden lassen.
Hat geholfen
Guter Beitrag. Weiter so.
Guter Beitrag!
Die php.ini Datei ist nicht ganz vollständig. Aber trotzdem gut.
Danke, “expose_php = Off” hat bei mir bestens funktioniert.
lg
Jochen
@badspiegel
debugging?
Im Falle von Plesk Werbung?
Wo findet man bei WordPress die PHP.ini?
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
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
ich meinte
Header unset X-Powered-By
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.
warum tut man sowas rein wenn es gefährlich ist?