Как скрыть версию nginx
Перейти к содержимому

Как скрыть версию nginx

  • автор:

Как узнать версию Nginx

Если вы администрируете Linux сервер, вам может понадобиться узнать версию Nginx. Это очень популярный и высокопроизводительный веб-сервер, который используется даже чаще чем Apache. От версии зависит поддерживает веб-сервер те или иные возможности, а также есть ли в нём все необходимые патчи исправляющие уязвимости.

Дальше в этой статье мы рассмотрим как посмотреть версию различными способами на самом сервере или без доступа к серверу.

Как посмотреть версию Nginx

Самый простой способ посмотреть версию Nginx если у вас есть доступ к серверу — воспользоваться командой nginx с опцией -v:

Если вы запускаете команду от имени обычного пользователя и получаете ошибку, это значит что она находится в каталоге /sbin/ или /usr/sbin, доступному только для суперпользователя. Попробуйте выполнить команду с sudo:

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

Если вы хотите проверить скомпилирована ли программа с определённым модулем, например, модулем http_flv, используйте такую команду:

nginx -V 2>&1 | grep http_flv_module

Если имя модуля есть в списке, то оно будет подсвечено красным цветом.

Это всё что касается просмотра версии на сервере. Кроме того, Nginx отображает версию сервера при возникновении ошибки в браузере, а также передает её в заголовке Server. Посмотреть передаваемые заголовки можно с помощью curl. Например:

curl -I test.losst.pro

Как скрыть версию Nginx

Если вы не хотите чтобы ваш Nginx показывал свою версию всем в заголовках или во время ошибки, надо отредактировать файл /etc/nginx/nginx.conf. Измените значение директивы server_tokens с on на off в секции http:

sudo vi /etc/nginx/nginx.conf

Затем перезапустите сервер:

sudo systemctl restart nginx

Теперь вы знаете как скрыть версию, в заголовке Nginx будет передавать только своё название.

Как видите, всё очень просто. Теперь вы знаете как посмотреть версию Nginx. Если вы знаете другие способы, пишите в комментариях!

Как отключить отображение версии Web-сервера в Http-заголовке

Отображение версии используемого программного обеспечения в заголовке ответа Web-сервера несет за собой угрозу безопасности. Если злоумышленник знает точную версию программного обеспечения, используемую на веб-сайте, то он может использовать уязвимости конкретной версии ПО для осуществления противоправных действий.
Чтобы уменьшить вероятной подобного взлома и атаки на конкретную версию программного обеспечения, эту информацию рекомендуется скрыть, чтобы лишить злоумышленника информации о версии сервера, версии используемого ПО и о платформе в целом. Иначе может получиться ситуация, когда сканирование веб-серверов опубликованных в Интернет по наличию веб-заголовка с определенной версией ПО внесет ваш веб-сайт в список подверженных уязвимости.

  • Nginx
  • Apache IIS

Как скрыть отображение версии Nginx в http заголовке

По умолчанию конфигурация Web-сервера Nginx хранится в конфигурационном файле nginx.conf расположенного по пути etc/nginx/nginx.conf.
Для отключения отображения версии необходимо в файле nginx.conf в разделе http добавить строку:
и перезапустить Nginx, например, при помощи команды
После внесенных изменений, в заголовках ответа веб-сервера вместо:будет отображаться информация:
Подробнее с вариантами значений можно ознакомиться на странице: http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_tokens

Как скрыть отображение версии Apache в http заголовке

Чтобы спрятать версию Apache нужно добавить/отредактировать параметры в httpd.conf, по умолчанию для CentOS этот файл находится в папке /etc/httpd/http.conf (в других версиях Linux этот путь может быть другим).
За отображение версии Apache отвечает параметр ServerTokens, по умочанию, он имеет значение Full, в этом случае веб сервер может отдавать в заголовке следующую информацию:
Если явно указать значение: Prod[uctOnly], например, так:, то Apache не будет отдавать в заголовке ответа свою версию. Будет отдаваться ответ:
Для отключения отображения версии Apache на страницах с ошибками следует также добавить директиву:Подробнее с вариантами значений можно ознакомиться на странице: https://httpd.apache.org/docs/2.4/mod/core.html#serversignature

Как скрыть отображение версии Microsoft IIS в http заголовке

Для версий IIS 7+ (IIS 7, 8.5, 8.0, 8.5) параметров скрывающих отображение версии в IIS не предусмотрено. Однако, возможно использование дополнительного расширения на IIS URL Rewrite. IIS URL Rewrite позволяет на уровне отдельного веб-сайта (или приложения), а также на уровне сервера целиком, подменять заголовок ответа.
После установки этого модуля необходимо создать правило URL Rewrite Outbound используя консоль IIS Manager или используя редактор:
После создания такого правила ответ сервера вида:
Изменится на

В IIS 10.0 (Windows Server 2016/2019) возможно удалить заголовки веб-сервера установив в файле web.config в разделе <system.webServer> для настройки requestFiltering значение параметра removeServerHeader в «true»:

  • PHP
  • PHP-FPM
  • ASP.NET

Как скрыть отображение версии PHP в http заголовке

Чтобы скрыть отображение версии php в заголовке ответа веб сервера, необходимо в конфигурационном файле php.ini изменить строку:
на

После применения этого изменения и перезапуска веб-сервера значение параметра заголовка X-Powered-By перестанет отображаться.

Как скрыть отображение версии PHP-FPM в http заголовке

Чтобы скрыть отображение версии PHP-FPM в заголовке ответа веб сервера, необходимо в конфигурационном файле php-fpm.conf прописать строку:
Перезапуск веб-сервера применит измененное значение параметра.

Как скрыть отображение версии ASP.NET в http заголовке

При использовании ASP.NET на веб сервере IIS веб-сервер по умолчанию отдает следующий заголовок:

для скрытия из заголовка параметра X-AspNet-Version о используемой версии ASP.NET необходимо добавить в файл web.config добавить строки:

Скрыть заголовок X-Powered-By из ответа веб сервера проще всего из консоль управления IIS в разделе HTTP Response Headers, для этого необходимо удалить соответствующее значение, как показано на скриншоте ниже и после этого перезапустить сервер.

Убрать версию nginx и apache и php

Для более качественной безопасности, можно закрыть версию различных веб сервисов от глаз. Это возможно не спасет, но даст шанс злоумышленнику изучить ваш сервер дольше и потратить не мало усилий на это.

Хочу рассказать как можно убрать версию nginx и apache и php в Linux. В своей статье «Убрать версию nginx и apache и php» я покажу наглядные примеры.

Nginx.

Если Вы не хотите показывать версию веб-сервера nginx то необходимо в конфигурационном файле данного сервиса nginx.conf в секции http прописать следующую строку:

После данного применения можно легко проверить что получилось:

Если хотите вообще скрыть факт присутствия nginx на вашем сервере, то нужно смотреть информацию в файлах:

Apache.

Если Вы не хотите показывать версию веб-сервера apache то необходимо в конфигурационном файле данного сервиса httpd.conf в секции http прописать следующую строки:

Для Debian/Ubuntu, есть хорошее решение.

Появилась офигенная возможность скрыть apache2 с помощью очень простой настройки, для этого нужно установить модуль безопасности для веб-сервера apache:

Редактируем файл настроек:

В итоге apache информацию о себе давать не будет. Нужно перезапустить сервер:

можно конечно и так:

Для CentOS/RedHat/Fedora, есть хорошее решение тоже.

Ставим модуль безопасности для апача:

конфигурационные файлы mod_security

  • /etc/httpd/conf.d/mod_security.conf — Основной конфигурационный файл для mod_security модуля Apache.
  • /etc/httpd/modsecurity.d/ — Все остальные файлы конфигурации для mod_security Apache.
  • /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf — Конфигурация, содержащаяся в этом файле должна быть настроена для ваших конкретных требований до развертывания.
  • /var/log/httpd/modsec_debug.log — Используйте отладочные (debug) сообщения для отладки правил Mod_security и других проблем.
  • /var/log/httpd/modsec_audit.log — Все запросы, которые вызывают ModSecurity события (если обнаруженные) или ошибки Serer («RelevantOnly») вошли в этот файл.

Откройте файл /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf, введите:

Убедитесь, что SecRuleEngine установлен в «On», чтобы защитить веб-сервер от атак:

Включите другие необходимые параметры и политики в соответствии с вашими требованиями. Наконец, перезагрузите HTTPD:

How to change(Hide) the Nginx Server Signature?

I can hide Nginx version by using server_tokens option set to off. But not able to change the Nginx Server signature.

1.) Change the Nginx server name in source file(src/http/ngx_http_header_filter_module.c) to » My-Server». After that, compiled the nginx. But its not working when I load the url. Strange here is I can see my updated Signature when I use curl command. But this same is not updated in browser.

2.) So I tried 3rd party module(headers-more-nginx-module). This too not working. Getting updated name via Curl. But not in Browser.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *