Безопасность и сервер

Версии ПО в заголовках сервера — риск безопасности и что скрыть

Заголовки Server и X-Powered-By часто раскрывают версии nginx и PHP. Точная версия — подсказка взломщику. Как скрыть.

Коротко: заголовки Server и X-Powered-By — это служебные строчки, которыми сервер при каждом ответе сообщает посетителям: «я nginx 1.18.0, внутри у меня PHP 7.4». Для обычного посетителя это мусор, а для взломщика — точная карта целей.

Что это значит на практике

Когда вы открываете сайт, сервер вместе с содержимым отправляет служебные заголовки. Часть из них полезна, но две — не очень: Server: nginx/1.18.0 (Ubuntu) и X-Powered-By: PHP/7.4.33. Первая говорит, какая программа обслуживает сайт и какого она поколения; вторая — какая версия PHP исполняет код.

Проблема не в самих программах, а в точных номерах версий. Как только выходит уязвимость конкретной версии, взломщики начинают массово искать сайты, которые её «похвастались». Открытая версия превращает перебор вслепую в прицельную проверку: не нужно гадать, старый ли у вас софт — сервер сам подтвердил. Это как повесить на двери квартиры табличку с моделью и годом выпуска замка.

Отдельно стоит устаревшая версия PHP как таковая: каждая версия PHP поддерживается ограниченное время, после чего новые исправления безопасности для неё не выходят. Сайт на снятой с поддержки версии — это мишень, даже если версии нигде не показаны.

Почему это важно

  • Раскрытые версии упрощают подбор эксплойтов: атака становится прицельной, а не слепой.
  • Устаревший PHP перестаёт получать исправления безопасности — риск растёт со временем сам по себе.
  • Сканеры безопасности и страховщики при оценке сайта отмечают раскрытие версий как замечание.

Пример

Было: заголовки сообщают Server: nginx/1.18.0 и X-Powered-By: PHP/7.4.33 (версия снята с поддержки). Через месяц после выхода уязвимости 1.18 сайт оказывается в списке «кандидатов» массового сканирования. Стало: версии скрыты (Server: nginx), PHP обновлён до поддерживаемой ветки — атакующий не знает, с чем имеет дело.

Как исправить

  1. Проверьте свои заголовки: откройте сайт и посмотрите заголовки ответа (или попросите нас — это входит в техаудит).
  2. Скрывание версий делает разработчик или администратор сервера: в nginx — директива server_tokens off;, в PHP — expose_php = Off в настройках.
  3. Если заголовок показывает устаревшую версию PHP — попросите хостинг или разработчика обновить PHP до поддерживаемой ветки (сначала проверив совместимость сайта).
  4. После правок повторно проверьте заголовки — старая версия может «прилипнуть» в кэше.

Это задача уровня «разработчик + администратор сервера», но разовая: настроил один раз — работает годами.

Похожие темы

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

SEO-Радар SEO-Радар Независимый техрейтинг: рейтинг сайтов стоматологий Краснодара с проверяемыми фактами по каждому пункту.