Что такое HSTS
Такой способ существует – называется данная технология HSTS (HTTP Strict Transport Security). Что такое HSTS? Это опция, включающая форсированное защищённое соединение по HTTPS, рекомендуется использовать для обеспечения повышенной безопасности. Другими словами, браузер будет все запросы на Вашем сайте открывать через HTTPS, даже если ссылки прописаны с HTTP.
Использование HSTS позволяет избавиться от необходимости ручной правки ссылок с HTTP, но это распространяется только на текущий домен, а могут быть размещены ссылки еще и на сторонние домены. Всё же лучше не полагаться только на автоматическую замену ссылок на HTTPS, а дополнительно исправить все ссылки на сайте в относительные или в абсолютные адреса с явным указанием протокола.
Как включить HSTS
Это стало возможным благодаря появлению нового заголовка, можно использовать любой из трех вариантов записи:
Первый вариант записи просто посылает заголовок, достаточно указать время его действия. Второй вариант указывает браузеру, что правило распространяется также и на все поддомены. Последний третий вариант – неофициальный, однако часто спрашивают, что значит HSTS preload.
HSTS preload
Что такое HSTS preload? Это опция, позволяющая использовать списки предварительной загрузки. Такие списки составляются крупными компаниями и используются всеми браузерами. Сейчас этим занимается Google – она предоставляет списки предварительной загрузки для своего браузера Chrome, а также и для других браузеров.
Как отключить HSTS
Ну и последнее, как отключить HSTS? Необходимо послать тот же заголовок, только с установленным временем max-age в 0. Это немедленно отключит HSTS и разрешит доступ через HTTP.
Google Chrome — отключаем HSTS
Google Chrome начал при входе на сайт выдавать ошибку:
Веб-сайт example.com использует механизм HSTS. Открыть сайт в настоящее время нельзя. Сбой мог быть вызван сетевой ошибкой или действиями злоумышленников. Скорее всего, сайт заработает через некоторое время.
HSTS (HTTP Strict Transport Security) — это механизм защиты от даунгрейд-атак на TLS, указывающий браузеру всегда использовать TLS для сайтов с соответствующими политиками. Работает так, что после первого успешного захода на HTTPS версию сайта браузер вместо HTTP начинает всегда использовать HTTPS.
Не совсем понимаю с какой стати я не могу зайти на собственный тестовый сайт с самоподписанными сертификатами. Но исправить проблему можно.
Попадаем в настройки HSTS браузера Google Chrome. В Query HSTS/PKP domain укажем наш домен и нажмём Query, если при этом браузер выдаст нечто осмысленное, то он действительно запомнил настройки нашего сайта.
В разделе Delete domain security policies указываем наш домен, нажимаем Delete.
Закрываем браузер и открываем снова. Сайт должен заработать.
Осторожно: HSTS
Про HSTS на Хабре уже писали, этот механизм включен в генераторе конфигов для веб-серверов от Mozilla. Написать этот пост я решил за один день столкнувшись с недоступность сразу двух крупных сайтов из-за HSTS.
Что такое HSTS?
HSTS (HTTP Strict Transport Security) — это механизм защиты от даунгрейд-атак на TLS, указывающий браузеру всегда использовать TLS для сайтов с соответствующими политиками. Стандарт описан в RFC6797, а политики бывают двух видов:
Динамические
Политика применяется из HTTP-заголовка Strict-Transport-Security при первом заходе на сайт по HTTPS, в нём указан срок действия и применимость к субдоменам:
Статические
Статические политики захардкожены в браузер и для некоторых сайтов включает привязку к вышестоящему CA, выпустевшему сертификат (например: google.com, paypal.com или torproject.org). Причем она может действовать только когда сайт открыт через TLS, разрешая незащищённое соединение, но блокируя MitM с подменой сертификата.
Список из Chromium используют все популярные браузеры (Firefox, Safari и IE 11+Edge) и добавить в него сайт может любой желающий, если веб-сервер отдаёт заголовок Strict-Transport-Security со сроком действия от двух лет и ключевым словом preload в конце:
Как выстрелись себе в ногу?
На днях коллеги пожаловались на недоступность некоторых разделов сайта 1С (dist.1c.ru и partweb.1c.ru). Поддержка уверяла что всё работает, у меня проблема не воспроизводилась и даже у коллег сайты открылись из всех браузеров, кроме основного Chrome. Тот выдал ERR_CONNECTION_TIMED_OUT спустя 20 секунд и почему-то настойчиво подставлял HTTPS в URL, даже если адрес был написан полностью с HTTP.
Решение пришло почти сразу, так как недавно упоминали HSTS в контексте корпоративного MitM. Гуглёж по ключевому слову первой ссылкой подсказал, что посмотреть кэш политик можно в chrome://net-internals/#hsts и догадка подтвердилась:
Политика включала все субдомены, хотя многие из них были доступны только на 80 порту без TLS.
После её удаления нужные разделы стали открываться, по дате получения (в формате unix time) в истории браузера нашли страницу с неверными настройками и отправили багрепорт в 1С.
Вторым сайтом оказался ask.mcdonalds.ru, который открывался первый раз, однако Chrome всё равно показал предупреждение с уже знакомой четырёхбуквенной аббревиатурой и без привычной кнопки Proceed to (unsafe):
Ошибка говорит о несоответствии имени сертификата, окончании срока действия или его отзыве, а показ кнопки для открытия сайта прямо запрещён в RFC. При этом политика для mcdonalds.ru оказалась статической, которую нельзя удалить из chrome://net-internals/#hsts.
Обойти такую заглушку в Chrome можно набрав thisisunsafe (предыдущим волшебным словом были badidea, а до него danger) или запустив браузер с ключом —ignore-certificate-errors.
В Firefox надо нажать «Forge About This Site» напротив сайта в истории, открыть about:config и создать новый Integer с именем «test.currentTimeOffsetSeconds» и значением 11491200, а затем открыть сайт в новой вкладке.
Выводы
Не включайте потенциально опасные функции без понимания принципов их работы. Оценку «A» в тесте от SSL Labs вы получите и без HSTS, а включить его можно после проверки всего функционала через TLS. Со статическим листом в браузере пути назад уже не будет, поэтому лучше сразу приобрести сертификат с wildcard.
Chrome и Firefox поддерживают дополнительный механизм защиты: HTTP Public Key Pinning (HPKP), позволяющий привязать хэш сертификата и отправлять уведомление владельцу, если браузеру попадётся сертификат от публичного CA для его домена с другим хэшем. Он помог раскрыть несколько инцидентов с публичными CA, но на практике используется очень редко из-за высокой цены ошибки.
Интересен состав захардкоженных политик в Chromium: кроме сети фастуда, нескольких доменов Mail.ru и Яндекса, там есть только ЮниКредит из ТОП-15 российски банков. Нет ни модного ТКС, ни Qiwi, ни WebMoney, а динамические политики оказались включены лишь у Qiwi и для адресов интернет-банков Бинбанка, МКБ, Открытия, Райффайзена и РСХБ.
Ещё там нет Телеграма, но есть Whatsapp, а в логе изменений встречаются запросы на удаление (!) ошибочно включенных сайтов, где какое-то время был preload в заголовке.
Как очистить или отключить HSTS для Chrome, Firefox и Internet Explorer —
При всех преимуществах безопасности вы можете легко заблокировать себя на веб-сайте, если вам удастся неправильно настроить параметры HSTS. Ошибки браузера, такие как NET :: ERR_CERT_AUTHORITY_INVALID являются основной причиной, по которой пользователи ищут способ обойти HSTS, либо сбросив настройки HSTS, либо отключив их.
Что такое HSTS?
HSTS (HTTP Strict Transport Security) является механизмом веб-безопасности, который помогает браузерам устанавливать соединения через HTTPS и ограничивать небезопасные соединения HTTP. Механизм HSTS был в основном разработан для борьбы с атаками SSL Strip, способными понизить безопасные HTTPS-соединения до менее безопасных HTTP-соединений.
Однако некоторые настройки HSTS приведут к ошибкам браузера, которые сделают ваш просмотр намного менее приятным. Вот ошибка Chrome, которая часто вызывается неправильной конфигурацией HSTS:
«Ошибка конфиденциальности: ваше соединение не является частным» (NET :: ERR_CERT_AUTHORITY_INVALID).
Если вы получаете сообщение об ошибке конфиденциальности при попытке посетить определенный веб-сайт, и этот же сайт доступен из другого браузера или устройства, существует большая вероятность того, что у вас возникла проблема с настройкой параметров HSTS. Если это так, решением будет либо очистить, либо отключить HSTS для вашего веб-браузера.
Ниже у вас есть набор руководств, которые помогут вам очистить или отключить настройки HSTS. Пожалуйста, следуйте инструкциям, связанным с вашим конкретным браузером, и не стесняйтесь следовать любому решению, которое наиболее подходит для вашего конкретного сценария.
Очистка настроек HSTS в Chrome
Проблема с настройками HSTS в Chrome обычно отображает «Ваше соединение не является частным»Ошибка типа в Chrome. Если бы вы были, чтобы расширить продвинутый В меню (связанном с ошибкой) вы, вероятно, увидите небольшое упоминание о HSTS («Вы не можете посетить * название сайта *, потому что сайт использует HSTS. Сетевые ошибки и атаки обычно носят временный характер, поэтому эта страница, вероятно, будет работать позже.«)
Если вы испытываете такое же поведение, выполните следующие действия, чтобы удалить кеш HSTS из браузера Chrome:
Очистка или отключение настроек HSTS в Firefox
По сравнению с Chrome, Firefox имеет несколько способов очистки или отключения настроек HSTS. Сначала мы собираемся начать с автоматических методов, но мы также включили несколько ручных подходов.
Способ 1: очистка настроек, забыв веб-сайт
Если этот метод оказался неэффективным или вы ищете способ очистить настройки HSTS без очистки остальных кэшированных данных, перейдите к другим методам ниже.
Метод 2: Очистка HSTS путем очистки настроек сайта
Способ 3: очистка настроек HSTS путем редактирования профиля пользователя
Способ 4: отключить HSTS из браузера Firefox
Очистка или отключение настроек HSTS в Internet Explorer
Поскольку это важное улучшение безопасности, HSTS по умолчанию включен как в Internet Explorer, так и в Microsoft Edge. Хотя не рекомендуется отключать HSTS в браузерах Microsoft, вы можете отключить эту функцию для Internet Explorer. Вот краткое руководство о том, как это сделать с помощью редактора реестра:
Замечания: Имейте в виду, что процедура у вас длиннее, если у вас система на основе x64, чем если у вас система на основе x86.
Защита от креативного злоупотребления HSTS
HTTP Strict Transport Security (HSTS) — это стандарт безопасности, который позволяет веб-сайту объявить себя доступным только по безопасным соединениям, а браузерам передаётся информация для редиректа. Веб-браузеры с поддержкой HSTS ещё и не позволяют пользователям игнорировать ошибки сертификатов на серверах.
Apple использует HSTS, например, на iCloud.com, так что каждый раз при попытке перейти по незащищённому адресу http://www.icloud.com из адресной строки браузера или по ссылке происходит автоматический редирект на https://www.icloud.com. Это отличная функция, которая предотвращает простые ошибки, например, по выполнению финансовых операций на канале без аутентификации.
Что здесь может быть не так?
Ну, стандарт HSTS описывает, что веб-браузер должен запоминать редирект на безопасную версию — и автоматически выполнять его от имени пользователя, если тот попытается в будущем установить небезопасное соединение. Информация для этого хранится на устройстве пользователя. И её можно использовать для создания «суперкуков», которые будут считываться межсайтовыми трекерами.
HSTS как постоянный межсайтовый идентификатор (суперкуки)
Злоумышленник, который стремится отслеживать посетителей сайта, может использовать бит информации из кэша HSTS на устройстве пользователя. Например, «загружать этот домен по HTTPS» представляет 1, а отсутствие записи — 0. Зарегистрировав некоторое большое количество доменов (например, 32 или более) и инициировав загрузку ресурсов с контролируемого подмножества, можно получить достаточно большое битовое пространство для уникального представления каждого посетителя сайта.
Авторы HSTS признали такую возможность в разделе 14.9 спецификаций («Креативное манипулирование запоминанием политики HSTS»):
… для тех, кто контролирует один или более HSTS-компьютеров, имеется возможность кодировать информацию в доменных именах и вынудить такие агенты пользователя кэшировать эту информацию в процессе пометки HSTS-компьютеров. Эта информация может быть извлечена другими компьютерами путём соответствующего конструирования и загрузки веб-ресурсов, вынуждая агента пользователя посылать запросы для закодированных доменных имён.
При первом посещении сайта:
Задачи
Риски конфиденциальности из-за HSTS периодически обсуждаются в прессе как теоретические. В отсутствие доказательств злонамеренного злоупотребления протоколом HSTS разработчики браузеров придерживались осторожности и послушно выполняли все инструкции HSTS от сайтов.
Недавно нам стало известно, что эта теоретическая атака в реальности используется против пользователей Safari. Поэтому мы разработали сбалансированное решение, которое сохраняет безопасность веб-трафика при одновременной защите от слежки.
Решение Apple
Эксплойт HSTS состоит из двух этапов: 1) создание идентификатора отслеживания; 2) операция чтения. Мы решили установить защиту на обоих этапах.
Защита 1: Ограничить установку HSTS только именем хоста или TLD+1
Мы заметили, что сайты трекеров конструируют длинные URL, в которых закодированы цифры на разных уровнях доменного имени.
https://a.a.a.a.a.a.a.a.a.a.a.a.a.example.com
https://a.a.a.a.a.a.a.a.a.a.a.a.example.com
https://a.a.a.a.a.a.a.a.a.a.a.example.com
https://a.a.a.a.a.a.a.a.a.a.example.com
https://a.a.a.a.a.a.a.a.a.example.com
https://a.a.a.a.a.a.a.a.example.com
https://a.a.a.a.a.a.a.example.com
…и т.д.
Также мы заметили, что сайты трекеров используют большое количество родственных доменных имен, например:
https://bit00.example.com
https://bit01.example.com
https://bit02.example.com
. и т.д.
https://bit64.example.com
Телеметрия показала, что злоумышленники устанавливают HSTS одновременно для широкого диапазона поддоменов. Поскольку использование HSTS таким образом не соответствует нормальному использованию, но облегчает трекинг, мы изменили сетевой стек, чтобы разрешить установку HSTS только для загруженного имени хоста (например, https://a.a.a.a.a.a.a.a.a.a.a.a.a.example.com) или TLD+1 (например, https://example.com).
Это не позволяет трекерам эффективно устанавливать большое количество бит HSTS. Вместо этого нужно отдельно зайти на каждый домен, представляющий бит в идентификаторе отслеживания. В то же время контент-провайдеры и рекламодатели могут решить, что для них неприемлема задержка из-за редиректа на 32 и более домена. WebKit также ограничивает размер цепочки редиректов, что ограничивает максимальное количество бит в идентификаторе даже если злоумышленники признали задержку приемлемой.
Это решает проблему установки суперкуков.
Защита 2: игнорировать состояние HSTS для запросов подресурсов с заблокированных доменов
Мы модифицировали WebKit так, что теперь игнорируются запросы на обновление состояния HSTS и просто используется исходный URL, если ссылка на загрузку небезопасного подресурса идёт с домена, для которого заблокированы куки (например, невидимые пиксели отслеживания). Это приводит к тому, что битовые идентификаторы суперкуков HSTS состоят только из нулей.










