Заголовки сервера Apache, делаем безопаснее

Есть немаловажный момент связанный с безопасностью сервера, а следовательно и сайтов на нём расположенных… касается он информации отдаваемой в заголовках. Рассмотрим самые интересные, а зачастую и исчерпывающе-информативные заголовки: Server и X-Powered-By.

Заголовок Server может поведать нам о сервере, операционной системе, версии PHP и даже некоторых модулях. Думаю, что пагубность такой информации объяснять не нужно, ибо совершенного софта не бывает.

Заголовок X-Powered-By может наделить нас знанием о версии PHP, например. Опять же — лишняя брешь в безопасности.

Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
X-Powered-By: PHP/5.2.6

Есть несколько путей решения проблемы:

  • пересборка Apache с изменённым параметром AP_SERVER_BASEPRODUCT в файле include/ap_release.h;
  • изменение директивы SecServerSignature при установленном mod_security;
  • правка заголовков при помощи mod_headers.
  • редактирование файлов конфигурации Apache и PHP.

Именно так, остановимся на самом простом и универсальном варианте — редактирование файлов конфигурации Apache и PHP.

Всего то навсего, для изменения заголовка Server, следует указать Apache, что именно там стоит выводить. Откроем на редактирование файл /etc/apache2/conf.d/security и найдём следующую строку:

ServerTokens Full

В комментариях написаны различные варианты значений, на мой взгляд достаточно указать следующее:

ServerTokens Prod

В таком случае заголовок Server будет отображать только лишь название сервера — Apache.

Рекомендуется так же установить следующие директивы:

ServerSignature Off
TraceEnable Off

ServerSignature отвечает за отображение информации о сервере при ошибках, а TraceEnable за отключение режима TRACE, при котором возможны XSS (Cross-Site Scripting) атаки.

Чтобы избавиться от заголовка X-Powered-By, следует открыть на редактирование файл php.ini и найти в нём следующую строку:

expose_php = On

Соответственно заменить её нужно на:

expose_php = Off

После всех правок нужно перезагрузить сервер:

sudo /etc/init.d/apache2 restart

Ну вот, теперь мы стали на шаг ближе к безопасному серверу.

Инструкции по теме:

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