Alterar o cabeçalho HTTP do Apache httpd "Server:"

33

Um dos cabeçalhos HTTP que o Apachehttpd envia com dados de resposta é "Servidor". Por exemplo, minha máquina de servidor da Web é o Arch Linux relativamente atualizado. Ele envia cabeçalhos de volta semelhantes aos seguintes:

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

Eu tenho ServerSignature offem /etc/httpd/conf/httpd.conf, mas o "Server:" cabeçalho ainda aparece. Eu experimentei mod_headers . Eu o habilitei e tentei algumas coisas:

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

Depois de parar e começar httpdcom a configuração acima, os cabeçalhos HTTP incluem algo como ProcessingTime: 1523, mas a linha de cabeçalho "Servidor:" permanece inalterada. Então eu sei que o "mod_headers" está instalado e ativado, e funcionando, mas não como eu desejo.

Vejo que algo chamado "mod_security" afirma fazer isso, mas não quero todo o resto da bagagem que o mod_security carrega.

ATUALIZAR:

Depois de mod_securityinstalar, você precisa apenas de algumas diretivas:

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

Isso é para mod_security2.7.7

Bruce Ediger
fonte
3
Você reiniciou o apache desde que alterou o arquivo conf? Também nunca vi o arquivo chamado 'httpd.com', geralmente é chamado 'httpd.conf'.
Michael Ozeryansky
@ MichaelOzeryansky - obrigado por capturar o erro de ortografia. É "httpd.conf". Paro e inicio o httpd após alterar o httpd.conf.
precisa

Respostas:

12

O cabeçalho do ID / token do servidor é controlado pela diretiva " ServerTokens " (fornecida por mod_core). Além de modificar o código-fonte Apache HTTPD ou usar o mod_securitymódulo, não há outra maneira de suprimir totalmente o cabeçalho do ID do servidor.

Com a mod_securityabordagem, você pode desativar todas as diretivas / funções do módulo no modsecurity.confarquivo e aproveitar apenas a diretiva de ID de cabeçalho do servidor sem nenhuma "bagagem" adicional.

Chipster
fonte
Isso funciona, muito obrigado. Devo observar que o mod_security não é um dos pacotes comuns do Arch Linux. Há um PKGBUILD no AUR, mas não é atualizado desde 2011 (em 12 de abril de 2014) e faz referência a uma versão muito antiga do mod_security. Como sempre, sua distribuição pode variar.
Bruce Ediger
25

O mod_security é ótimo, mas você realmente não precisa dele para atingir seu objetivo.

Depois que todos os mods foram incluídos, httpd.confvocê pode simplesmente desabilitar os cabeçalhos de sua escolha.

Header unset Server

ServerSignature Off
ServerTokens Prod

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

Matt Ryan
fonte
2
mod_sec é necessário para um texto personalizado para esconder completamente o trabalho apache caso contrário sua solução é boa e simples :)
intika
Isto não tem efeito para mim usando Apache 2.2 (corrigido) no CentOS 6
JPH
1
No Apache 2.4, é relatado como erro de sintaxe: Comando inválido 'Header', talvez com erro de ortografia ou definido por um módulo não incluído na configuração do servidor
Raptor
3
@Raptor Você tem que instalar mod_headers comsudo a2enmod headers
Ortomala Lokni
1
Header unset Servernão funciona no Apache 2.2 e 2.4. Cabeçalhos de resposta ainda contémServer: Apache
Maris B.
13

Apenas atualizando isso para pessoas que ainda estão procurando. Estava com problemas para alterar a linha do servidor no cabeçalho HTTP. Este conselho deve funcionar para distribuições de ramificação Debian com systemd e Apache 2.4.7. Especificamente, estou usando o Ubuntu Server LTS 14.04.03. Alguns conselhos que encontrei foram:

grep -Ri servertokens /etc/apache2

Isso me levou ao /etc/apache2/conf-available/security.conf, onde ServerTokens e ServerSignature foram especificados. Portanto, quaisquer alterações que eu estava fazendo no /etc/apache2/apache2.conf estavam sendo substituídas pelas diretivas já especificadas no security.conf.

Simplesmente mudei as diretivas em security.conf e o Apache começou a funcionar como eu queria.

ServerTokens Prod
ServerSignature Off

No tópico do servidor de cabeçalho não configurado, encontrei um relatório de bug em que os desenvolvedores do Apache disseram que não é um problema corrigido. Aparentemente, para eles, é uma questão filosófica, apesar de a especificação para HTTP / 1.1, RFC 2616, em parte de autoria de Tim Berners-Lee, dizer que a tag Server é opcional.

Eu realmente queria definir a etiqueta do servidor como "Desconhecida" para deixar nossas varreduras Qualys felizes. Então, instalei o mod_security, agora chamado libapache2-modsecurity, seguindo este tutorial do DigitalOcean . Boa sorte, espero ter ajudado para todos vocês, futuros leitores.

slmaq
fonte
1

Eu testei algo no Oracle HTTP Server 11.1.1.9 (baseado no Apache 2.2.22) que funcionou para mim, até certo ponto.

Definir "ServerTokens" como "none" parece remover o valor do cabeçalho "Server", embora o cabeçalho em si continue sendo enviado na resposta, mas agora tenha um valor nulo.

ServerTokens none

O cabeçalho da resposta ficaria assim:

HTTP / 1.1 200 OK

Data: segunda-feira, 28 de dezembro de 2015 07:02:45 GMT

Servidor:

Última modificação: dom, 27 dez 2015 07:29:13 GMT

.

.

Mohab Elsayed
fonte
2
No estoque do Apache 2.2, dos repositórios do Centos 6, definir um valor "none" faz com que o Apache produza todos os dados. Por exemplo: "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 19/04
concordo, você não pode usar o noneApache mais recente:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras