HSTS (HTTP Strict Transport Security) – это механизм веб-безопасности, который помогает защитить веб-сайты от атак типа «man-in-the-middle» (MITM)․ Он заставляет браузеры подключаться к сайту только через HTTPS, даже если пользователь ввел в адресной строке HTTP․ Это предотвращает перенаправление на небезопасные HTTP-версии сайта, которые могут быть использованы злоумышленниками для перехвата данных․
Зачем нужен HSTS?
Без HSTS, браузер сначала пытается подключиться к сайту через HTTP, а затем, получив редирект на HTTPS, переходит на защищенное соединение․ В течение этого первоначального HTTP-запроса, злоумышленник может перехватить данные или подменить содержимое сайта․ HSTS устраняет эту уязвимость, инструктируя браузер всегда использовать HTTPS․
Предварительные требования
Прежде чем настраивать HSTS, убедитесь, что:
- У вас установлен и настроен SSL/TLS сертификат для вашего сайта․
- Ваш сайт доступен по HTTPS․
- Все ссылки на вашем сайте используют HTTPS․
Настройка HSTS в IIS
Настройка HSTS в IIS выполняется с помощью заголовка HTTP-ответа․ Существует два способа его добавления:
Использование URL Rewrite Module
URL Rewrite Module – это мощный инструмент для управления URL-адресами в IIS․ Он позволяет добавлять, изменять и перенаправлять URL-адреса, а также добавлять HTTP-заголовки․
- Установите URL Rewrite Module: Если он еще не установлен, скачайте и установите его с официального сайта Microsoft: https://www․iis․net/downloads/microsoft/url-rewrite
- Откройте IIS Manager: Запустите диспетчер IIS․
- Выберите сайт: В левой панели выберите сайт, для которого вы хотите настроить HSTS․
- Откройте URL Rewrite: В центральной панели дважды щелкните по значку «URL Rewrite»․
- Добавьте правило: В правой панели нажмите «Add Rule․․․»․
- Выберите «Add a New Rule․․․»: Выберите этот пункт․
- Выберите «Blank rule»: В разделе «Rule Template» выберите «Blank rule»․
- Настройте правило:
- Name: Введите имя для правила, например, «HSTS»․
- Match URL:
- Requested URL: Matches the Pattern
- Using: Regular Expressions
- Pattern: ․*
- Ignore case: Checked
- Conditions: Оставьте пустым․
- Action:
- Action type: Add
- Action Properties:
- Response Header Name: Strict-Transport-Security
- Response Header Value: max-age=31536000; includeSubDomains; preload
- Нажмите «Apply»: Примените изменения․
Разъяснение значения заголовка:
- max-age=31536000: Указывает браузеру, как долго (в секундах) запоминать, что к сайту нужно подключаться только через HTTPS․ 31536000 секунд – это один год․
- includeSubDomains: Применяет HSTS ко всем поддоменам сайта․
- preload: Позволяет добавить ваш сайт в список предварительной загрузки HSTS, который встроен в большинство современных браузеров․ Это обеспечивает защиту даже при первом посещении сайта․ Для добавления в список предварительной загрузки необходимо соответствовать определенным требованиям и подать заявку на https://hstspreload․org/
Использование Web․config
Вы также можете настроить HSTS, добавив соответствующий заголовок в файл `web․config` вашего сайта․
Откройте файл `web․config` и добавьте следующий код в секцию `
<system․webServer> <httpProtocol> <customHeaders> <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" /> </customHeaders> </httpProtocol> </system․webServer>
Сохраните файл `web․config` и перезапустите сайт в IIS․
Проверка настройки HSTS
После настройки HSTS, убедитесь, что она работает правильно․ Вы можете использовать следующие инструменты:
- Онлайн-инструменты: Существуют онлайн-инструменты, которые позволяют проверить наличие заголовка HSTS в HTTP-ответе вашего сайта, например: https://securityheaders․com/
- Инструменты разработчика в браузере: Откройте инструменты разработчика в вашем браузере (обычно нажатием клавиши F12) и перейдите на вкладку «Network»․ Обновите страницу и проверьте, присутствует ли заголовок `Strict-Transport-Security` в HTTP-ответе․
Важные замечания
- Будьте осторожны с `includeSubDomains` и `preload`: Прежде чем включать эти опции, убедитесь, что все ваши поддомены и все ссылки на вашем сайте используют HTTPS․ В противном случае, пользователи могут столкнуться с проблемами при доступе к вашему сайту․
- Тестирование: Тщательно протестируйте HSTS на тестовом окружении, прежде чем применять его к рабочему сайту․
- Отмена HSTS: Если вам необходимо отключить HSTS, вам придется уменьшить значение `max-age` до 0․ Однако, браузеры могут кэшировать HSTS-заголовок, поэтому потребуется некоторое время, чтобы изменения вступили в силу․