Безопасность веб-сервера. Скрываем версии Apache и PHP на Linux
Рассмотрим применение базовых мер безопасности на веб-сервере (Apache), развернутом на Linux (DEB) (Debian 8 Jessie/Debian 9 Stretch/Ubuntu Server 14.04 LTS и т.д.).
После установки веб-сервера и PHP, в первую очередь необходимо скрыть версии самого веб-сервера и PHP. Знание злоумышленником версии установленных продуктов, может облегчить ему задачу по поиску известных уязвимостей, для этих версий продуктов.
Скрытие версии Apache
Изначально при обращении к веб-серверу, он выдает версию самого веб-сервера и системы на которой он работает. Для примера откроем несуществующую страницу на веб-сервере:
Либо выполним curl запрос:
curl -v http://192.168.1.3/sdf * Trying 192.168.1.3... * TCP_NODELAY set * Connected to 192.168.1.3 (192.168.1.3) port 80 (#0) > GET /sdf HTTP/1.1 > Host: 192.168.1.3 > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 404 Not Found < Date: Tue, 27 Nov 2018 11:30:33 GMT < Server: Apache/2.4.10 (Debian) < Content-Length: 271 < Content-Type: text/html; charset=iso-8859-1 <
В обоих случаях мы видим версию веб-сервера и ОС на которой он работает. Чтобы скрыть эти данные, нужно в конфигурационный файл (/etc/apache2/apache2.conf) веб-сервера (Apache) добавить два параметра:
ServerTokens Prod ServerSignature Off
Перезапускаем веб-сервер и проверяем, выполним аналогичные запросы что делали выше. Результат должен быть такой:
curl -v http://192.168.1.3/sdf * Trying 192.168.1.3... * TCP_NODELAY set * Connected to 192.168.1.3 (192.168.1.3) port 80 (#0) > GET /sdf HTTP/1.1 > Host: 192.168.1.3 > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 404 Not Found < Date: Tue, 27 Nov 2018 11:56:30 GMT < Server: Apache < Content-Length: 201 < Content-Type: text/html; charset=iso-8859-1 <
Теперь информация о версии веб-сервера и ОС на которой он работает, не отображается.
Скрытие версии PHP
[stextbox id=’info’]Ниже описанное действие применительно к версиям php 5.5 и младше. В старших версиях php 7.2, 7.4 данная настройка применена по-молчанию.[/stextbox]
По-умолчанию веб-сервер (Apache), при запросах включает версию PHP в «X-Powered-By» ответа HTTP заголовка.
Выполним curl запрос, станицы php:
curl -v http://192.168.1.3/info.php * Trying 192.168.1.3... * TCP_NODELAY set * Connected to 192.168.1.3 (192.168.1.3) port 80 (#0) > GET /info.php HTTP/1.1 > Host: glpi > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Tue, 27 Nov 2018 11:40:41 GMT < Server: Apache < X-Powered-By: PHP/5.6.33-0+deb8u1 < Vary: Accept-Encoding < Transfer-Encoding: chunked < Content-Type: text/html; charset=UTF-8 <
Видим что веб-сервер успешно выдал версию PHP, в секции X-Powered-By. Чтобы скрыть версию PHP в HTTP заголовке, нужно в конфигурационном файле (/etc/php5/apache2/php.ini), задать параметр:
expose_php = Off
Перезапускаем веб-сервер и проверяем, выполним curl запрос, станицы php. Теперь в HTTP заголовках ответа не будет секции X-Powered-By.
curl -v http://192.168.1.3/info.php * Trying 192.168.1.3... * TCP_NODELAY set * Connected to 192.168.1.3 (192.168.1.3) port 80 (#0) > GET /info.php HTTP/1.1 > Host: glpi > User-Agent: curl/7.52.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Tue, 27 Nov 2018 12:14:51 GMT < Server: Apache < Vary: Accept-Encoding < Transfer-Encoding: chunked < Content-Type: text/html; charset=UTF-8 <
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Обсуждение
Нет комментариев.