nixp.ru v3.0

10 августа 2020,
понедельник,
05:27:13 MSK

Сергей Пивоваров написал 10 июня в 11:49 (921 просмотр) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 4 комментария на сайте.

Коллеги.добрый день!
Пришлось тут по работе заняться настройкой apache, а именно создание небольшого сайта, по сути это первое знакомство. Но вот при проверке на уязвимости получаю сообщение Missing X-Frame-Options' header Порт 80.

Установлено:
apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-04-13T17:19:17

php -v
PHP 7.3.18-1+ubuntu20.04.1+deb.sury.org+1 (cli) (built: May 14 2020 10:36:07) ( NTS )

в apache отключена стандартная конфигурация 000-default.conf и добавлена своя sait.conf, создана символическая ссылка в /etc/apache2/sites-enabled/
включены модули ssl, rewrite, headers

Содержание sait.conf:

<VirtualHost *:80>
Define root_domain sait.domen.ru
ServerName ${root_domain}
Redirect / https://${root_domain}
</VirtualHost>

<VirtualHost *:443>
Define root_domain sait.domen.ru
Define root_path /var/www/sait

ServerName ${root_domain}
DocumentRoot ${root_path}

SSLEngine on

<IfModule mod_headers.c>
Header always set Strict-Transport-Security «max-age=15552000; includeSubDomains; preload»
</IfModule>
<Directory ${root_path}>
AllowOverride All
Require all granted
</Directory>

SSLCertificateFile /etc/letsencrypt/live/sait.domen.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sait.domen.ru/privkey.pem

Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>

Т.е. по сути на 80 порту сайта нет, а работает он только по ssl на 443, но тем не менее при сканирование на уязвимости получаю ошибку Missing 'X-Frame-Options' header Порт 80

Подскажите куда копать?

Дмитрий Шурупов

Можно объявить глобально, т.е. вообще для всех сайтов веб-сервера. Делается — условно прямо в httpd.conf (ну, в каком-то общем для всех include’е из conf.d — зависит от дистрибутива и т.п.):

Header always append X-Frame-Options SAMEORIGIN

Либо внутри нужного сайта — указать такое в .htaccess:

Header append X-FRAME-OPTIONS "SAMEORIGIN"

Либо вообще в самом приложении отдавать нужный HTTP-заголовок (перед выводом любого HTML-контента). Всё это зависит от масштабов применения данной настройки.

P.S. Судя по вашему конфигу, порт 80 вы всё-таки определяете для своего сайта. Это делается в блоке «VirtualHost *:80». Там стоит редирект на HTTPS-версию сайта, однако сам порт (80-й) доступен, отвечает на запросы клиентов. Если он совсем не должен быть доступен, то полностью его уберите. Результат можно посмотреть по выводу netstat (или другой утилиты, что показывает доступные порты текущей машины).

Сергей Пивоваров

Глобально x-frame задан, но это не помогает, htaccess положить некуда…
А вот, как в самом приложении отдавать нужный HTTP-заголовок, я честно говоря не понял?

Дмитрий Шурупов

Где и как x-frame задан глобально? Не переопределяется ли где-то на более локальном уровне?

Что значит, что .htaccess положить некуда? Он должен быть в корне /var/www/sait.

По поводу самого приложения. Например, в PHP это делается так.

Сергей Пивоваров

Нуууу, вот как раз в файле security.conf расскоментирована строка Header always append X-Frame-Options SAMEORIGIN.
В корне сайта лежит .htaccess, но он по сути читается только при обращении на 443 порт, т.к. на 80 происходит редирект и .htaccess не обрабатывается. При этом на 443 все нормально и x-frame отдается браузеру. По php тоже не понятно, заголовок используется при выводе страниц, а как отдать его при редиректе?…

Сергей Пивоваров

Наверное я заморачиваюсь и нет смысла пилить дальше. https://security.stackexchange.com/questions/188134/x-frame-options-header-on-redirect
В целом наверное это не уязвимость, так как по сути на 80 порту пустая страница.

Дмитрий Шурупов

Да, всё верно, хотел именно это и написать… У редиректа, скажем так, более высокий приоритет, поэтому сначала он срабатывает, а дело до остальных настроек (других заголовков) уже не доходит. Но криминала в этом нет.

Сергей Пивоваров

Спасибо за помощь