Что такое hsts: Механизм HSTS: как включить и настроить?

HSTS — как сделать свой сайт максимально безопасным: настраиваем и подключаем механизм

HSTS — как максимально защитить свой сайт

Что такое HSTS, зачем он нужен и как включить его на своём сайте

Вы радостно выкатили свежий сайт в сеть, а Гуглу он не нравится: вместо загрузки всех ваших красивых анимированных прелоадов, крутых параллаксов и прочих wow-эффектов, он говорит пользователям, что соединение небезопасно и вот это вот всё. Первое впечатление, как известно, имеет значение, поэтому самое время позаботиться о включении HSTS — чтобы пользователи видели красоту, а не подозрительные предостережения.

Что такое HSTS

HSTS расшифровывается как HTTP Strict Transport Security — это механизм, после включения которого пользователи видят только защищенные страницы вашего сайта.

Что он умеет:

  • автоматически преобразовывает небезопасные HTTP-ссылки в безопасные HTTPS-ссылки;
  • не позволяет пользователю проигнорировать сообщение о проблемах с сертификатом;
  • позволяет добавить сайт в список предварительной загрузки HSTS, чтобы защитить его даже при первой загрузке браузером.

Включается HSTS с помощью специального заголовка ответа «Strict-Transport-Security».

Когда HSTS настроен правильно, то есть без ошибок в конфигурации, он блокирует для просмотра все незащищенные версии страниц вашего сайта.

При любой попытке посетителей перейти на небезопасную версию страницы сайта (http://), они будут автоматически перенаправлены на ее защищенную версию (https://).

Это как 301 редирект, только на уровне браузера, а не на уровне веб-страницы. Такое перенаправление круче — оно всегда использует только https://, даже при первой загрузке браузером, в отличие от 301 редиректа.

Как максимально защитить свой сайт с помощью HSTS

Для этого надо сделать два шага:

  1. Включить HSTS на сайте.
  2. Добавить сайт в список предварительной загрузки HSTS.

Чтобы включить HSTS на сайте

  1. Выберите вариант настроек для заголовка Strict-Transport-Security.
  2. Добавьте настройки для заголовка Strict-Transport-Security в конфигурацию веб-сервера.

Как выбрать вариант настроек для заголовка Strict-Transport-Security

Заголовок Strict-Transport-Security может содержать разный набор переменных. От того, какие переменные содержит заголовок, зависит степень защиты сайта. Возможны три варианта.

Базовая настройка (наименее безопасная)

Приведенный выше пример — самая простая версия заголовка.

  • Не влияет на поддомены.
  • Сайт не может быть включен в список предварительной загрузки.

Список предварительной загрузки HSTS — список сайтов, которые утверждает Google, чтобы Chrome и другие браузеры еще до загрузки этих сайтов понимали, что все их страницы нужно открывать только через https.

Такая настройка наименее безопасна, потому что не защищает поддомены и не позволяет сайту попасть в список предварительной загрузки HSTS. То есть, пользователи, которые впервые загружают ваш сайт в браузере, могут использовать для этого незащищенную ссылку http://.

Более безопасная настройка

Приведенный выше пример — более надежная версия заголовка:

  • Относительно безопасная настройка.
  • Включает HSTS на поддоменах.
  • Сайт не может быть включен в список предварительной загрузки.

Такая настройка включает HSTS не только для домена, но и для всех его поддоменов, но этого все еще недостаточно, чтобы сайт попал в список предварительной загрузки HSTS.

Наиболее безопасная и рекомендуемая настройка

Приведенный выше пример является наиболее безопасной версией заголовка. Рекомендуем именно такую настройку, поскольку:

  • это самая безопасная настройка,
  • она включает HSTS на поддоменах,
  • сайт может быть включен в список предварительной загрузки.

Переменные

  • Strict-Transport-Security: — имя заголовка.
  • max-age= — количество времени в секундах, в течение которого все http:// перенаправляются на https://.
  • includeSubDomains — включает HSTS на всех поддоменах.
  • preload — дает разрешение на внесение сайта в список предварительной загрузки.

Как только вы определили настройки для заголовка, можно добавлять их в конфигурацию веб-сервера.

Как добавить настройки для заголовка Strict-Transport-Security в конфигурацию веб-сервера

Настройки для заголовка Strict-Transport-Security добавляются в конфигурацию веб-сервера так же, как любые другие заголовки. Вот самые распространенные сценарии.

Файл .htaccess

Если вы используете файл .htaccess для своих конфигураций, HSTS можно добавить с помощью следующего кода:

Важно! Приведенный выше код является наиболее безопасным и содержит все параметры, которые необходимы, чтобы включить сайт в список предварительной загрузки HSTS. Эта рекомендуемая настройка будет использоваться во всех дальнейших примерах.

Apache

Добавляются в виртуалхост, который слушает ssl-подключения (<VirtualHost xx.xx.xxx.xx: 443>)

NGINX

Добавляются в блок настроек сервера, который слушает ssl-подключения (server {listen 443 …})

IIS

HSTS уже реализован по спецификации в виде опенсорсного модуля для IIS.

Litespeed

HSTS можно реализовать с помощью конфигураций. htaccess или Apache, описанных выше, или его родной конфигурации Litespeed.

Настройки для заголовка добавлены в конфигурацию веб-сервера. Теперь нужно внести сайт в список предварительной загрузки HSTS. Пока сайт не в списке предварительной загрузки, он все еще не полностью защищен от атак типа MITM.

Как попасть в список предварительной загрузки HSTS

1. Убедитесь, что сайт соответствует требованиям

Если у вас есть действующий и корректно настроенный на вашем веб-сервере сертификат и вы выполнили все действия, описанные в этой статье, то, скорее всего, ваш сайт соответствует требованиям. Заявленные требования:

  • Действующий сертификат.
  • Только HTTPS-трафик (весь HTTP-трафик должен быть перенаправлен на HTTPS).
  • HSTS включен на базовом домене.
  • HSTS включен на всех поддоменах, в том числе, на www, если для него существует запись DNS.
  • Срок действия — не менее восемнадцати недель (10 886 400 секунд).
  • Указан токен includeSubdomains.
  • Указан токен предварительной загрузки.
  • У любой страницы, на которую ваш сайт перенаправляет пользователя, должен быть заголовок HSTS.

2. Введите свой домен в в список предварительной загрузки HSTS

Перейдите в список предварительной загрузки и введите домен сайта. Дальше есть два сценария: либо вам сообщат, что сайт не соответствует требованиям для попадания в список, либо — что все ок. Статус домена можно отслеживать.

3. Ждите

Это долгий процесс. Может уйти несколько недель, пока сайт утвердят в список, и несколько месяцев, пока список окажется в свежих версиях Chrome и Firefox.

И напоследок — планируйте заранее

Если вы планируете запустить сайт или сменить домен в ближайшие несколько месяцев, стоит уже сейчас внести новый домен в список предварительной загрузки.

Интересная фигня. Будем пробовать 🙂

Владимир

Руководитель студии

Что такое HSTS Супер куки (HSTS Super cookies) и в чем их опасность для анонимности.

 

Что такое HSTS Super cookies и в чем их опасность?

HSTS (HTTP Strict Transport Security) — это механизм для принудительного установления защищенного соединения с сайтом.

Этот механизм называют также HSTS Super cookies, потому что сайт передает браузеру флаг, который сохраняется, его трудно удалить и по нему вас можно идентифицировать.

 

Как работают HSTS Super cookies?

Когда вы посещаете сайт с защищенным соединением (https), браузер отображает специальную иконку в адресной строке, говорящую о том, что соединение зашифровано и не может быть перехвачено сторонними лицами.

Даже если вы перешли  на сайт по незащищенной ссылке “http://”, то после прочтения заголовка HSTS (если он включен на сайте), браузер автоматически перейдет на защищенное соединение “https://”. При этом для каждого домена HSTS-флаг (в виде “true” или “false”) хранится в браузере долгое время (зачастую даже при использовании приватного режима просмотра) и может быть извлечен с любого домена (в отличие от cookies, которые доступны только для домена, который их установил).

С помощью механизма HSTS вас можно определить даже после смены IP при отключенных cookies и плагинах.

 

Как защититься от HSTS Super cookies?

  • В новых браузерах Opera, Firefox, Chrome можно очистить HSTS.

  • В браузере Firefox начиная с версии 34.0.5 в приватном режиме просмотра значения HSTS не устанавливаются во время работы.

  • Вы можете использовать старые версии браузеров. (Например, Opera до 12-й версии или Internet Explorer до 11-й версии).

К сожалению, в браузере Safari не только сохраняются HSTS Super cookies, но и копируются в сервис iCloud, поэтому удалить их практически невозможно.

 

Как удалить HSTS Super Cookies в Firefox:

  1. Закройте все вкладки и окна с нужным сайтом.

  2. Удалите cookies и историю посещений.

  3. Введите в адресной строке: about:permissions и нажмите “I’ll be careful, i promise!”.

  4. Выберите сайт из списка и нажмите кнопку “Forget about this site”. 

Как удалить HSTS Super Cookies в Chrome / Opera :

  1. Введите в адресной строке: chrome://net-internals/#hsts (для Chrome) или opera://net-internals/#hsts (для Opera).

  2. Введите нужный домен в поле “Delete domain” и нажмите “Delete”

  3. Введите домен в поле “Query domain” и нажмите “Query”. Если ответ — “Not Found”, значит HSTS удалены. 

 

 

 

 

 

 

Строгая транспортная безопасность — HTTP | MDN

Заголовок ответа HTTP Strict-Transport-Security (часто сокращенно HSTS) информирует браузеры о том, что доступ к сайту должен осуществляться только с использованием HTTPS, и что любые будущие попытки доступа к нему с использованием HTTP должны автоматически преобразовываться в HTTPS. .

Примечание: Это более безопасно, чем простая настройка перенаправления с HTTP на HTTPS (301) на вашем сервере, где первоначальное HTTP-соединение все еще уязвимо для атаки «человек посередине».

Тип заголовка Заголовок ответа
Запрещенное имя заголовка нет
 Строгая транспортная безопасность: max-age=
Строгая транспортная безопасность: max-age=; includeSubDomains
Строгая транспортная безопасность: max-age=; включать поддомены; предварительная загрузка
 
max-age=

Время в секундах, в течение которого браузер должен помнить, что доступ к сайту возможен только по протоколу HTTPS.

includeSubDomains Дополнительно

Если указан этот необязательный параметр, это правило применяется также ко всем поддоменам сайта.

предварительная нагрузка Дополнительно
Нестандартный

Дополнительные сведения см. в разделе Предварительная загрузка Strict Transport Security. При использовании preload директива max-age должна быть не менее 31536000 (1 год), а Должна присутствовать директива includeSubDomains .
Не является частью спецификации.

Если веб-сайт принимает соединение через HTTP и перенаправляет на HTTPS, посетители могут сначала взаимодействовать с незашифрованной версией сайта, прежде чем будут перенаправлены, если, например, посетитель вводит http://www.foo.com/ . или даже просто foo.com.
Это создает возможность для атаки «человек посередине».
Перенаправление может быть использовано для направления посетителей на вредоносный сайт вместо защищенной версии исходного сайта.

Заголовок HTTP Strict Transport Security информирует браузер о том, что он никогда не должен загружать сайт с использованием HTTP и вместо этого должен автоматически преобразовывать все попытки доступа к сайту с использованием HTTP в HTTPS-запросы.

Примечание: Заголовок Strict-Transport-Security игнорируется браузером, когда доступ к вашему сайту осуществляется только с использованием HTTP.
Как только ваш сайт будет доступен через HTTPS без ошибок сертификата, браузер узнает, что ваш сайт поддерживает HTTPS, и примет Заголовок Strict-Transport-Security .
Браузеры делают это, поскольку злоумышленники могут перехватывать HTTP-соединения с сайтом и внедрять или удалять заголовок.

Пример сценария

Вы входите в бесплатную точку доступа Wi-Fi в аэропорту и начинаете просматривать веб-страницы, посещая службу онлайн-банкинга, чтобы проверить баланс и оплатить пару счетов.
К сожалению, точка доступа, которую вы используете, на самом деле является ноутбуком хакера, и они перехватывают ваш исходный HTTP-запрос и перенаправляют вас на клон сайта вашего банка вместо настоящего. Теперь ваши личные данные доступны хакеру.

Строгая транспортная безопасность решает эту проблему; до тех пор, пока вы однажды заходили на веб-сайт своего банка по протоколу HTTPS, а на веб-сайте банка используется строгая транспортная безопасность, ваш
Браузер будет знать, что нужно автоматически использовать только HTTPS, что не позволяет хакерам выполнять подобные атаки типа «человек посередине».

Как это обрабатывает браузер

При первом доступе к вашему сайту с использованием HTTPS и возврате заголовка Strict-Transport-Security браузер записывает эту информацию, чтобы будущие попытки загрузить сайт с использованием HTTP будут автоматически использовать Вместо этого HTTPS.

Когда время истечения срока действия, указанное в заголовке Strict-Transport-Security , истечет, следующая попытка загрузить сайт через HTTP будет выполняться как обычно, а не автоматически с использованием HTTPS.

Всякий раз, когда заголовок Strict-Transport-Security доставляется в браузер, он обновляет время истечения срока действия для этого сайта, поэтому сайты могут обновлять эту информацию и предотвращать истечение времени ожидания.
Если необходимо отключить Strict Transport Security, установите параметр max-age to 0 (через соединение https) немедленно истечет срок действия заголовка Strict-Transport-Security , разрешая доступ через http.

Google поддерживает службу предварительной загрузки HSTS.
Следуя инструкциям и успешно отправив свой домен, вы можете гарантировать, что браузеры будут подключаться к вашему домену только через безопасные соединения.
Хотя служба размещена в Google, все браузеры используют этот список предварительной загрузки.
Однако он не является частью спецификации HSTS и не должен рассматриваться как официальный.

  • Информация о списке предварительной загрузки HSTS в Chrome: https://www.chromium.org/hsts
  • Проверка списка предварительной загрузки Firefox HSTS: nsSTSPreloadList. inc

Все настоящие и будущие поддомены будут HTTPS в течение максимального возраста в 1 год.
Это блокирует доступ к страницам или субдоменам, которые могут обслуживаться только через HTTP.

 Строгая транспортная безопасность: max-age=31536000; includeSubDomains
 

Если максимальный возраст в 1 год является приемлемым для домена, однако рекомендуемым значением является два года, как описано на https://hstspreload.org.

В следующем примере для max-age установлено значение 2 года и добавлен суффикс preload , необходимый для включения в списки предварительной загрузки HSTS всех основных веб-браузеров, таких как Chromium, Edge и Firefox.

 Строгая транспортная безопасность: max-age=63072000; включать поддомены; предварительная загрузка
 
Спецификация
HTTP Strict Transport Security (HSTS)
# section-6. 1

Таблицы BCD загружаются только в браузере

с включенным JavaScript. Включите JavaScript для просмотра данных.

  • Сообщение в блоге: HTTP Strict Transport Security появился!
  • Сообщение в блоге: Строгая транспортная безопасность HTTP (принудительно использовать HTTPS)
  • Статья OWASP: HTTP Strict Transport Security
  • Википедия: HTTP Strict Transport Security
  • Служба предварительной загрузки HSTS
  • Функции, ограниченные безопасным контекстом

Последнее изменение: , от участников MDN

【Заголовок HSTS】Объяснение, примеры и предотвращение

03.04.2021

Чтение: 6 мин.

Борислав Киприн

В этой статье:

HTTPSHTTP

Анализируем
https://example.com

Цель сканирования
https://example.

This entry was posted in Популярное