Auf Fehlerseiten wie der berühmten “404 – Not Found” oder in den für jedermann einfach auslesbaren Header-Information verraten Webserver-Signatur und Banner deines Servers, welche Software-Versionen du auf deinem Server einsetzt. Mit diesen Detailinformationen können Angreifer gezielt in Datenbanken nach bekannten Schwachstellen suchen, ohne irgendeine Anstrengung unternehmen zu müssen, das sogenannte Banner-Grabbing oder OS-Fingerprinting. Du solltest daher verhindern, dass deine Server auf Anfrage Auskunft über mögliche Schwachstellen gibt, denn damit erschwerst du Angreifern ihr Handwerk.
Was ist eigentlich OS-Fingerprinting und Banner-Grabbing?
Hier findest du weitere Informationen zum Thema OS-Fingerprinting und Banner-Grabbing.
So machst du die Banner-Informationen sichtbar
Welche Informationen deine Webserver im sogenannten Webserver-Banner preisgibt, kannst du zum Beispiel mit einem Browser-Plugin wie “Live HTTP Headers” überprüfen.
Live HTTP Headers gibt es für Mozilla Firefox (derzeit aber nicht für Firefox Quantum verfügbar) und Google Chrome.
Zum Download von Live HTTP Headers für Firefox.
Hier findest du das Add-on Live HTTP Headers für Chrome.
Eine Alternative für Firefox Quantum ist das Add-on HTTP Header Live
Zum Download von HTTP Header Live
Nach der Installation solltest du den Browser neu starten. “Live HTTP Headers” erscheint dann als neues Icon in der Menüleiste. Mit einem Klick auf das Icon öffnet sich ein Fenster, das die Header der im Browser aufgerufenen Webseiten mitprotokolliert. Wenn du deine eigene Webseite nun aufrufst, siehst du die im Header übertragenen Webserver-Banner-Informationen.
Abbildung: In der Standardkonfiguration verrät Apache in der Regel mindestens die Webserver-Version sowie das eingesetzte Betriebssystem. Im schlimmsten Fall plaudert dein Webserver zusätzlich Versionsdetails zu eingesetzten Webserver-Modulen und deiner PHP-Version aus.
Verbiete Apache das Senden von Versionsinformationen zu installierter Software
Unter dem aktuellen Apache2 konfigurierst du mit den Parametern “ServerSignature” und “ServerTokens” das Antwortverhalten des Servers und legst fest, welche Informationen übertragen werden. Dafür ermittelst du zunächst, wo du die Konfigurationsdatei findest. Das erfährst du unter Debian mit dem folgenden Kommando:
apache2ctl -V
In der Ausgabe findest du unter anderem zwei Einträge:
- “-D HTTP_ROOT”, hinter dem das Basisverzeichnis aufgeführt ist, z.B.: “/etc/apache2/”.
- “-D SERVER_CONFIG_FILE “, der angibt, welche Datei unterhalb dieses Verzeichnisses die Apache-Konfiguration enthält, z.B. die Datei “apache2.conf”.
In der Konfigurationsdatei “/etc/apache2/apache2.conf” werden dann mit dem Schlüsselwort “include” weitere Verzeichnisse mit Konfigurationsdateien eingebunden. Unter Debian finden wir die Konfigurationsdatei, in der “ServerSignature” und “ServerTokens” definiert sind, unter “/etc/apache2/conf.d/security”. Hier änderst du nun die beiden Einträge wie folgt ab:
ServerSignature Off
ServerTokens ProductOnly
“ServerSignature Off” deaktiviert das Anzeigen der Detailinformationen z.B. für Fehlerseiten. “ServerTokens ProductOnly” sorgt dafür, dass im Banner nur noch die Produktbezeichnung des Webservers genannt wird, jedoch keine Details oder Produktversionen.
Abbildung 2: In der Konfiguration von Apache änderst du die Vorgaben für “ServerSignature” und “ServerTokens”.
Abschließend startest du deinen Apache-Webserver neu, damit die Änderungen der Konfigurationsdatei übernommen werden:
apache2ctl restart
Lasse dir nun die Header-Informationen deiner Website z.B. im Firefox erneut anzeigen. Statt Apache-Versionsnummer und Betriebssystem wird nur noch “Apache” ausgegeben.