Как скрыть номер версии Apache и информацию об операционной системе
Apache — один из самых популярных веб-серверов, но его конфигурация по умолчанию содержит сомнительные варианты во многих дистрибутивах Linux. Apache имеет тенденцию рекламировать свою конкретную версию и платформу, на которой он работает, информацию, которая может быть ценной для злоумышленников.
Эта короткая статья покажет вам, как отключить этот вывод, чтобы защитить ваш сервер. Обычно нет причин для его активности, и его отключение должно занять всего минуту.
В чем проблема?
Вот свежая установка Apache 2.4, отображающая индекс каталога:
Нижний колонтитул страницы показывает код версии Apache, имя операционной системы, а также внутренний IP-адрес и номер порта вашего сервера.
Это потенциально конфиденциальные данные. Уязвимость нулевого дня в Apache может затронуть лишь небольшой диапазон версий. Оставляя этот вывод включенным, вы показываете миру, находится ли ваша машина в опасности. Это значительно облегчает злоумышленникам идентификацию вашего хоста как потенциальной цели.
Apache называет эти данные своей «подписью сервера». Он не ограничивается индексными страницами каталога: код версии включается в каждый HTTP-ответ в заголовке Server
:
Он будет присутствовать независимо от кода состояния ответа. Злоумышленники могут найти вашу точную версию Apache, просто отправив запрос на ваш сервер, независимо от того, знают ли они действительный URL-адрес.
Отключение подписи сервера
Есть две части отключения этого нежелательного вывода. Во-первых, это значение ServerSignature
в вашем конфигурационном файле Apache. Расположение этого файла может быть разным; /etc/apache2/apache2.conf
и /usr/local/apache2/conf/httpd.conf
— два распространенных варианта. Директива ServerSignature
также поддерживается внутри файлов .htaccess
в корневом каталоге вашего веб-сайта.
Установите для директивы значение Off
, чтобы отключить подпись, которая появляется на веб-страницах, созданных сервером:
ServerSignature Off
Перезапустите Apache, чтобы применить изменения:
$ sudo service apache2 restart
Это влияет на списки каталогов, страницы ошибок Apache по умолчанию и другой вывод HTML, создаваемый сервером. Off
полностью удаляет строку подписи. Этот параметр дополнительно поддерживает третье значение, EMail
, которое предоставляет ссылку для отправки электронной почты на адрес, определенный ServerAdmin
:
ServerAdmin example@example.com ServerSignature EMail
Это заменяет информацию о версии Apache на ссылку электронной почты.
Управление токенами сервера
Содержимое заголовка ответа Server
управляется другим параметром, ServerTokens
. Это может быть установлено только в файле глобальной конфигурации вашего сервера. Он не поддерживается внутри файлов .htaccess
.
Значение по умолчанию — Full
, которое представляет точную строку версии и имя операционной системы, наблюдаемые в приведенном выше примере. Сюда также могут входить номера версий загруженных модулей и движков содержимого CGI, таких как PHP.
Поддерживаются следующие альтернативные значения:
Полный
–Apache/2.4.2 (Ubuntu)
Prod
–Apache
Основной
–Apache/2
Незначительный
–Apache/2.4
Мин.
–Apache/2.4.2
ОС
— то же, что иПолный
, но без информации о загруженных модулях
Выбор Prod
является самым безопасным значением. Вы можете думать об этом как о Production
, хотя на самом деле это сокращение от ProductOnly
. Этот токен сервера означает, что заголовок Server
покажет только то, что вы используете Apache, без дополнительной информации о выпуске. Злоумышленникам придется провести больше проб и ошибок, чтобы найти уязвимые места в вашей установке.
К сожалению, полностью удалить заголовок Server
невозможно. На самом деле Apache утверждает, что его отключение «ничего не делает для повышения безопасности вашего сервера», и предлагает использовать Min
для облегчения отладки межоперационных проблем.
Однако большинство людей никогда не используют заголовок Server
, и всегда безопаснее рекламировать как можно меньше информации о вашей системе. Хотя это не предотвратит использование уязвимостей, ServerTokens Prod
может удержать злоумышленников от спекулятивных попыток. Это также затруднит прохожим получение подробной информации о внутренней работе вашего технологического стека. Это всего лишь небольшое закаливание, но однажды оно может стать той разницей, которая вам нужна.
Что насчет PHP?
Apache часто используется перед веб-сайтами и приложениями, работающими на PHP. К сожалению, у PHP есть собственная привычка сообщать номер своей версии в Интернет. Он появится в заголовке X-Powered-By
ответов, отправленных вашим PHP-кодом.
Вы можете отключить это, изменив файл конфигурации PHP следующей строкой:
expose_php = Off
Файл конфигурации обычно находится по адресу /etc/php/8.1/apache2/php.ini
. Замените 8.1
версией PHP, которую вы используете. Вам нужно будет перезапустить веб-сервер, чтобы изменения вступили в силу.
Краткое содержание
Конфигурация Apache по умолчанию показывает точный номер версии вашего сервера, а также его операционную систему и IP-адрес. Эта, казалось бы, безобидная информация может помочь злоумышленникам, ищущим уязвимые серверы.
Отключение подписи сервера — это быстрый способ повысить безопасность вашей среды. Также хорошей идеей будет одновременно решить проблему раскрытия аналогичной информации другим программным обеспечением в вашем стеке. PHP и некоторые веб-фреймворки имеют схожие уязвимости.