Как удалить Server: заголовок из HTTP-ответа с Apache?

20

Я хотел бы удалить строку:

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

из ответов HTTP моего сервера, но я не смог найти ничего, кроме как изменить include/ap_release.hи скомпилировать Apache самостоятельно. Мне было интересно, есть ли способ, о котором я не знаю?

Нео
источник

Ответы:

16

Вы можете удалить или замаскировать идентификацию сервера из заголовка Http, используя брандмауэр веб-приложения с открытым исходным кодом ModSecurity .

Маскировка личности сервера

Одним из методов, который часто помогает замедлить и сбить с толку злоумышленников, является изменение идентичности веб-сервера. Веб-серверы обычно отправляют свои идентификационные данные при каждом HTTP-ответе в заголовке сервера. Apache особенно полезен здесь, он не только отправляет свое имя и полную версию по умолчанию, но также позволяет серверным модулям добавлять свои версии.

Чтобы изменить удостоверение веб-сервера Apache, вам нужно будет зайти в исходный код, найти, где имя «Apache» жестко запрограммировано, изменить его и перекомпилировать сервер. Тот же эффект может быть достигнут с помощью

Директива SecServerSignature:

SecServerSignature "Microsoft-IIS/5.0"

Следует отметить, что хотя это работает довольно хорошо, опытные злоумышленники (и инструменты) могут использовать другие методы для «снятия отпечатков» с веб-сервера. Например, файлы по умолчанию, сообщение об ошибке, упорядочение исходящих заголовков, способ, которым сервер отвечает на определенные запросы и тому подобное, - все они могут выдавать истинную идентичность. Я буду смотреть на дальнейшее улучшение поддержки маскировки личности в будущих выпусках mod_security.

Если вы измените подпись Apache, но вас раздражает странное сообщение в журнале ошибок (некоторые модули все еще видны - это влияет только на журнал ошибок, снаружи он все еще работает, как и ожидалось):

[Fri Jun 11 04:02:28 2004] [notice] Microsoft-IIS/5.0 mod_ssl/2.8.12 OpenSSL/0.9.6b \ configured -- resuming normal operations

Затем вы должны изменить порядок загрузки модулей, чтобы позволить mod_security работать в последнюю очередь, как описано для chroot.

Заметка

Чтобы эта директива работала, вы должны оставить / установить ServerTokens на Full.

Когда для изменения сигнатуры общедоступного сервера используется директива SecServerSignature, ModSecurity начнет записывать действительную подпись в журнал ошибок, чтобы можно было идентифицировать веб-сервер и используемые модули.

Источник: Справочное руководство ModSecurity

Chris_O
источник
Он работает прямо сейчас, но я думаю, что не стоит использовать другое существующее имя сервера, потому что вы можете инициировать действия атаки.
Codebeat
27

Если вы установите ServerTokens« Prod», вы можете уменьшить заголовок до « Server: Apache». Смотрите документацию для полного списка опций:

Документация для Apache 2.2

Документация для Apache 2.4

Примечание . Настройки в обеих версиях одинаковы, однако в документации 2.4 это примечание добавлено:

Установка ServerTokens меньше минимального значения не рекомендуется, потому что это затрудняет отладку межоперационных проблем. Также обратите внимание, что отключение заголовка Server: ничего не делает для повышения безопасности вашего сервера. Идея «безопасность через безвестность» является мифом и приводит к ложному чувству безопасности.

Если вы хотите полностью удалить слово «Apache», вам придется изменить исходный код.

user1686
источник
+1 tnx за ответ, я забыл упомянуть в вопросе, я знал об этом, но я хочу, чтобы он сказал Microsoft IIS или что-то. Я должен был прояснить это.
Нео