So entfernen Sie Server: Header aus der HTTP-Antwort mit Apache?

20

Ich möchte die Zeile entfernen:

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

Aus den HTTP-Antworten meines Servers, aber ich konnte nichts anderes finden, als include/ap_release.hApache selbst zu ändern und zu kompilieren. Ich habe mich gefragt, ob es einen Weg gibt, den ich nicht kenne.

Neo
quelle

Antworten:

16

Sie können die Serveridentifikation aus dem HTTP -Header entfernen oder maskieren, indem Sie die ModSecurity-Firewall für Open Source-Webanwendungen verwenden .

Server-Identitätsmaskierung

Eine Technik, die häufig dazu beiträgt, Angreifer zu verlangsamen und zu verwirren, ist die Änderung der Identität des Webservers. Webserver senden normalerweise ihre Identität mit jeder HTTP-Antwort im Server-Header. Apache ist hier besonders hilfreich, da nicht nur der Name und die Vollversion standardmäßig gesendet werden, sondern auch Servermodule ihre Versionen anhängen können.

Um die Identität des Apache-Webservers zu ändern, müssten Sie in den Quellcode wechseln, den Namen "Apache" fest codieren, ihn ändern und den Server neu kompilieren. Derselbe Effekt kann mit dem erzielt werden

SecServerSignature-Direktive:

SecServerSignature "Microsoft-IIS/5.0"

Es sollte beachtet werden, dass erfahrene Angreifer (und Tools), obwohl dies recht gut funktioniert, andere Techniken verwenden können, um den Webserver zu "fingern". Beispielsweise können Standarddateien, Fehlermeldungen, die Reihenfolge der ausgehenden Header, die Art und Weise, wie der Server auf bestimmte Anforderungen reagiert, usw. die wahre Identität preisgeben. Ich werde die Unterstützung für Identitätsmaskierung in zukünftigen Versionen von mod_security weiter verbessern.

Wenn Sie die Apache-Signatur ändern, sich jedoch über die seltsame Meldung im Fehlerprotokoll ärgern (einige Module sind weiterhin sichtbar - dies wirkt sich nur auf das Fehlerprotokoll aus, von außen funktioniert es weiterhin wie erwartet):

[Fri Jun 11 04:02:28 2004] [notice] Microsoft-IIS/5.0 mod_ssl/2.8.12 OpenSSL/0.9.6b \ configured -- resuming normal operations

Anschließend sollten Sie die Ladereihenfolge der Module neu anordnen, damit mod_security als letztes ausgeführt werden kann, genau wie für das Chrooten erläutert.

Hinweis

Damit diese Anweisung funktioniert, müssen Sie ServerTokens auf Full setzen.

Wenn die SecServerSignature-Direktive zum Ändern der öffentlichen Serversignatur verwendet wird, beginnt ModSecurity, die echte Signatur in das Fehlerprotokoll zu schreiben, damit Sie den Webserver und die verwendeten Module identifizieren können.

Quelle: ModSecurity-Referenzhandbuch

Chris_O
quelle
Es läuft gerade, aber ich denke, es ist nicht klug, einen anderen vorhandenen Servernamen zu verwenden, da Sie Angriffsaktionen auslösen können.
Codebeat
27

Wenn Sie ServerTokens" Prod" einstellen , können Sie den Header auf " Server: Apache" reduzieren . In der Dokumentation finden Sie eine vollständige Liste der Optionen:

Dokumentation für Apache 2.2

Dokumentation für Apache 2.4

Hinweis: Die Einstellungen sind in beiden Versionen gleich, die Dokumentation zu 2.4 fügt jedoch diesen Hinweis hinzu:

Das Festlegen von ServerTokens auf weniger als minimal wird nicht empfohlen, da dies das Debuggen von Interoperationsproblemen erschwert. Beachten Sie auch, dass das Deaktivieren des Servers: -Headers nichts dazu beiträgt, Ihren Server sicherer zu machen. Die Idee von "Sicherheit durch Dunkelheit" ist ein Mythos und führt zu einem falschen Gefühl von Sicherheit.

Wenn Sie das Wort "Apache" vollständig entfernen möchten, müssen Sie die Quelle ändern.

Grawity
quelle
+1 tnx für die Antwort, ich habe vergessen, in Frage zu erwähnen, dass mir dies bewusst war, aber ich möchte, dass es Microsoft IIS oder etwas sagt. Ich hätte das klarstellen sollen.
Neo