Имеет ли смысл с точки зрения безопасности удалять HTTP-заголовок сервера?

Я использую Varnish и не совсем уверен, следует ли мне также удалить HTTP-заголовок Server: nginx . Почему кому-то нужно знать, что я? м использую NGINX? Можно ли удалить этот HTTP-заголовок из ответа или он где-то нужен? С точки зрения безопасности, наверное, лучше это сделать?

6
задан 11 August 2018 в 07:27
3 ответа

RFC 7231 говорит о заголовке сервера :

Исходный сервер МОЖЕТ генерировать поле Server в своих ответах.

МОЖЕТ интерпретироваться как в RFC 2119 :

  1. МОЖЕТ Это слово или прилагательное «НЕОБЯЗАТЕЛЬНО» означать, что элемент является действительно необязательно. Один поставщик может включить товар, потому что конкретная торговая площадка требует этого или потому, что продавец считает, что он улучшает продукт, в то время как другой поставщик может опустить тот же элемент. Реализация, которая не включает конкретную опцию, ДОЛЖНА быть подготовлен к взаимодействию с другой реализацией, которая включить эту опцию, хотя, возможно, и с ограниченной функциональностью. в в том же духе реализация, которая включает в себя конкретную опцию ДОЛЖЕН быть готов к взаимодействию с другой реализацией, которая не включает эту опцию (за исключением, конечно, функции опция предоставляет.)

Таким образом, вполне нормально ограничить или удалить заголовок ответа Сервера. Конечно, неплохо знать, от чего вы можете отказаться, сделав это. Для этого вернитесь к RFC 7231:

Поле заголовка «Сервер» содержит информацию о программном обеспечении. используется исходным сервером для обработки запроса, который часто используется клиентами, чтобы помочь определить объем заявленной совместимости проблемы, чтобы обойти или адаптировать запросы, чтобы избежать конкретных ограничения сервера, а также для аналитики в отношении сервера или работы использование системы. Исходный сервер МОЖЕТ создать поле Server в своем ответы.

 Сервер = продукт * (RWS (продукт / комментарий))
 

Значение поля "Сервер" состоит из одного или нескольких идентификаторов продукта, за каждым следует ноль или более комментариев (раздел 3.2 [RFC7230]), которые вместе идентифицируют программное обеспечение исходного сервера и его значительные субпродукты. По соглашению идентификаторы продуктов перечислены в порядке убывания их значимости для идентификации программное обеспечение сервера происхождения. Каждый идентификатор продукта состоит из названия и необязательная версия, как определено в Разделе 5.5.3.

Пример:

 Сервер: CERN / 3.0 libwww / 2.17
 

Исходному серверу НЕ СЛЕДУЕТ создавать поле сервера, содержащее излишне мелкозернистые детали и ДОЛЖНЫ ограничивать добавление субпродукты третьих лиц. Слишком длинное и подробное поле Сервер значения увеличивают задержку ответа и потенциально раскрывают внутренние детали реализации, которые могут (немного) облегчить злоумышленникам, чтобы найти и использовать известные дыры в безопасности.


Хотя на практике злоумышленники не проверяют заголовок Server :. Они просто пробуют все известные им эксплойты безопасности, независимо от того, показывает ли ваш сервер уязвимость или нет. Удаление заголовка Server: - это действие , обеспечивающее безопасность посредством неизвестности , и почти полностью неэффективное. Но если вам от этого становится легче или вам велит сделать это начальник или одитор, дерзайте. Только не ожидайте, что это приведет к значительному улучшению вашей системы безопасности.

Например, nmap может идентифицировать веб-сервер с довольно хорошей точностью, даже если он настроен так, чтобы не отправлять Заголовок сервера вообще или когда содержимое заголовка полностью поддельное. Попробуйте сами с помощью nmap -sV -P0 -p 80,443 .

13
ответ дан 3 December 2019 в 00:03

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

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

После получения сведений о программном обеспечении вашего веб-сервера с помощью HTTP-заголовка Server потенциальный злоумышленник может выполнить поиск общедоступных уязвимостей вашего веб-сервера. Затем они могут использовать эту информацию в сочетании с любой другой информацией, которую они могут получить (например, путем сканирования), чтобы построить правильный вектор атаки.

Таким образом, вы можете удалить заголовок Server в целом, например удалите его в nginx .

2
ответ дан 3 December 2019 в 00:03

Если у вас есть « server_tokens off » в вашей конфигурации (и похоже, что вы это делаете, поскольку там только «nginx», а не «nginx / 1.13.11»), тогда нормально оставить все как есть. Проблема может возникнуть, если у вас есть уязвимая версия, и злоумышленник может использовать эту информацию для эксплуатации уязвимости, но для этого ваш nginx должен быть общедоступным. Короче говоря, используйте server_tokens off; и не открывайте порт nginx для всех IP-адресов, а только для Varnish, и вы должны быть в безопасности.

1
ответ дан 3 December 2019 в 00:03

Теги

Похожие вопросы