Как удалить заголовок Microsoft-HTTPAPI/2.0 в IIS 8 и 10

Вопрос или проблема

Я пытаюсь удалить заголовок сервера Microsoft-HTTPAPI/2.0 из своих HTTP-ответов, следуя этой статье на MSDN. В настоящее время я применяю решение на основе реестра на Windows Server 2008 R2 и Windows 10, но у меня ничего не получается. Я по-прежнему получаю заголовки, когда отправляю HTTP-запрос с пустым заголовком Host.

curl -X GET "127.0.0.1" -H "Host:" --head

Команда выше возвращает HTTP 400 Bad Request с Server: Microsoft-HTTPAPI/2.0.

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

Заранее спасибо.

ps. Я понимаю, что это своего рода безопасность в тайне, но аудиторы требуют этого.

Если заголовок сервера в ответе возвращает Microsoft-HttpApi/2.0, это означает, что вызывается HTTP.sys, а не IIS. Эксплуатация и сканирование портов используют это как средство определения сервера IIS (даже если он в остальном скрывает заголовок сервера).

Вы можете протестировать это, вызвав ошибку с помощью CURL:

curl -v http://www.yourdomain.com/ -H "Range: bytes=00-18446744073709551615"

Вы увидите что-то подобное, если ваш сервер отправляет этот заголовок:

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Thu, 19 Dec 2019 00:45:40 GMT
Connection: close
Content-Length: 339

Вы можете добавить значение в реестр, чтобы HTTP.sys не включал заголовок.

  • Откройте Regedit
  • Перейдите к: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
  • Если DisableServerHeader не существует, создайте его (DWORD 32bit) и
    установите значение 2. Если он существует, а значение не 2, установите его
    на 2.
  • Перезагрузите сервер ИЛИ перезапустите службу HTTP, вызвав “net stop http”, затем “net start http”

Справка: WS/WCF: Удаление заголовка сервера

После добавления ключа реестра ответ выглядит следующим образом:

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Date: Thu, 19 Dec 2019 00:45:40 GMT
Connection: close
Content-Length: 339

Публикую здесь, чтобы люди, которым это нужно, могли это найти. (Спасибо, Oram!)

По комментариям Джеффри ниже это сработало

  • Откройте Regedit
  • Перейдите к: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
  • Если DisableServerHeader не существует, создайте его (DWORD 32bit) и установите значение 2. Если он существует, а значение не 2, установите его на 2.
  • Перезагрузите сервер ИЛИ перезапустите службу HTTP, вызвав “net stop http”, затем “net start http”

Не забудьте перезапустить службу HTTP, иначе это решение не сработает.

Проверено на Windows 2019 Server с IIS 10.

Ответ или решение

Для удаления заголовка Microsoft-HTTPAPI/2.0 из HTTP-ответов на IIS 8 и 10 выполните следующие шаги:

  1. Понять источник заголовка: Заголовок Microsoft-HTTPAPI/2.0 указывает, что сервер отвечает через HTTP.sys, а не IIS. Это может произойти, когда запрос достигает уровня транспортного протокола, и IIS не обрабатывает его.

  2. Изменение реестра:

    • Откройте редактор реестра (regedit).
    • Перейдите по следующему пути:
      Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
    • Если параметр DisableServerHeader отсутствует, создайте его:
      • Щелкните правой кнопкой мыши на Parameters, выберите New, затем DWORD (32-bit) Value и назовите его DisableServerHeader.
      • Установите значение этого параметра на 2.
    • Если параметр существует, убедитесь, что его значение равно 2. Если оно другое, измените его на 2.
  3. Перезагрузка службы HTTP:

    • После внесения изменений необходимо перезагрузить сервер или выполнить команды для перезапуска службы HTTP. Откройте командную строку с правами администратора и выполните:
      net stop http
      net start http
  4. Тестирование изменений:

    • Убедитесь, что изменения успешно применены. Для этого выполните запрос с помощью curl:
      curl -X GET "127.0.0.1" -H "Host:"
    • Если заголовок Server больше не отображается в ответе, значит, изменения были успешными.
  5. Дополнительные соображения:

    • Убедитесь, что все службы, которые могут вызывать работу HTTP.sys, действительно обеспечивают корректное исполнение. Например, приложения, которые перехватывают запросы на более низком уровне, могут вызвать данный заголовок.
    • Помните, что это мероприятие не только избавляет от заголовка, но и может отключить некоторые функции отслеживания и управления со стороны IIS.

Если вы следовали всем шагам и все равно сталкиваетесь с проблемой, убедитесь, что ваша версия Windows и IIS совместимы с приведенными инструкциями, и проверьте наличие других служб или настроек, которые могут повлиять на поведение сервера.

Оцените материал
Добавить комментарий

Капча загружается...