HTTP-Server-Header, Serversignatur bei Apache, PHP, Nginx
Es gibt zahlreiche Möglichkeiten, wie Webseiten Sicherheitsbedrohungen ausgesetzt werden. Informationen in der Serversignatur sind für Systeme erhöhte Risiken und können gegen sie eingesetzt werden.
Die Serversignatur liefert wichtige Information über den Server mit den Erweiterungen und das Betriebssystem. Bei einem Apache Server auf Debian GNU/Linux wird die Apache Versionsnummer und Betriebssysteminformation in der HTTP Server Header Signatur angezeigt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ wget --server-response --spider http://www.foo.com/index.php Spider mode enabled. Check if remote file exists. --2020-12-12 14:41:06-- http://www.foo.com/index.php Resolving www.foo.com (www.foo.com)... 192.168.123.45 Connecting to www.foo.com (www.foo.com)|192.168.123.45|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 301 Moved Permanently Date: Sat, 12 Dec 2020 13:41:06 GMT Server: Apache/2.4.35 (Debian) PHP/7.3.5~deb10u2 OpenSSL/1.1.1i Location: https://www.foo.com/index.php Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 Location: https://www.foo.com/index.php [following] Spider mode enabled. Check if remote file exists. |
Diese im HTTP Server Header angezeigte Information bei Zeile 10 gibt aufschluss über die Webserver Versionsnummer und die PHP-Version, die OpenSSL Version für Transport Layer Security sowie das Betriebssystem.
Signaturen können vertrauliche Informationen zu den auf dem Webserver ausgeführten Softwareversionen enthalten. Wird eine Seite auf dem Server nicht gefunden, sendet der Server dem Client eine Fehlerseite, dabei erscheint im Browser die Seite, Not Found.

Ein toter Link wird mit dem HTTP-Statuscode 404 dem Browser zurückgegeben, dazu werden noch weitere Informationen über den Webserver sowie die verwendete Version bekanntgegeben.
Es wird empfohlen die Serversignatur zu deaktivieren, wenn das System vor offenen Bedrohungen geschützt werden soll. In diesem Tutorial wird gezeigt, wie die Serversignatur deaktiviert werden kann.
Apache HTTP Serversignatur bei Debian GNU/Linux deaktivieren
Unter Debian 10 (buster) wird die Konfiguration der Serversignatur in der Datei security.conf vorgenommen.
1 2 |
$ vi /etc/apache2/conf-available/security.conf |
Die Standard Einstellung bei Debian 10 (buster) und auch bei Ubuntu für ServerSignature ist On und ServerTokens ist Full. Daktivieren lassen sich diese wie folgt.
1 2 3 |
ServerTokens Prod ServerSignature Off |
Die änderung der Apache Webserver Konfiguration übermehmen.
1 2 |
$ systemctl restart apache2.service |
Apache HTTP Serversignatur bei CentOS GNU/Linux deaktivieren
Bei CentOS (RedHat) wird die änderung der Serversignatur in der Apache Konfigurationsdatei httpd.conf vorgenommen.
1 2 3 4 5 6 |
$ vi /etc/httpd/conf/httpd.conf ... ServerTokens Prod ServerSignature Off ... |
Deaktivierung der HTTP-Serversignatur für CentOS übernehmen.
1 2 |
$ systemctl restart httpd.service |
Nach der deaktivierung der Serversignatur wird diese in der HTTP Server Header Ausgabe nicht mehr angezeigt. Die überprüfung der änderung kann mit wget oder hier gemacht werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ wget --server-response --spider http://www.foo.com/index.php Spider mode enabled. Check if remote file exists. --2020-12-12 15:15:33-- http://www.foo.com/index.php Resolving www.foo.com (www.foo.com)... 192.168.123.45 Connecting to www.foo.com (www.foo.com)|192.168.123.45|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 301 Moved Permanently Date: Sat, 12 Dec 2020 14:15:33 GMT Server: Apache Location: https://www.foo.com/index.php Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 Location: https://www.foo.com/index.php [following] Spider mode enabled. Check if remote file exists. |
Das deaktivieren der Serversignatur kann auch mit einer .htaccess-Datei erreicht werden, diese wird falls nicht bereits vorhanden, in der Docroot erstellt.
1 2 |
$ echo -e "ServerTokens Prod\nServerSignature Off" >> .htaccess |
PHP-Version im HTTP Server Header deaktivieren
Die Ausgabe der PHP Versionsnummer wird bei Debian 10 (buster) wie folgt in der Datei php.ini deaktiviert.
1 2 3 4 5 |
$ vi /etc/php/7.3/apache2/php.ini ... expose_php = Off ... |
Bei CentOS (RedHat) wird der PHP Version Header in der php.ini unter folgendem Pfad vorgenommen.
1 2 3 4 5 |
$ vi /etc/php.ini ... expose_php = Off ... |
Apache HTTP-Response-Header
Die Apache ServerTokens Direktive hat die folgenden möglichen Werte, die an Clients gesendet werden, wenn der spezifische Wert festgelegt wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
ServerTokens Prod[uctOnly] Der Server sendet (zB): Server: Apache ServerTokens Major Der Server sendet (zB): Server: Apache/2 ServerTokens Minor Der Server sendet (zB): Server: Apache/2.0 ServerTokens Min[imal] Der Server sendet (zB): Server: Apache/2.0.41 ServerTokens OS Der Server sendet (zB): Server: Apache/2.0.41 (Unix) ServerTokens Full (oder nicht angegeben) Der Server sendet (zB): Apache/2.4.37 (Debian) PHP/7.3.5~deb10u2 OpenSSL/1.1.1d . |
Diese Einstellung gilt für den gesamten Server und kann nicht auf Virtual-Host-Basis aktiviert oder deaktiviert werden.
Nginx HTTP Server_tokens OFF
Für den Nginx Webserver ist die Datei nginx.conf zu editieren.
1 2 3 4 5 6 7 |
$ vi /etc/nginx/nginx.conf http { ... server_tokens off; ... |
Die deaktivierung der Nginx Serversignatur übernehmen.
1 2 |
$ systemctl restart nginx.service |