ServerSignature und ServerTokens bei Apache und NGINX unterdrücken. PHP-Version im HTTP Server Header unterdrücken
Es gibt zahlreiche Möglichkeiten, wie Webseiten Sicherheitsbedrohungen ausgesetzt werden. Informationen in der ServerSignature and ServerTokens sind für Systeme erhöhte Risiken und können gegen sie eingesetzt werden.
Die Apache ServerSignature und ServerTokens liefert wichtige Information über den WebServer mit den Erweiterungen und das Betriebssystem. Bei einem Apache WebServer auf Debian GNU/Linux wird die Apache Versionsnummer und die Betriebssysteminformation in der HTTP Server Header Signature angezeigt.
$ 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)... 198.51.100.21
Connecting to www.foo.com (www.foo.com)|198.51.100.21|: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 9 gibt aufschluss über die Webserver Versionsnummer und die PHP-Version, die OpenSSL Version für Transport Layer Security sowie das Betriebssystem.
HTTP ServerSignature und ServerTokens
Mit ServerSignature und ServerTokens 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 unterdrückt werden kann.
Apache HTTP ServerSignature und ServerTokens bei Debian deaktivieren
Unter Debian 10 oder neuer wird die Direktive Serversignature und ServerTokens in der Datei security.conf
vorgenommen.
$ vi /etc/apache2/conf-available/security.conf
Die Standard Einstellung bei Debian und auch bei Ubuntu für ServerSignature ist On und für ServerTokens ist Full.
Daktivieren und unterdrücken lassen sich die Server Signaturen mit ServerSignature Off und ServerTokens Prod.
ServerTokens Prod
ServerSignature Off
Die Änderung der Apache Webserver Konfiguration übermehmen.
$ systemctl restart apache2.service
Apache HTTP ServerSignature und ServerTokens bei RedHat deaktivieren
Bei Rocky Linux (RedHat) wird die änderung von ServerSignature und ServerTokens in der Apache Konfiguration httpd.conf editiert.
$ vi /etc/httpd/conf/httpd.conf
...
ServerTokens Prod
ServerSignature Off
..
Die Unterdrückung der HTTP-ServerSignature und ServerTokens für Rocky Linux aktivieren.
$ systemctl restart httpd.service
Nach deaktivierung von ServerSignature und ServerTokens wird die Version in der HTTP Server Header Ausgabe nicht mehr angezeigt. Die überprüfung der änderung kann mit wget
oder hier gemacht werden.
$ 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)... 198.51.100.21
Connecting to www.foo.com (www.foo.com)|198.51.100.21|: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 unterdrücken der Serversignatur kann auch mit einer .htaccess-Datei erreicht werden, diese wird falls nicht bereits vorhanden, in der Docroot erstellt.
htaccess kann nur mit Apache-Webserver benutzt werden.
$ echo -e "ServerTokens Prod\nServerSignature Off" >> .htaccess
PHP-Version im HTTP Server Header unterdrücken
Die Ausgabe der PHP Versionsnummer wird bei Debian wie folgt in der Datei php.ini unterdrückt.
$ vi /etc/php/7.4/apache2/php.ini
...
expose_php = Off
..
Bei RedHat wird die PHP Version Header unterdrückung in php.ini aktiviert.
$ 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.
ServerTokens Prod
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 Minimal
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.1
Diese Einstellung gilt für den gesamten Webserver und kann nicht auf Virtualhost-Basis aktiviert oder deaktiviert werden.
NGINX HTTP Server_tokens OFF
Für den Nginx Webserver ist die Datei nginx.conf zu editieren.
$ vi /etc/nginx/nginx.conf
http {
...
server_tokens off;
...
Die unterdrückung der Nginx Serversignature aktivieren.
$ systemctl restart nginx.service
Die Nginx Version wird nicht mehr angezeigt.
wer seine website bei einem hosting anbieter untergebracht hat, muss sich mit .htaccess begnügen, dort wird „ServerSignature Off“ eingefügt.