Cambia intestazione HTTP "Server:" HTTP Apache


33

Una delle intestazioni HTTP che Apachehttpd restituisce con i dati di risposta è "Server". Ad esempio, la mia macchina server web è Arch Linux relativamente aggiornata. Restituisce le intestazioni simili a quanto segue:

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

Ho ServerSignature offin /etc/httpd/conf/httpd.conf, ma il "Server:" appare ancora intestazione. Ho sperimentato mod_headers . L'ho abilitato e ho provato alcune cose:

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

Dopo l'arresto e l'avvio httpdcon la configurazione precedente, le intestazioni HTTP includono qualcosa di simile ProcessingTime: 1523, ma la riga di intestazione "Server:" rimane invariata. Quindi so che "mod_headers" è installato e abilitato, e funziona, ma non come desidero.

Vedo che qualcosa chiamato "mod_security" pretende di farlo, ma non voglio tutto il resto del bagaglio che mod_security porta con sé.

AGGIORNARE:

Una volta mod_securityinstallato, sono necessarie solo alcune direttive:

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

Questo è per mod_security2.7.7


3
Hai riavviato Apache da quando hai modificato il file conf? Inoltre non ho mai visto il file chiamato "httpd.com", di solito si chiama "httpd.conf".
Michael Ozeryansky,

@MichaelOzeryansky - grazie per aver colto l'ortografia. È "httpd.conf". Mi fermo e avvio httpd dopo aver cambiato httpd.conf.
Bruce Ediger,

Risposte:


12

L'intestazione ID server / token è controllata dalla direttiva " ServerTokens " (fornita da mod_core). A parte la modifica del codice sorgente HTTPD Apache o l'utilizzo del mod_securitymodulo, non esiste altro modo per sopprimere completamente l'intestazione dell'ID server.

Con l' mod_securityapproccio, è possibile disabilitare tutte le direttive / funzioni del modulo nel modsecurity.conffile e sfruttare solo la direttiva ID intestazione del server senza alcun "bagaglio" aggiuntivo.


Questo funziona, grazie mille. Devo notare che mod_security non è uno dei normali pacchetti di Arch Linux. C'è un PKGBUILD nell'AUR, ma non è stato aggiornato dal 2011 (dal 12 aprile 2014) e fa riferimento a una versione davvero vecchia di mod_security. Come sempre, la tua distribuzione può variare.
Bruce Ediger,

25

mod_security è fantastico, ma non è davvero necessario per raggiungere il tuo obiettivo.

dopo che tutte le mod sono state incluse in httpd.confte puoi semplicemente disinserire le intestazioni di tua scelta.

Header unset Server

ServerSignature Off
ServerTokens Prod

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


2
mod_sec è necessario per un testo personalizzato per nascondere completamente il lavoro apache altrimenti la tua soluzione è buona e semplice :)
intika

Questo non ha alcun effetto per me usando Apache 2.2 (patchato) su Centos 6.
jph

1
In Apache 2.4, viene riportato come errore di sintassi: comando "Header" non valido, forse errato o definito da un modulo non incluso nella configurazione del server
Raptor,

3
@Raptor Devi installare mod_headers consudo a2enmod headers
Ortomala Lokni il

1
Header unset Servernon funziona in Apache 2.2 e 2.4. Le intestazioni di risposta contengono ancoraServer: Apache
Maris B.

13

Sto solo aggiornando questo per le persone che stanno ancora cercando. Ho avuto problemi a ottenere la riga del server nell'intestazione HTTP modificata. Questo consiglio dovrebbe funzionare per le distro delle filiali Debian con systemd e Apache 2.4.7. In particolare, sto usando Ubuntu Server LTS 14.04.03. Qualche consiglio che ho trovato è stato quello di fare

grep -Ri servertokens /etc/apache2

Questo mi ha portato a /etc/apache2/conf-available/security.conf dove sono stati specificati sia ServerTokens che ServerSignature. Pertanto, qualsiasi modifica che stavo apportando a /etc/apache2/apache2.conf veniva sovrascritta dalle direttive già specificate in security.conf.

Ho semplicemente cambiato le direttive in security.conf e Apache ha iniziato a funzionare come volevo.

ServerTokens Prod
ServerSignature Off

Sull'argomento Header unset Server, ho trovato una segnalazione di bug in cui gli sviluppatori Apache dicevano che non si trattava di un problema. Apparentemente per loro si tratta di un problema filosofico, nonostante le specifiche per HTTP / 1.1, RFC 2616, create in parte da Tim Berners-Lee, affermano che il tag Server è facoltativo.

Volevo davvero impostare il tag Server su "Sconosciuto" per rendere felici le nostre scansioni Qualys. Quindi, ho installato mod_security, ora chiamato libapache2-modsecurity, seguendo questo tutorial DigitalOcean . Buona fortuna, spero di aver aiutato tutti voi futuri lettori.


1

Ho testato qualcosa su Oracle HTTP Server 11.1.1.9 (che è basato su Apache 2.2.22) che ha funzionato per me, in una certa misura ...

L'impostazione di "ServerTokens" su "none" sembra rimuovere il valore dell'intestazione "Server", sebbene l'intestazione stessa continui a essere inviata nella risposta, ma ora ha un valore nullo.

Server Non ne accetta nessuno

L'intestazione della risposta sarebbe simile alla seguente:

HTTP / 1.1 200 OK

Data: lun, 28 dic 2015 07:02:45 GMT

Server:

Ultima modifica: Dom, 27 dic 2015 07:29:13 GMT

.

.


2
Sullo stock di Apache 2.2, dai repository di Centos 6, l'impostazione di un valore "none" fa sì che Apache generi tutti i dati. Ad esempio: "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

d'accordo, non puoi usare nonel'ultimo Apache:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.