Механизм HSTS

HSTS (HTTP Strict Transport Security) — механизм, принудительно активирующий защищённое соединение через протокол HTTPS.

Содержание

1 Общая информация

  • HSTS защищает от даунгрейд-атак на TLS.
  • Указывает броузеру всегда использовать TLS для сайтов с соответствующими политиками.
  • Стандарт описан в RFC 6797.

2 Механизм работы

  • Сервер сообщает о политиках HSTS с помощью специального заголовка при подключении по протоколу https.
  • При подключении по /http заголовок HSTS игнорируется.
  • Когда сайт применяет политику HSTS, пользовательские броузеры, корректно воспринимающие заголовок HSTS, должны:
    • Автоматически автономно преобразовывать все http-ссылки на данный сайт в https-ссылки.
    • Если безопасность соединения https не может быть проверена (в частности, если TLS-сертификат сервера не подписан доверенным ключом), будет показано сообщение об ошибке, и пользователь будет лишен доступа к сайту.

3 Типы политик

3.1 Динамические политики

  • Политика применяется из HTTP-заголовка Strict-Transport-Security при первом заходе на сайт по HTTPS.
  • В заголовке указан срок действия и применимость к субдоменам.

3.2 Статические политики

  • Исходный вариант HSTS не защищает первое подключение пользователя к сайту. Злоумышленник может легко перехватить первое подключение, если оно происходит по протоколу http.
  • Для борьбы с этой проблемой большинство современных броузеров использует дополнительный статический список сайтов (HSTS preload list), требующих использования протокола https.
  • Список составляется авторами Google Chrome с 2010 года.
  • На базе этого списка составляются подобные списки для других броузеров.

4 Проверка работы

5 Поддержка на стороне сервера

5.1 Apache

5.1.1 Включение HSTS

  • За HSTS отвечает директива Strict-Transport-Security.

  • Реализуется с помощью модуля mod_headers.

  • Для блока <VirtualHost *:443> следует установить

    1<VirtualHost *:443>
    2...
    3Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    4...
    5</VirtualHost>
    
    • max-age: время, в течение которого броузер должен применять заголовок HSTS для этого сайта. Указан 1 год.
    • includeSubDomains: применять HSTS также для субдоменов.

6 Поддержка на стороне клиента

6.1 Chrome

6.1.1 Отключение HSTS

  • Настройки находятся по адресу chrome://net-internals/#hsts.
  • В Query HSTS/PKP domain укажем наш домен и нажмём Query для информации по настройке сайта.
  • В разделе Delete domain security policies указываем наш домен, нажимаем Delete.
  • Перезапускаем броузер.

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие