Ändern Sie den HTTP-Header von Apache httpd "Server:"

33

Einer der HTTP-Header, die der Apachehttpd mit Antwortdaten zurücksendet, ist "Server". Zum Beispiel ist mein Webserver relativ aktuelles Arch Linux. Es sendet Header zurück, die ungefähr so ​​aussehen:

HTTP/1.1 404 Not Found
Date: Thu, 10 Apr 2014 17:19:27 GMT
Server: Apache/2.4.9 (Unix)
Content-Length: 1149
Connection: close
Content-Type: text/html

Ich habe ServerSignature offin /etc/httpd/conf/httpd.conf, aber die Überschrift "Server:" wird weiterhin angezeigt. Ich habe mit mod_headers experimentiert . Ich habe es aktiviert und ein paar Dinge ausprobiert:

<IfModule headers_module>
Header set ProcessingTime "%D"
Header set Server BigJohn
</IfModule>

Nach dem Beenden und Starten httpdmit der obigen Konfiguration enthalten die HTTP-Header so etwas wie ProcessingTime: 1523, aber die Kopfzeile "Server:" bleibt unverändert. Ich weiß also, dass "mod_headers" installiert und aktiviert ist und funktioniert, aber nicht so, wie ich es mir wünsche.

Ich sehe, dass etwas mit dem Namen "mod_security" behauptet, dies zu tun, aber ich möchte nicht den ganzen Rest des Gepäcks, das mod_security mit sich führt.

AKTUALISIEREN:

Sobald Sie mod_securityinstalliert sind, benötigen Sie nur ein paar Anweisungen:

<IfModule security2_module>
SecRuleEngine on
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"
</IfModule>

Das ist für mod_security2.7.7

Bruce Ediger
quelle
3
Haben Sie Apache seit dem Ändern der Conf-Datei neu gestartet? Außerdem habe ich die Datei "httpd.com" noch nie gesehen, normalerweise heißt sie "httpd.conf".
Michael Ozeryansky
@MichaelOzeryansky - danke, dass du die Rechtschreibfehler abgefangen hast. Es ist "httpd.conf". Ich stoppe und starte httpd, nachdem ich httpd.conf geändert habe.
Bruce Ediger

Antworten:

12

Der Server- ID- / Token-Header wird durch die (von bereitgestellte mod_core) " ServerTokens " -Direktive gesteuert . Abgesehen von der Änderung des Apache HTTPD-Quellcodes oder der Verwendung des mod_securityModuls gibt es keine andere Möglichkeit, den Server-ID-Header vollständig zu unterdrücken.

Mit diesem mod_securityAnsatz können Sie alle Anweisungen / Funktionen des Moduls in der modsecurity.confDatei deaktivieren und nur die Server-Header-ID-Anweisung ohne zusätzliches "Gepäck" verwenden.

Chipster
quelle
Das funktioniert, vielen Dank. Ich muss beachten, dass mod_security nicht zu den gewöhnlichen Paketen von Arch Linux gehört. Es gibt ein PKGBUILD im AUR, aber es wurde seit 2011 (Stand: 12. April 2014) nicht mehr aktualisiert und es verweist auf eine wirklich alte Version von mod_security. Wie immer kann Ihre Distribution variieren.
Bruce Ediger
25

mod_security ist großartig, aber Sie brauchen es nicht wirklich, um Ihr Ziel zu erreichen.

Nachdem alle Mods enthalten sind, httpd.confkannst du einfach die Header deiner Wahl entfernen.

Header unset Server

ServerSignature Off
ServerTokens Prod

http://httpd.apache.org/docs/2.4/mod/core.html#serversignature

Matt Ryan
quelle
2
mod_sec wird für einen benutzerdefinierten Text benötigt, um die Arbeit Apache vollständig zu verbergen, sonst ist Ihre Lösung gut und einfach :)
intika
Dies hat keine Auswirkungen auf die Verwendung von Apache 2.2 (gepatcht) auf Centos 6.
jph
1
In Apache 2.4 wird dies als Syntaxfehler gemeldet: Ungültiger Befehl 'Header', möglicherweise falsch geschrieben oder von einem Modul definiert, das nicht in der Serverkonfiguration enthalten ist
Raptor
3
@Raptor Du musst mod_headers mitsudo a2enmod headers
Ortomala Lokni 15.11.16
1
Header unset Serverfunktioniert nicht in Apache 2.2 und 2.4. Antwort-Header enthält nochServer: Apache
Maris B.
13

Ich aktualisiere dies nur für Leute, die noch suchen. Ich hatte Probleme, die Serverzeile im HTTP-Header zu ändern. Dieser Rat sollte für Debian Branch Distributionen mit Systemd und Apache 2.4.7 funktionieren. Insbesondere verwende ich Ubuntu Server LTS 14.04.03. Einige Ratschläge, die ich fand, waren zu tun

grep -Ri servertokens /etc/apache2

Dies führte mich zu /etc/apache2/conf-available/security.conf, wo sowohl ServerTokens als auch ServerSignature angegeben wurden. Daher wurden alle Änderungen, die ich an /etc/apache2/apache2.conf vorgenommen habe, durch die bereits in security.conf angegebenen Anweisungen überschrieben.

Ich habe einfach die Direktiven in security.conf geändert und Apache fing an zu arbeiten, wie ich wollte.

ServerTokens Prod
ServerSignature Off

Beim Thema "Header unset Server" habe ich einen Fehlerbericht gefunden, in dem die Apache-Entwickler angegeben haben, dass das Problem nicht behoben werden kann. Anscheinend ist es für sie ein philosophisches Problem, obwohl die Spezifikation für HTTP / 1.1, RFC 2616, teilweise von Tim Berners-Lee verfasst, besagt, dass das Server-Tag optional ist.

Ich wollte unbedingt das Server-Tag auf "Unbekannt" setzen, um unsere Qualys-Scans zufrieden zu stellen. Also habe ich mod_security, jetzt libapache2-modsecurity genannt, nach diesem DigitalOcean-Tutorial installiert . Viel Glück, ich hoffe, ich habe allen zukünftigen Lesern geholfen.

slmaq
quelle
1

Ich habe auf Oracle HTTP Server 11.1.1.9 (der auf Apache 2.2.22 basiert) etwas getestet, das in gewissem Maße für mich funktioniert hat.

Das Setzen der "ServerTokens" auf "none" scheint den "Server" -Headerwert zu entfernen, obwohl der Header selbst weiterhin in der Antwort gesendet wird, aber jetzt einen Nullwert hat.

ServerTokens none

Der Antwortheader würde folgendermaßen aussehen:

HTTP / 1.1 200 OK

Datum: Montag, 28. Dezember 2015, 07:02:45 Uhr GMT

Server:

Letzte Änderung: Sonntag, 27. Dezember 2015, 07:29:13 Uhr GMT

.

.

Mohab Elsayed
quelle
2
Bei Apache 2.2-Aktien werden ab Centos 6-Repos alle Daten von Apache ausgegeben, wenn der Wert "none" festgelegt wird. Zum Beispiel: "Server: Apache / 2.2.15 (CentOS) DAV / 2 PHP / 5.3.3 mod_ssl / 2.2.15 OpenSSL / 1.0.1e-fips Phusion_Passenger / 4.0.59 mod_perl / 2.0.4 Perl / v5.10.1"
jph
Einverstanden, Sie können nicht noneauf neuesten Apache verwenden:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
Vladkras