SCROLL
Среднее время на прочтение: 2 мин.

Безопасность веб-сервера. Скрываем версии 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
<

 

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

 

Обсуждение

0 комментариев

Нет комментариев.