Один из заголовков HTTP, который Apachehttpd
отправляет обратно с ответными данными, - «Сервер». Например, мой компьютер с веб-сервером является относительно современным Arch Linux. Он отправляет обратно заголовки, похожие на следующие:
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
Я ServerSignature off
в /etc/httpd/conf/httpd.conf
, но заголовок «Server:» по-прежнему появляется. Я экспериментировал с mod_headers . Я включил его, и я попробовал несколько вещей:
<IfModule headers_module>
Header set ProcessingTime "%D"
Header set Server BigJohn
</IfModule>
После остановки и запуска httpd
с вышеуказанной конфигурацией заголовки HTTP включают что-то подобное ProcessingTime: 1523
, но строка заголовка «Server:» остается неизменной. Так что я знаю, что "mod_headers" установлен и включен, и работает, но не так, как я хочу.
Я вижу, что что-то под названием "mod_security" утверждает, что делает это, но я не хочу, чтобы весь остальной багаж, который mod_security везет с собой
ОБНОВИТЬ:
После mod_security
установки вам понадобятся только несколько директив:
<IfModule security2_module>
SecRuleEngine on
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"
</IfModule>
Это для mod_security
2.7.7
источник
Ответы:
Идентификатор сервера / заголовок токена контролируется директивой ServerTokens (предоставляется
mod_core
). Помимо изменения исходного кода Apache HTTPD или использованияmod_security
модуля, нет другого способа полностью подавить заголовок идентификатора сервера.При таком
mod_security
подходе вы можете отключить все директивы / функции модуля вmodsecurity.conf
файле и использовать только директиву идентификатора заголовка сервера без какого-либо дополнительного «багажа».источник
mod_security - это замечательно, но он вам не нужен для достижения цели.
После того, как все моды были включены,
httpd.conf
вы можете просто сбросить заголовки по вашему выбору.http://httpd.apache.org/docs/2.4/mod/core.html#serversignature
источник
sudo a2enmod headers
Header unset Server
не работает в Apache 2.2 и 2.4. Заголовки ответа по-прежнему содержатServer: Apache
Просто обновить это для людей, которые все еще ищут. У меня возникли проблемы с изменением строки сервера в заголовке HTTP. Этот совет должен работать для дистрибутивов веток Debian с systemd и Apache 2.4.7. В частности, я использую Ubuntu Server LTS 14.04.03. Я нашел несколько советов:
Это привело меня к /etc/apache2/conf-available/security.conf, где были указаны как ServerTokens, так и ServerSignature. Поэтому любые изменения, которые я вносил в /etc/apache2/apache2.conf, были перезаписаны директивами, уже указанными в security.conf.
Я просто изменил директивы в security.conf, и Apache начал работать так, как я хотел.
Что касается сервера с отключенными заголовками, я обнаружил сообщение об ошибке, в котором разработчики Apache сказали, что это не решит проблему. По всей видимости, для них это философский вопрос, несмотря на то, что спецификация HTTP / 1.1, RFC 2616 частично написана Тимом Бернерсом-Ли, который говорит, что тег Server является необязательным.
Я действительно хотел установить для тега Server значение «Неизвестно», чтобы сделать наши сканы Qualys счастливыми. Итак, я установил mod_security, теперь называемый libapache2-modsecurity, после этого урока DigitalOcean . Удачи, надеюсь, я помог всем вам, будущие читатели.
источник
Я протестировал кое-что на Oracle HTTP Server 11.1.1.9 (которое построено на Apache 2.2.22), и это в некоторой степени мне помогло
Установка «ServerTokens» на «none», по-видимому, удаляет значение заголовка «Server», хотя сам заголовок продолжает отправляться в ответе, но теперь он имеет нулевое значение.
Заголовок ответа будет выглядеть так:
источник
none
на последнем Apache:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'