Змініть Apache httpd "Сервер:" HTTP-заголовок


33

Один із заголовків 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, але «Сервер:" по- , як і раніше відображається заголовок. Я експериментував з mod_headers . У мене це включено, і я спробував кілька речей:

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

Після зупинки та початку httpdз вищевказаної конфігурації заголовки HTTP включають щось подібне ProcessingTime: 1523, але рядок заголовка "Сервер:" залишається незмінним. Тож я знаю, що "mod_headers" встановлений і включений, і працює, але не так, як я бажаю.

Я бачу, що щось, що називається "mod_security", вимагає зробити це, але я не хочу, щоб весь інший багаж, який mod_security містить із собою.

ОНОВЛЕННЯ:

Після mod_securityвстановлення вам потрібно лише кілька директив:

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

Це для mod_security2.7.7


3
Ви перезапустили apache з моменту зміни файлу conf? Також я ніколи не бачив файл під назвою "httpd.com", зазвичай він називається "httpd.conf".
Михайло Озерянський

@MichaelOzeryansky - спасибі за те, що ви потрапили в помилку. Це "httpd.conf", я зупиняюсь і запускаю httpd після зміни httpd.conf.
Брюс Едігер

Відповіді:


12

Заголовок ідентифікатора сервера / токена управляється директивою " ServerTokens " (надається mod_core). Окрім зміни вихідного коду Apache HTTPD або використання mod_securityмодуля, немає іншого способу повністю придушити заголовок ідентифікатора сервера.

З mod_securityпідходом ви можете відключити всі директиви / функції модуля у modsecurity.confфайлі та використовувати лише директиву ідентифікатора заголовка сервера без додаткового "багажу".


Це спрацьовує, дуже дякую. Мушу зазначити, що mod_security - це не один із звичайних пакетів Arch Linux. В AUR є PKGBUILD, але він не оновлювався з 2011 року (станом на 12 квітня 2014 року), і він посилається на справді стару версію mod_security. Як завжди, ваш дистрибутив може відрізнятися.
Брюс Едігер

25

mod_security є чудовим, але вам це не дуже потрібно для досягнення вашої мети.

після включення всіх мод httpd.confви можете просто зняти заголовки на ваш вибір.

Header unset Server

ServerSignature Off
ServerTokens Prod

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


2
mod_sec потрібен для користувацького тексту, щоб повністю приховати роботу apache, інакше ваше рішення хороше і просте :)
intika

Це не впливає на мене, використовуючи Apache 2.2 (виправлену) на Centos 6.
jph

1
У Apache 2.4 це повідомляється як синтаксична помилка: Неправильна команда 'Header', можливо неправильно написана або визначена модулем, не включеним у конфігурацію сервера
Raptor

3
@Raptor Ви повинні встановити mod_headers зsudo a2enmod headers
Ortomala Lokni

1
Header unset Serverне працює в Apache 2.2 та 2.4. Заголовок відповідей все ще міститьServer: Apache
Маріс Б.

13

Просто оновивши це для людей, які ще шукають. У мене виникли проблеми зі зміною рядка Сервер у заголовку HTTP. Ця порада повинна працювати для галузевих дистрибутивів Debian із systemd та Apache 2.4.7. Зокрема, я використовую Ubuntu Server LTS 14.04.03. Деякі поради, які я знайшов, мали зробити

grep -Ri servertokens /etc/apache2

Це призвело мене до /etc/apache2/conf-available/security.conf, де вказано і ServerTokens, і ServerSignature. Тому будь-які зміни, які я вносив у /etc/apache2/apache2.conf, були перезаписані директивами, уже вказаними в security.conf.

Я просто змінив директиви в security.conf і Apache почали працювати так, як я хотів.

ServerTokens Prod
ServerSignature Off

На тему "Сервер без встановлення заголовка" я знайшов звіт про помилки, де Apache devs сказав, що це проблема не виправлена. Мабуть, для них це філософська проблема, незважаючи на те, що специфікація для HTTP / 1.1, RFC 2616 частково є автором Тіма Бернерса-Лі, кажучи, що тег Server необов’язковий.

Мені дуже хотілося встановити тег Сервера на "Невідомо", щоб зробити наші сканування Qualys щасливими. Отже, я встановив mod_security, який тепер називається libapache2-modsecurity, наступним чином цього підручника DigitalOcean . Пощастило, сподіваюся, я допоміг усім вашим майбутнім читачам.


1

Я щось тестував на Oracle HTTP Server 11.1.1.9 (який побудований на Apache 2.2.22), який певною мірою працював на мене.

Якщо встановити "ServerTokens" на "none", то видаляється значення заголовка "Server", хоча сам заголовок продовжує надсилатись у відповідь, але тепер він має нульове значення.

ServerTokens немає

Заголовок відповіді виглядатиме так:

HTTP / 1.1 200 ОК

Дата: пн, 28 грудня 2015 07:02:45 GMT

Сервер:

Останнє змінення: НД, 27 грудня 2015 07:29:13 GMT

.

.


2
На запасі Apache 2.2, з Centos 6 repos, встановлення значення "none" змушує Apache виводити всі дані. Наприклад: "Сервер: 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

погодьтеся, ви не можете користуватися noneостаннім Apache:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.