Перейти к содержимому

Hsts как настроить

  • автор:

Настройка HSTS

Перед включением HSTS важно тщательно проверить работу сайта по протоколу HTTPS и убедиться, что он работает корректно.

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

Для настройки HSTS перейдите в панель управления хостингом и выполните несколько простых шагов:

На странице «WWW-домены» выберите сайт, для которого нужно включить или выключить HSTS, и нажмите кнопку «Изменить».

На открывшейся странице измените настройку «HSTS» и нажмите кнопку «Ok» для подтверждения изменений.
* Настройка «HSTS» доступна только при включенном «Защищенном соединении (SSL)»

  • hosting/ssl/hsts
  • Последнее изменение: 2020/07/09 10:32

Как настроить HSTS (HTTP Strict Transport Security) на NGINX

В этой статье описывается, как настроить NGINX и NGINX Plus для реализации политики HSTS.

Что такое HSTS?

HTTPS (HTTP, зашифрованный с помощью SSL или TLS) является неотъемлемой частью мер по защите трафика на веб-сайт, что очень затрудняет злоумышленникам перехват, изменение или подделку трафика между пользователем и веб-сайтом.

Когда пользователь вводит веб-домен вручную (предоставляя доменное имя без префикса http://или https://) или идет по простой ссылке http://, первый запрос на веб-сайт отправляется в незашифрованном виде с использованием простого HTTP.

Большинство защищенных веб‑сайтов немедленно отправляют перенаправление для обновления пользователя до HTTPS‑соединения, но злоумышленник может организовать атаку man‑in‑the‑middle (MITM), чтобы перехватить первоначальный HTTP‑запрос, и с этого момента может контролировать сеанс пользователя.

HSTS стремится устранить потенциальную уязвимость, сообщая браузеру, что доступ к домену возможен только по протоколу HTTPS. Даже если пользователь вводит или следует простой HTTP-ссылке, браузер обновляет соединение до HTTPS:

Инструменты разработчика Chrome иллюстрируют, как политика строгой транспортной безопасности HTTP (HSTS) генерирует внутреннее перенаправление для обновления HTTP до HTTPS в целях защиты трафика
Инструменты разработчика Chrome иллюстрируют, как политика HSTS
генерирует внутреннее перенаправление для обновления HTTP до HTTPS:

Chrome developer tools illustrate how an HTTP Strict Transport Security (HSTS) policy generates an internal redirect to upgrade HTTP to HTTPS in order to secure traffic

Как Работает HSTS?

Политика HSTS работает путем отправки следующего заголовка HTTP-ответа с защищенных (HTTPS) веб-сайтов:

Strict-Transport-Security: max-age=31536000

Когда браузер видит этот заголовок с веб-сайта HTTPS, он “узнает”, что доступ к этому домену должен осуществляться только по протоколу HTTPS (SSL или TLS). Он кэширует эту информацию на max-age период (обычно 31 536 000 секунд, что равно примерно 1 году). Необязательный параметр includeSubDomains сообщает браузеру, что политика HSTS также применяется ко всем поддоменам текущего домена.

Strict-Transport-Security: max-age=31536000; includeSubDomains

Например, HTML-ответ для https://www.example.com может включать запрос к ресурсу https://example.com , чтобы убедиться, что HSTS установлен для всех поддоменов example.com.

Настройка HSTS в NGINX и NGINX Plus

Настройка заголовка ответа Строгой Транспортной Безопасности (STS) в NGINX и NGINX Plus относительно проста:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Параметр always гарантирует, что заголовок задан для всех ответов, включая ответы на внутренние ошибки. Более старые версии NGINX (до версии 1.7.5 или NGINX Plus R5) не поддерживают параметр always и не устанавливают заголовок для внутренних ответов на ошибки.

Правила наследования для директив add_header

Блоки конфигурации NGINX наследуют директивы add_header от своих блоков, поэтому вам нужно поместить директиву add_header в серверный блок верхнего уровня. Есть одно важное исключение: если блок содержит саму директиву add_header , он не наследует заголовки от блоков, и вам необходимо повторно объявить все директивы add_header:

server < listen 443 ssl; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; # This 'location' block inherits the STS header location / < root /usr/share/nginx/html; ># Because this 'location' block contains another 'add_header' directive, # we must redeclare the STS header location /servlet < add_header X-Served-By "My Servlet Handler"; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; proxy_pass http://localhost:8080; >>

Testing HTTP Strict Transport Security with Care

Once a client is presented with the HSTS policy, it caches the information for the specified max-age period. During that period, the browser refuses to access the web service over unencrypted HTTP, and refuses to grant exceptions to certificate errors (if the site previously presented a valid, trusted certificate). If you specify the includeSubDomains parameter for an HSTS policy, these restrictions also apply to all subdomains of the current domain.

It’s very difficult to back out an HSTS policy in order to remove the HTTPS version of a website or service. When you test HSTS, use a very short max-age timeout and ensure you’re comfortable with the effects and the obligation to maintain an HTTPS version of your site. When you first go live with your HSTS policy, keep max-age small and increase it only when you’re confident about doing so.

Does Every HTTPS Response Need to Have an STS Header?

The goal is to present the HSTS policy to your users as soon as possible when they begin the HTTPS session. If they don’t receive the HSTS policy during the session, they remain vulnerable to future HTTP hijacking attacks.

The browser needs to observe the STS header only once, so it’s not strictly necessary to add it to every location block and every response. However, adding it to just the home page or login page is probably not sufficient, and if you add the header only to cacheable responses, a client might not see it. Make sure you cover as much of your URL space as reasonably possible, with special attention to dynamic (non‑cacheable) content.

Running HTTP and HTTPS Versions of the Website Side by Side

Some sites run HTTP and HTTPS versions of a website within the same NGINX or NGINX Plus server, to make its content accessible through either protocol:

server

This is not appropriate when using HSTS because you don’t want users to access content over HTTP. Instead, you want to redirect all HTTP website accesses to use HTTPS:

server < listen 80 default_server; listen [::]:80 default_server; server_name _; # Discourage deep links by using a permanent redirect to home page of HTTPS site return 301 https://$host; # Alternatively, redirect all HTTP links to the matching HTTPS page # return 301 https://$host$request_uri; >server

Strengthening HSTS

A client is protected from HTTP interception after it has seen an STS header for the relevant domain within the declared max-age period.

However, HSTS is not a perfect solution to HTTP session hijacking. Users are still vulnerable to attack if they access an HSTS‑protected website over HTTP when they have:

  • Never before visited the site
  • Recently reinstalled their operating system
  • Recently reinstalled their browser
  • Switched to a new browser
  • Switched to a new device (for example, mobile phone)
  • Deleted their browser’s cache
  • Not visited the site recently and the max-age time has passed

To address this, Google maintains a “HSTS preload list” of web domains and subdomains that use HSTS and have submitted their names to https://hstspreload.appspot.com/. This domain list is distributed and hardcoded into major web browsers. Clients that access web domains in this list automatically use HTTPS and refuse to access the site using HTTP.

Be aware that once you set the STS header or submit your domains to the HSTS preload list, it is impossible to remove it. It’s a one‑way decision to make your domains available over HTTPS.

Read More

For more details about HSTS, check out the following resources:

  • RFC 6797, HTTP Strict Transport Security (HSTS)
  • HTTP Strict Transport Security on Wikipedia
  • Browser support for HSTS

If you’re considering adding the STS header to your NGINX configuration, now is also a great time to consider using other security‑focused HTTP headers, such as X-Frame-Options and X-XSS-Protection .

NGINX Plus has additional features for protecting your site from security threats and other issues, such as distributed denial‑of‑service (DDoS) attacks. To try NGINX Plus, start your free 30-day trial today or contact us to discuss your use cases.

Hsts как настроить

Настройка технологии HSTS имеет смысл при полной уверенности в правильной работе https-протокола на всех страницах ресурса. Пропишите заголовок HTTP Strict Transport Security или подключите функцию HSTS в личном кабинете хостинга, чтобы пользователи автоматически перенаправлялись на безопасное соединение.

  1. Что собой представляет поддержка HSTS
  2. Как настроить HSTS для сайт
  • Настройка HSTS в Apache
  • Настройка HSTS в Nginx

Что собой представляет поддержка HSTS

При вводе домена в адресной строке без протокола https либо в формате «site.ru» в браузере сперва выводится незащищенная версия сайта. Даже если на нем установлен SSL-сертификат, перенаправление происходит уже после первого перехода. Этим моментом пользуются мошенники с целью перехвата данных пользователя и перенаправления его на подставную страницу.

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

Несмотря на основное предназначение HSTS — защитить соединение, клиент остается уязвим при:

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

Для решения этой проблемы был создан список Preload List от Google. После обращения к сайту браузер проверяет наличие сайта в этом списке и лишь потом соединяет клиента с сервером по безопасному протоколу. Попасть в Preload List можно с помощью онлайн-запроса:

При активной технологии HSTS, если сертификат SSL окажется просроченным либо какие-то страницы ресурса не будут доступны по защищенному соединению — пользователь не получит доступ к ним. Обойти шифрованное соединение через HSTS не удастся ни в одном из браузеров.

Выйти из Preload List сложно. Чтобы это сделать, необходимо подать запрос на этом же ресурсе и ждать ответа. Для Chrome это происходит более трех месяцев, а для других браузеров — еще дольше. В этот период сайт недоступен пользователям. Перед внесением в Preload List определитесь наверняка, собираетесь ли постоянно поддерживать на сайте работу протокола https.

При подключенной технологии в браузере пользователю будут высвечиваться сайты, работающие исключительно по протоколу https. Даже если он введет в адресную строку домен через http, браузер автоматически перенаправит его на версию сайта с https. Механизм HSTS призван уменьшить количество незашифрованных соединений и свести к минимуму риски перехвата данных и кукисов.

Технология HSTS: что это такое?

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

Директ Лайн
Крупнейшее региональное интернет-агентство России. ТОП-10 в рейтинге Рунета.
1200+ проектов
90 специалистов
15 лет на рынке

Что такое HSTS?

Несколько лет назад вебмастера повально стали устанавливать на свои ресурсы SSL-сертификаты, призванные повысить уровень сохранности пользовательских данных. Однако, если разбираться в технологии, то для максимальной безопасности ее может быть недостаточно. Все дело в том, что пользователь, вводя в строке браузера адрес домена, предварительно попадает на незащищенную версию сайта, а уже после перенаправляется на версию с протоколом HTTPS. Этот принцип работы сервера позволяет злоумышленникам получать доступ к данным пользователей различными способами. Решить эту проблему позволяет технология HSTS.

Суть ее работы заключается в том, что браузеру передается защищенный заголовок HTTP Strict Transport Security, и происходить это может даже в первое посещение пользователем ресурса (если домен добавлен в Preload List). Благодаря этому заголовку, браузеру указывается необходимость включения защищенного соединения HTTPS, т.е. доступна становится исключительно данная версия соединения, а незащищенный HTTP перестает обслуживаться. Другими словами, перехватить запрос браузера в момент редиректа с HTTP на HTTPS уже не получится.

Нет времени разбираться?
Комплексное продвижение в онлайне

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

Интересный момент, если активирован механизм HSTS, то в случае присутствия на сайте страниц, работающих по незащищенному протоколу, доступ к ним автоматически будет закрыт. Та же ситуация возникнет, если закончился срок действия SSL-сертификата.

Как внедрить HSTS?

При первом посещении сайта, пользователь получает незащищенное соединение даже при использовании HSTS. Чтобы добиться максимального эффекта от внедрения этого механизма, необходимо добавить домен в специальный Preload List – список сайтов, созданный Google. Данный листинг поддерживается большинством браузеров, а для проверки наличия сайта в этом списке можно воспользоваться одним из специализированных сервисов (например, ssllabs.com). В Preload List перечислены домены, использующие механизм HSTS-заголовка с выставленным максимальным сроком действия и флагом preload.

Но перед добавлением домена в листинг, надо понимать, что после, сайт перестанет быть доступным по протоколу HTTP в принципе – будет возможно лишь соединение по HTTPS. Поэтому, нужно быть уверенным, что планируется постоянное использование SSL-сертификата, при этом не забывая его вовремя продлять.

Установка сертификата

Первым шагом на пути активации технологии HSTS, будет корректная установка SSL-сертификата. Данную услугу предоставляют большинство ведущих хостинг-провайдеров. Акцентировать внимание на принципах выбора сертификата не будем, скажем лишь о том, что, как правило, они приобретаются на один год, далее продляются (или перевыпускаются).

После установке важно проверить работу настроек – должно происходить автоматическое перенаправления с протокола HTTP на HTTPS, если все в порядке, идем дальше.

Настройка HSTS

Здесь есть два варианта: активация механизма посредством возможностей личного кабинета хостинг-провайдера. В этом случае, все довольно-таки просто. И второй – ручная настройка сервера, поговорим об этом ниже.

Предварительно требуется выбрать вариант заголовка:

  • Strict-Transport-Security: max-age= – определяет время действия HSTS для указанного домена.
  • Strict-Transport-Security: max-age=; includeSubDomains – также определяет время действия, но действие распространяется не только на домен, но и на его поддомены.
  • Strict-Transport-Security: max-age=; preload – помимо определения сроков действия HSTS, указывает браузеру пользователя о том, что данный домен состоит в списке листинга Preload List.

Привлекли 35.000.000 людей на 185 сайтов
Мы точно знаем, как увеличить онлайн–продажи

Применяем лучшие практики digital–продвижения как из вашей тематики, так и из смежных областей бизнеса. Именно это сделает вас на голову выше конкурентов и принесёт лиды и продажи.

  • max-age – присутствует в любом варианте заголовка и является обязательной. Указывает браузеру пользователя срок хранения типа соединения в секундах. Обычно задается срок хранения 31536000 и 63072000 (1 и 2 года, соответственно). Также можно выставить значение 0, в этом случае браузер будет сбрасывать информацию о соединении при каждом визите пользователя.
  • Includesubdomains – если домен содержит поддомены, то в заголовке задается данная директива. Чтобы обеспечить высокий уровень безопасности соединения, рекомендуется указать ссылку каждого поддомена на основной.
  • Preload – директива показывает, что сайт поддерживает предварительную загрузку HSTS и добавлен в листинг Preload List.

Strict-Transport-Security: «max-age=31536000;” preload

Данный заголовок передает браузеру следующую информацию: срок действия заголовка составляет 1 год (31536000 – секунды), домен добавлен в базу листинга. Если в течении этого срока на сайте перестает действовать SSL-сертификат, то браузер будет автоматически разрывать соединение.

Настройка в Apache

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

 Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;" 

В этом случае, срок действия выставлен 1 год, сам заголовок будет обновляться при каждом посещении ресурса. При этом, для перенаправления на страницы, работающие по протоколу HTTPS, следует добавить параметр (domain.com – ваш домен):

 [. ] ServerName domain.com Redirect permanent / https://domain.com/ 
Настройка для Ngnx

Аналогичным образом, внеся дополнительные параметры в конфигурационный файл, который, как правило, располагается по пути «/etc/nginx/conf.d». Параметры представляют собой прописанный заголовок из вариантов, перечисленных выше.

Ngnx позволяет использовать на одном сервере исключительно вариант с защищенным или незащищенным соединением. Одновременная поддержка работы этих протоколов не поддерживается.

Добавление в Preload List

Необязательное действие, но если планируется постоянно использовать SSL-сертификат на сайте, то для обеспечения максимально безопасного соединения рекомендуется добавить домен в листинг. Выше уже упоминалось о том, что после добавления туда сайта, все современные браузеры перестанут открывать незащищенные страницы. Если потребуется отключить HSTS, то для того, чтобы удалить домен из листинга потребуется как минимум нескольких месяцев ожидания. Поэтому перед добавлением, стоит учесть все нюансы.

Итак, алгоритм действий:

  1. Установить валидный SSL-сертификат на сервер.
  2. Должно корректно работать перенаправление с HTTP на HTTPS, все редиректы необходимо проверить. Помните, если какая-либо страница не доступна по HTTPS, после добавления в листинг, она будет недоступна в принципе.
  3. Настроить сервер на передачу заголовка Strict Transport Security.
  4. На сайте https://hstspreload.org ознакомиться с информаций, а добавление происходит в специальной форме.

Проверка HSTS

После настройки HSTS, его работу необходимо обязательно проверить на ошибки. Сделать это можно следующими способами:

    На стороне Apache с помощью CURL (где domain.com – имя проверяемого домена):

$ curl -s -D- https://domain.com | grep Strict Strict-Transport-Security: max-age=31536000; includeSubdomains;

Актуальность использования HSTS

Предварительная загрузка заголовка, безусловно, значительно повышает безопасность сайта (а точнее пользовательских данных), но требуется ли это для среднестатистических ресурсов? Скорее всего нет. Однако, данное решение будет оправданным, если на сайте производятся какие-либо транзакции, передается личная информация пользователей и прочее.

Если было решено включить HSTS на сайт, то рекомендуется вначале устанавливать минимально возможный срок действия заголовка (max-age), это позволит оперативно исправлять ошибки (речь про недоступность страниц по HTTPS) с минимальными последствиями.

Если говорить со стороны SEO-продвижения, то наличие HSTS на сайте может положительно повлиять на ранжирование сайта. Достигается это косвенным путем благодаря тому, что сокращается скорость загрузки страниц – серверу не требуется совершать перенаправления с HTTP на HTTPS, сразу загружается второй вариант протокола.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *