Сокрытие версий Apache и PHP — это один из элементов в обеспечении безопасности веб-сервера. Знание версий этих программ может облегчить задачу злоумышленника по поиску известных для данной версии уязвимостей и, как следствие, в достижение основной цели – проникновению. Конечно, злоумышленник может просто перебирать все известные уязвимости для всех версий Apache и PHP, но эта активность может попасть в поле зрение mod_security, fail2ban или сисадмина. В результате чего IP, с которого ведётся атака, будет награждён баном. В любом случае, если мы спрячем версии, это никак не отразится на качестве работы нашего сервера (пользователи этого просто не заметят), а взломщикам это прибавит работы.
Давайте, для начала, посмотрим, какую информацию выдают наши сервера на разных операционных системах. Для этого попытаемся открыть страницу или каталог, которых не существуют:
Первый скриншот — это Windows с Apache 2.4:
Очень неплохо, нет ни версии сервера, ни данных об ОС.
Это Linux Mint (Ubuntu) c Apache 2.4:
Нам с потрохами выдана и версия Apache и даже ОС, под которой он работает.
Это, как все уже, наверное, догадались, Linux Debian c Apache 2.2:
Опять нам вывалена вся информация.
Но вернёмся к Windows. Неужели там всё так хорошо? Совсем нет, Apache всё равно добавляет детальную информацию в HTTP заголовки ответа, которые соответствуют номеру версии Apache.
Видите? Нам раскрыта не только информация об Apache и PHP, но и об ОС, её битности.
И сразу, чтобы два раза не встовать, проверим наши Линуксы:
Аналогичная ситуация.
Чтобы скрыть эти данные , нужно в конфигурационный файл Апача добавить две строчки.
На Windows это файл лежит в каталоге
Откройте его любым текстовым редактором и добавьте туда две строчки:
Сохраните файл и перезапустите сервер. Делаем проверку:
Отлично, больше информация о версии не выводится.
На Линуксах всё точно также, только там файл настроек лежит в разных местах.
На Debian, Ubuntu или Linux Mint:
На CentOS, Fedora, RHEL или Arch Linux:
И добавляем следующие две строчки
Перезапускаем вебсервер, чтобы изменения вступили в силу:
Debian, Ubuntu или Linux Mint
CentOS/RHEL 6
Fedora, CentOS/RHEL 7, Arch Linux
Можем убедиться вместе, теперь всё отлично:
Прячем версию PHP
Другая потенциальная угроза безопасности — это утечка версии PHP в ответе заголовков HTTP. По-умолчанию, веб-сервер Apache включает версию PHP в "X-Powered-By" ответа HTTP заголовка.
Если вы хотите спрятать версию PHP в HTTP заголовке, откройте файл php.ini текстовым редактором, найдите там
На Windows
У тех, кто ставил сервер по моей инструкции, этот файл находится здесь:
Откройте его текстовым редактором и, как уже было сказано, найдите
Перезапустим сервер и проверим:
Желаемый результат достигнут! Возвращаемся к нашим Линуксам.
На Debian, Ubuntu или Linux Mint:
На CentOS, Fedora, RHEL или Arch Linux:
Наконец, перезапускаем веб-сервер Apache2 для перезагрузки файла настроек PHP.
Больше вы не увидите поле "X-Powered-By" в HTTP заголовках ответа.
Давайте, для начала, посмотрим, какую информацию выдают наши сервера на разных операционных системах. Для этого попытаемся открыть страницу или каталог, которых не существуют:
Первый скриншот — это Windows с Apache 2.4:
Очень неплохо, нет ни версии сервера, ни данных об ОС.
Это Linux Mint (Ubuntu) c Apache 2.4:
Нам с потрохами выдана и версия Apache и даже ОС, под которой он работает.
Это, как все уже, наверное, догадались, Linux Debian c Apache 2.2:
Опять нам вывалена вся информация.
Но вернёмся к Windows. Неужели там всё так хорошо? Совсем нет, Apache всё равно добавляет детальную информацию в HTTP заголовки ответа, которые соответствуют номеру версии Apache.
Видите? Нам раскрыта не только информация об Apache и PHP, но и об ОС, её битности.
И сразу, чтобы два раза не встовать, проверим наши Линуксы:
Аналогичная ситуация.
Чтобы скрыть эти данные , нужно в конфигурационный файл Апача добавить две строчки.
На Windows это файл лежит в каталоге
confhttpd.conf
с установленным Apache. Те, кто ставили сервер по моей инструкции, найдут этот файл здесь:
Код:
C:ServerbinApache24confhttpd.conf
Откройте его любым текстовым редактором и добавьте туда две строчки:
Код:
ServerSignature Off
ServerTokens Prod
Сохраните файл и перезапустите сервер. Делаем проверку:
Отлично, больше информация о версии не выводится.
На Линуксах всё точно также, только там файл настроек лежит в разных местах.
На Debian, Ubuntu или Linux Mint:
Bash:
$ sudo vi /etc/apache2/apache2.conf
На CentOS, Fedora, RHEL или Arch Linux:
Bash:
$ sudo vi /etc/httpd/conf/httpd.conf
И добавляем следующие две строчки
Код:
ServerSignature Off
ServerTokens Prod
Перезапускаем вебсервер, чтобы изменения вступили в силу:
Debian, Ubuntu или Linux Mint
Bash:
$ sudo service apache2 restart
CentOS/RHEL 6
Bash:
$ sudo service httpd restart
Fedora, CentOS/RHEL 7, Arch Linux
Bash:
$ sudo systemctl restart httpd.service
Можем убедиться вместе, теперь всё отлично:
Прячем версию PHP
Другая потенциальная угроза безопасности — это утечка версии PHP в ответе заголовков HTTP. По-умолчанию, веб-сервер Apache включает версию PHP в "X-Powered-By" ответа HTTP заголовка.
Если вы хотите спрятать версию PHP в HTTP заголовке, откройте файл php.ini текстовым редактором, найдите там
expose_php = On
и замените её на expose_php = Off
На Windows
У тех, кто ставил сервер по моей инструкции, этот файл находится здесь:
C:ServerbinPHPphp.ini
Откройте его текстовым редактором и, как уже было сказано, найдите
expose_php = On
и замените её на expose_php = Off
Перезапустим сервер и проверим:
Желаемый результат достигнут! Возвращаемся к нашим Линуксам.
На Debian, Ubuntu или Linux Mint:
Bash:
$ sudo vi /etc/php5/apache2/php.ini
На CentOS, Fedora, RHEL или Arch Linux:
Bash:
$ sudo vi /etc/php.ini
Код:
expose_php = Off
Больше вы не увидите поле "X-Powered-By" в HTTP заголовках ответа.