Cambiar el encabezado HTTP Apache httpd "Servidor:"

33

Uno de los encabezados HTTP que Apachehttpd devuelve con los datos de respuesta es "Servidor". Por ejemplo, mi máquina de servidor web está relativamente actualizada Arch Linux. Devuelve encabezados muy parecidos a los siguientes:

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

Tengo ServerSignature offen /etc/httpd/conf/httpd.conf, pero el "Servidor:" sigue apareciendo cabecera. He experimentado con mod_headers . Lo tengo habilitado y he intentado algunas cosas:

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

Después de detenerse y comenzar httpdcon la configuración anterior, los encabezados HTTP incluyen algo como ProcessingTime: 1523, pero la línea de encabezado "Servidor:" permanece sin cambios. Entonces sé que "mod_headers" está instalado y habilitado, y funciona, pero no como lo deseo.

Veo que algo llamado "mod_security" dice hacer esto, pero no quiero todo el resto del equipaje que lleva mod_security.

ACTUALIZAR:

Una vez que te mod_securityinstales, solo necesitas unas pocas directivas:

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

Eso es por mod_security2.7.7

Bruce Ediger
fuente
3
¿Has reiniciado Apache desde que cambiaste el archivo conf? Además, nunca he visto el archivo llamado 'httpd.com', generalmente se llama 'httpd.conf'.
Michael Ozeryansky
@MichaelOzeryansky: gracias por entender la falta de ortografía. Es "httpd.conf". Paro e inicio httpd después de cambiar httpd.conf.
Bruce Ediger

Respuestas:

12

El ID del servidor / encabezado de token está controlado por la directiva " ServerTokens " (proporcionada por mod_core). Además de modificar el código fuente Apache HTTPD, o usar el mod_securitymódulo, no hay otra forma de suprimir completamente el encabezado de ID del servidor.

Con este mod_securityenfoque, puede deshabilitar todas las directivas / funciones del módulo en el modsecurity.confarchivo y aprovechar solo la directiva de ID de encabezado del servidor sin ningún "equipaje" adicional.

Chipster
fuente
Esto funciona, muchas gracias. Tengo que tener en cuenta que mod_security no es uno de los paquetes ordinarios de Arch Linux. Hay un PKGBUILD en el AUR, pero no se ha actualizado desde 2011 (a partir del 12 de abril de 2014) y hace referencia a una versión muy antigua de mod_security. Como siempre, tu distribución puede variar.
Bruce Ediger
25

mod_security es genial, pero realmente no lo necesitas para lograr tu objetivo.

después de que se hayan incluido todas las modificaciones, httpd.confsimplemente puede desarmar los encabezados que elija.

Header unset Server

ServerSignature Off
ServerTokens Prod

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

Matt Ryan
fuente
2
mod_sec es necesario para que un texto personalizado oculte completamente el trabajo apache; de ​​lo contrario, su solución es buena y simple :)
intika
Esto no tiene ningún efecto para mí usando Apache 2.2 (parcheado) en Centos 6.
jph
1
En Apache 2.4, se informa como error de sintaxis: comando 'Encabezado' no válido, quizás mal escrito o definido por un módulo no incluido en la configuración del servidor
Raptor
3
@Raptor Tienes que instalar mod_headers consudo a2enmod headers
Ortomala Lokni
1
Header unset Serverno funciona en Apache 2.2 y 2.4. Los encabezados de respuesta todavía contienenServer: Apache
Maris B.
13

Simplemente actualizo esto para las personas que todavía están buscando. Estaba teniendo problemas para cambiar la línea del servidor en el encabezado HTTP. Este consejo debería funcionar para las distribuciones de sucursales de Debian con systemd y Apache 2.4.7. Específicamente, estoy usando Ubuntu Server LTS 14.04.03. Un consejo que encontré fue hacer

grep -Ri servertokens /etc/apache2

Esto me llevó a /etc/apache2/conf-available/security.conf donde se especificaron ServerTokens y ServerSignature. Por lo tanto, los cambios que estaba haciendo en /etc/apache2/apache2.conf estaban siendo sobrescritos por las directivas ya especificadas en security.conf.

Simplemente cambié las directivas en security.conf y Apache comenzó a funcionar como quería.

ServerTokens Prod
ServerSignature Off

Sobre el tema de Header unset Server, encontré un informe de error en el que los desarrolladores de Apache dijeron que no es un problema solucionado. Aparentemente para ellos es un problema filosófico, a pesar de que la especificación para HTTP / 1.1, RFC 2616 fue creada en parte por Tim Berners-Lee, diciendo que la etiqueta del servidor es opcional.

Realmente quería establecer la etiqueta del servidor en "Desconocido" para que nuestros escaneos de Qualys sean felices. Entonces, instalé mod_security, ahora llamado libapache2-modsecurity, siguiendo este tutorial de DigitalOcean . Mucha suerte, espero haber ayudado a todos ustedes, futuros lectores.

slmaq
fuente
1

He probado algo en Oracle HTTP Server 11.1.1.9 (que se basa en Apache 2.2.22) que funcionó para mí, hasta cierto punto ...

Establecer "ServerTokens" en "none" parece eliminar el valor del encabezado "Server", aunque el encabezado se sigue enviando en la respuesta, pero ahora tiene un valor nulo.

ServerTokens none

El encabezado de respuesta se vería así:

HTTP / 1.1 200 OK

Fecha: lunes, 28 de diciembre de 2015 07:02:45 GMT

Servidor:

Última modificación: Dom, 27 dic 2015 07:29:13 GMT

.

.

Mohab Elsayed
fuente
2
En las acciones de Apache 2.2, desde los repositorios de Centos 6, establecer un valor de "ninguno" hace que Apache muestre todos los datos. Por ejemplo: "Servidor: 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
de acuerdo, no se puede usar noneen el último Apache:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras