- PVSM.RU - https://www.pvsm.ru -
Внимание к мелочам рождает совершенство,
а вот совершенство уже не мелочь.
Микеланджело Буонарроти
C 2012 года администраторам веб-ресурсов стала доступна новая технология HTTP Strict Transport Security (HSTS) — механизм, активирующий форсированное защищённое соединение по HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение, вместо использования HTTP. Механизм использует особый заголовок HTTP Strict-Transport-Security, для переключения пользователя, зашедшего по HTTP, на HTTPS-сервер [1 [1]].
HSTS направлен на закрытие следующих уязвимостей к атакам:
| Пользователь помещает в закладки или набирает в адресной строке http://example.com/ [2] и становится жертвой атаки «man-in-the-middle» | HSTS автоматически преобразует HTTP-запросы в HTTPS для целевого домена |
| Веб-приложение, предполагаемое к использованию строго по HTTPS, по небрежности содержит HTTP-ссылки или отдает контент по HTTP | HSTS автоматически преобразует HTTP-запросы в HTTPS для целевого домена |
| Атакующий «man-in-the-middle» пытается перехватить трафик жертвы используя поддельный сертификат в надежде, что пользователь не обратит внимания на сообщение о невалидном сертификате | HSTS не даст пользователю пройти дальше сообщения о проблемах с сертификатом |
Включается данная технология проще простого, необходимо возвращать пользователю HTTP-заголовок «Strict-Transport-Security» в тот момент, когда он заходит на сайт по HTTPS:
Strict-Transport-Security: max-age=expireTime [; includeSubdomains]
expireTime
Время в секундах, на которое браузер должен запомнить, что данный сайт должен посещаться исключительно по HTTPS. includeSubdomains (опционально)
Если указать этот необязательный параметр, правила так же применятся ко всем поддоменам.
В случае, если веб-сайт принимает соединения по HTTP и перенаправляет их на HTTPS, пользователь вполне может обратиться к незашифрованной версии сайта до перенаправления если, к примеру, он наберет в адресной строке http://example.com/ [2] или, еще проще, example.com. Это открывает потенциальную возможность проведения атаки «man-in-the-middle», в которой HTTP-перенаправление вместо оригинальной зашифрованной страницы отправит пользователя прямиком на сайт злоумышленника.
Механизм HTTP Strict Transport Security позволяет веб-сайту проинформировать браузер, что тот не должен использовать HTTP и, вместо этого, автоматически со своей стороны преобразовывать все HTTP-запросы в HTTPS.
Например, вы подключаетесь к открытой точке доступа Wi-Fi в публичном месте и открываете ДБО своего любимого банка, чтобы проверить баланс и совершить пару платежей. К несчастью, используемая вами точка доступа на самом-то деле — ноутбук злоумышленника, перехватывающего ваши HTTP-запросы и перенаправляющего вас вместо оригинального сайта банка на страничку-клон. Ваши данные попадают прямо ему в руки.
HSTS решает данную проблему. Если вы хоть раз успешно подключились к веб-сайту банка по HTTPS, использующему «Strict Transport Security», браузер автоматически начнет использовать HTTS для всех запросов. Это предотвратит возможность атак «man-in-the-middle» вышеописанного типа.
Первый раз когда сайт посещается по HTTPS и возвращает заголовок «Strict Transport Security», браузер запоминает указанную информацию и все дальнейшие попытки доступа к сайту по HTTP будут автоматически преобразовываться в HTTPS.
Когда истечет указанный в заголовке «Strict-Transport-Security» таймаут, следующая попытка загрузить сайт по HTTP произойдет в обычном режиме и автоматическое перенаправление на HTTPS не осуществится.
Всякий раз при получении заголовка «Strict-Transport-Security», браузер обновляет таймаут, т.е. сайты имеют возможность обновлять данную информацию и не допустить истечения таймаута (или наоборот, по каким-либо причинам его уменьшить).
Кстати: заголовок «Strict-Transport-Security» игнорируется браузером в случае подключения по HTTP, так как атакующий может перехватить HTTP-соединение и подменить заголовок. Браузер поймет, что сайт HTTPS-совместим и должным образом обработает заголовок «Strict-Transport-Security» в том случае, если доступ к сайту происходит по HTTPS без ошибок с сертификатами.
Заголовки «Strict-Transport-Security» должны передаваться только по HTTPS. Клиенты не должны обрабатывать HSTS заголовки, присланные, не в HTTPS-ответах или по HTTPS с невалидными, неверно настроенными сертификатами. Следующие отрывки конфигурации должны находиться внутри контекста SSL и примеры кода предполагаются исключительно в контексте HTTPS ответов.
Имейте ввиду, что директива «max-age» представлена в секундах. 31536000 секунд (12 месяцев) в примерах ниже м.б. изменены в зависимости от того, как долго администратор веб-сервера предполагает использовать сайт исключительно по HTTPS. Рекомендовано устанавливать значение «max-age» довольно большим вроде 31536000 (12 мес.) или 63072000 (24 мес.). [3 [4]]
# подгружаем модуль (на примере RHEL/CentOS) LoadModule headers_module modules/mod_headers.so <VirtualHost 10.0.0.1:443> # Use HTTP Strict Transport Security to force client to use secure connections only Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" </VirtualHost>
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
Существует промежуток в котором пользователь со свежеустановленным браузером и сборошенными настройками оказывается уязвим. По этой причине Chrome и Firefox поддерживают список «предопреденных» HSTS ресурсов. Следующие домены настроены использовать HSTS «из коробки»:
Полный список сайтов доступен по ссылке: http://src.chromium.org/viewvc/chrome/trunk/src/net/http/transport_security_state_static.json [5] [4 [6]]
Автор: foboss
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/57603
Ссылки в тексте:
[1] 1: http://ru.wikipedia.org/wiki/HSTS
[2] http://example.com/: http://example.com/
[3] 2: https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
[4] 3: http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
[5] http://src.chromium.org/viewvc/chrome/trunk/src/net/http/transport_security_state_static.json: http://src.chromium.org/viewvc/chrome/trunk/src/net/http/transport_security_state_static.json
[6] 4: http://dev.chromium.org/sts
[7] www.owasp.org: Top 10 2010-A9-Insufficient Transport Layer Protection: https://www.owasp.org/index.php/Top_10_2010-A9-Insufficient_Transport_Layer_Protection
[8] security.stackexchange.com: How can a web application protect IE users when this browser doesn't support HSTS?: http://security.stackexchange.com/questions/23690/how-can-a-web-application-protect-ie-users-when-this-browser-doesnt-support-hst
[9] habrahabr.ru: Все на https, безопасно и дешево: http://habrahabr.ru/post/145359/
[10] habrahabr.ru: На пути к созданию безопасного веб-ресурса. Часть 1 — серверное ПО: http://habrahabr.ru/post/168739/
[11] Источник: http://habrahabr.ru/post/216751/
Нажмите здесь для печати.