Настройка http Strict Transport Security (HSTS) в Exchange Server

Обзор

Http Strict Transport Security (HSTS) — это широко поддерживаемый стандарт , который помогает защитить посетителей веб-сайта, гарантируя, что их браузер всегда подключается по протоколу HTTPS. HSTS работает путем отправки специального заголовка HTTP-ответа с сервера в браузер с именем Strict-Transport-Security (STS). Этот заголовок содержит директиву max-age , указывающую продолжительность времени (в секундах), чтобы браузер помнил, что доступ к сайту можно получить только по протоколу HTTPS. Когда браузер получает этот заголовок, он автоматически изменяет все HTTP-запросы для доступа к сайту на HTTPS-запросы.

HSTS не только добавляет защиту от распространенных сценариев атак, но и помогает устранить необходимость в распространенной (и теперь небезопасной) практике перенаправления пользователей с URL-адреса HTTP на URL-адрес HTTPS. HSTS также можно использовать для устранения активных и пассивных сетевых атак. Однако HSTS не устраняет уязвимости вредоносных программ, фишинга или браузеров.

Принцип работы HSTS

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

  • Должен быть допустимым и доверенным для клиента;
  • Срок действия не должен истек; И
  • Должен содержать домен или поддомен, который был вызван в браузере.

Дополнительные рекомендации см. в статье Безопасный просмотр веб-страниц с помощью Microsoft Edge .

Когда браузер узнает, что домен включил HSTS, он:

  • Всегда используйте https:// подключение, в том числе при щелчке по ссылке http:// или после ввода URL-адреса в адресной строке без указания протокола.
  • Удаляет возможность для пользователей щелкать предупреждения (например, просроченные или недопустимые сертификаты, несоответствия имен и т. д.).

Существуют некоторые сценарии (например, у пользователя есть новый компьютер, новый профиль, новый браузер или удалены данные и параметры браузера), в которых пользователь уязвим в течение короткого периода времени, так как он посещает сайт в первый раз без принудительного применения HSTS. Для решения этих сценариев проект Chromium поддерживает HSTS Preload List (который также используется другими браузерами, такими как Microsoft Edge и Mozilla Firefox). Применяет Preload List HSTS даже при первом посещении сайта.

Вы можете отправить свой домен в список HSTS. Веб-сервер (или, в нашем случае, сервер Exchange Server) также должен отправить директиву preload как часть заголовка Strict-Transport-Security , чтобы сообщить, что предварительная загрузка HSTS должна быть выполнена браузером.

Как Exchange Server обрабатывает HTTP-подключения

По умолчанию Exchange Server не перенаправляет трафик HTTP в HTTPS, так как для веб-сайта по умолчанию требуется ПРОТОКОЛ SSL. Дополнительные сведения см. в разделе Параметры по умолчанию для виртуальных каталогов Exchange .

Однако можно настроить автоматическое перенаправление с HTTP на HTTPS, выполнив действия, описанные в разделе Настройка перенаправления http на https для Outlook в Интернете в Exchange Server, и в результате Exchange Server принимает подключения, установленные через HTTP, и отвечает с HTTP 302 redirectпомощью .

HSTS может помочь значительно сократить число небезопасных перенаправлений HTTP на HTTPS, так как перезапись на HTTPS выполняется самим браузером, а не сервером HTTP 302 redirect в ответе. Использование HSTS также может привести к повышению производительности, хотя это не является основной целью.

Независимо от конфигурации по умолчанию (которая не разрешает незашифрованные подключения), рекомендуется указать Strict-Transport-Security заголовок в качестве части заголовка ответа.

Включение HSTS на Exchange Server

Заголовок STS можно настроить в Exchange Server 2019 г. и Exchange Server 2016 г., хотя способ настройки каждой версии отличается.

Важно!

HSTS необходимо настроить только в , Default Web Site так как это конечная точка, к которой подключаются клиенты. HSTS не следует настраивать в Exchange Back End. Также следует рассмотреть возможность настройки HSTS через заголовок ответа на устройствах, работающих перед сервером Exchange Server на уровне 7 (например, подсистемы балансировки нагрузки или обратные прокси-серверы).

Рекомендуется начать с max-age конфигурации 300 секунд, что составляет 5 минут. После внесения изменений следует внимательно следить за подключением клиента к серверу Exchange Server и откатить изменения, если возникнет какая-либо проблема.

max-age Обновите значение до одной недели (604800) или одного месяца (2592000) и дождитесь полного max-age этапа, прежде чем переходить дальше. Значение max-age одного года (31536000) должно быть задано как минимальное с точки зрения безопасности, а также по крайней мере обязательно, если вы планируете добавить домен в HSTS Preload List. max-age Рекомендуется задать значение двух лет (63072000).

Примечание.

В следующих примерах задается max-age значение 300 секунд, что является конфигурацией, которая должна использоваться только для проверки функциональности. Обязательно измените значение атрибута на более высокое, когда вы будете готовы к переносу конфигурации в рабочую среду.

Exchange Server 2019

Чтобы настроить Exchange Server 2019 для отправки заголовкаStrict-Transport-Security, можно использовать Windows PowerShell или пользовательский интерфейс диспетчера IIS. В следующем разделе описаны оба метода. Конфигурация HSTS является конфигурацией для каждого сервера и поэтому должна выполняться на каждом сервере Exchange Server.

Настройка HSTS с помощью PowerShell

Выполните следующие команды в окне PowerShell с повышенными привилегиями, чтобы настроить и включить HSTS:

Примечание.

Чтобы настроить более высокое max-age значение для Exchange Server 2019 г., можно снова выполнить команды, используя более высокое значение. Нет необходимости удалять существующую конфигурацию заранее.

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $true
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 300
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $true

Если вы планируете добавить домен в HSTS Preload List, необходимо убедиться, что директива preload также отправляется как часть заголовка Strict-Transport-Security . Не следует отправлять директиву, preload если вы не планируете отправлять домен в HSTS Preload List.

Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $true

Наконец, для завершения настройки HSTS необходимо выполнить следующие команды:

Stop-IISCommitDelay
Remove-Module IISAdministration

Настройка HSTS с помощью диспетчера IIS

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

  1. Запуск диспетчера IIS (InetMgr.exe)

  2. Перейдите к Sites и щелкните Default Web Site

  3. Actions В меню выберитеHSTS...

    Снимок экрана: раздел HSTS в диспетчере IIS, который можно использовать для включения HSTS.

  4. Enable Установите флажок, определите max-age значение и выберите директивы в соответствии с описанием в этой статье.

    Снимок экрана: конфигурация HSTS в диспетчере IIS с некоторыми флажками.

    Важно!

    Мы не можем перенаправить HTTP на HTTPS с помощью конфигурации HSTS, так как это нарушает подключение в некоторых сценариях, включая командную консоль Exchange (EMS). Если вы хотите включить перенаправление http to HTTPS, необходимо выполнить действия, описанные в разделе Настройка перенаправления http to https для Outlook в Интернете в Exchange Server.

  5. Щелкните OK , чтобы завершить и активировать конфигурацию.

Exchange Server 2016

Примечание.

Хотя настройка HSTS возможна с помощью пользовательского интерфейса в операционных системах, поддерживаемых Exchange Server 2019 г., этот элемент управления изначально недоступен в операционных системах, поддерживаемых Exchange Server 2016 г. Поэтому мы описываем только шаги, которые необходимо выполнить с помощью PowerShell.

Чтобы настроить Exchange Server 2016 для отправки заголовкаStrict-Transport-Security, выполните следующие команды в окне PowerShell с повышенными привилегиями. Конфигурация HSTS является конфигурацией для каждого сервера и поэтому должна выполняться на каждом сервере Exchange.

Примечание.

Чтобы настроить более высокое max-age значение для Exchange Server 2016, необходимо сначала удалить заголовок HTTP-ответа, прежде чем снова выполнять следующие команды.

Windows Server 2012 & 2012 R2

Если вы не планируете добавлять домен в HSTS Preload List, необходимо убедиться, что директива preload не отправлена в качестве части заголовка Strict-Transport-Security . Выполните следующую команду, чтобы настроить HSTS без отправки директивы preload :

Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains"}

или

Если вы планируете добавить домен в HSTS Preload List, необходимо убедиться, что директива preload отправлена как часть заголовка Strict-Transport-Security . Выполните следующую команду, чтобы настроить Exchange Server отправку preload директивы в рамках конфигурации HSTS:

Import-Module WebAdministration
Add-WebConfigurationProperty -Filter "system.webServer/httpProtocol/customHeaders" -PSPath "IIS:\Sites\Default Web Site" -Name . -AtElement @{name="Strict-Transport-Security"} -Value @{name="Strict-Transport-Security";value="max-age=300; includeSubDomains; preload"}

Windows Server 2016

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"

Если вы не планируете добавлять домен в HSTS Preload List, необходимо убедиться, что директива preload не отправлена в качестве части заголовка Strict-Transport-Security . Выполните следующую команду, чтобы настроить HSTS без отправки директивы preload :

New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}

или

Если вы планируете добавить домен в HSTS Preload List, необходимо убедиться, что директива preload отправлена как часть заголовка Strict-Transport-Security . Выполните следующую команду, чтобы настроить Exchange Server отправку preload директивы в рамках конфигурации HSTS:

New-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}

Наконец, для завершения настройки HSTS необходимо выполнить следующие команды:

Stop-IISCommitDelay
Remove-Module IISAdministration

Отключение HSTS на Exchange Server

Если вы хотите остановить отправку заголовка Strict-Transport-Security Exchange Server, можно выполнить откат конфигурации для каждого сервера. Действия по отключению HSTS отличаются в Exchange Server 2016 г. и Exchange Server 2019 г.

Примечание.

Спецификация HSTS позволяет отправлять директиву max-age со значением 0. Эту конфигурацию можно использовать для перезаписи кэшированных сведений о политике HSTS в браузерах. Если вы планируете удалить конфигурацию Exchange Server HSTS, может быть полезно сначала задать max-age значение 0 перед удалением конфигурации заголовкаStrict-Transport-Security.

Exchange Server 2019

Чтобы Exchange Server 2019 прекратить отправку заголовкаStrict-Transport-Security, можно использовать Windows PowerShell или пользовательский интерфейс диспетчера IIS. В следующем разделе описаны оба метода.

Настройка HSTS с помощью PowerShell

Выполните следующие команды в окне PowerShell с повышенными привилегиями, чтобы отключить HSTS:

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$sitesCollection = Get-IISConfigSection -SectionPath "system.applicationHost/sites" | Get-IISConfigCollection
$siteElement = Get-IISConfigCollectionElement -ConfigCollection $sitesCollection -ConfigAttribute @{"name"="Default Web Site"}
$hstsElement = Get-IISConfigElement -ConfigElement $siteElement -ChildElementName "hsts"
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "enabled" -AttributeValue $false
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "max-age" -AttributeValue 0
Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "includeSubDomains" -AttributeValue $false

Если предыдущая конфигурация HSTS была для отправки директивы preload , убедитесь, что она также отключена:

Важно!

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

Set-IISConfigAttributeValue -ConfigElement $hstsElement -AttributeName "preload" -AttributeValue $false

Наконец, для завершения настройки HSTS необходимо выполнить следующие команды:

Stop-IISCommitDelay
Remove-Module IISAdministration

Настройка HSTS с помощью диспетчера IIS

Чтобы отключить HSTS, выполните следующие действия в диспетчере служб IIS.

  1. Запуск диспетчера IIS (InetMgr.exe)

  2. Перейдите к Sites и щелкните Default Web Site

  3. Actions В меню выберитеHSTS...

    Снимок экрана: раздел HSTS в диспетчере IIS, который можно использовать для отключения HSTS.

  4. Снимите флажок все директивы, установите max-age для директивы значение 0 и, наконец, снимите флажок Enable

    Снимок экрана: конфигурация HSTS в диспетчере IIS с снятыми флажками.

  5. Щелкните OK , чтобы завершить настройку.

Exchange Server 2016

Примечание.

Хотя настройка HSTS возможна с помощью пользовательского интерфейса в операционных системах, поддерживаемых Exchange Server 2019 г., этот элемент управления изначально недоступен в операционных системах, поддерживаемых Exchange Server 2016 г. Поэтому мы описываем только шаги, которые необходимо выполнить с помощью PowerShell.

Чтобы Exchange Server 2016 прекратить отправку Strict-Transport-Security заголовка, выполните следующие команды в окне PowerShell с повышенными привилегиями на каждом сервере Exchange.

Windows Server 2012 & 2012 R2

Import-Module WebAdministration
Remove-WebConfigurationProperty -PSPath "IIS:\Sites\Default Web Site" -Filter "system.webServer/httpProtocol/customHeaders" -Name . -AtElement @{name="Strict-Transport-Security"}

Windows Server 2016

Import-Module IISAdministration
Reset-IISServerManager -Confirm:$false
Start-IISCommitDelay

$iisConfig = Get-IISConfigSection -SectionPath "system.webServer/httpProtocol" -CommitPath "Default Web Site" | Get-IISConfigCollection -CollectionName "customHeaders"

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

Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains";}

или

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

Remove-IISConfigCollectionElement -ConfigCollection $iisConfig -ConfigAttribute @{"name"="Strict-Transport-Security"; "value"="max-age=300; includeSubDomains; preload";}

Наконец, для завершения настройки HSTS необходимо выполнить следующие команды:

Stop-IISCommitDelay
Remove-Module IISAdministration

Проверка правильности работы HSTS

Лучший способ убедиться, что защита HSTS работает должным образом, — использовать современный браузер, поддерживающий HSTS (например, Microsoft Edge, Firefox, Chrome, Safari, Opera и т. д.). При использовании браузера Microsoft Edge можно выполнить следующие действия. Если вы используете другой браузер, ознакомьтесь с документацией, чтобы узнать, какие действия по проверке флагов HSTS:

  1. Откройте браузер и установите HTTPS-подключение к OWA или ECP. Убедитесь, что сертификат, возвращенный сервером Exchange Server, соответствует используемому домену (например, e2k16-2.contoso.lab) и является доверенным для клиентского компьютера (так как это необходимо для активации защиты HSTS браузера для домена).
  2. Введите edge://net-internals/#hsts в адресной строке и нажмите клавишу ВВОД.
  3. Введите доменное имя, используемое для доступа к OWA или ECP (например, e2k16-2.contoso.lab), Query HSTS/PKP domain и нажмите клавишу ВВОД.

Пример.

Снимок экрана: диалоговое окно запроса HSTS в Microsoft Edge.

Если результат имеет значение Not found, это означает, что HSTS не используется для домена. Причина может быть в том, что URL-адрес ранее не был посещен или срок действия записи с хранилищем политик HSTS истек (он действителен в течение времени, указанного в директиве max-age ).

Если результат найден, выходные данные выглядят следующим образом:

Снимок экрана: результаты после использования диалогового окна запроса HSTS в Microsoft Edge.

Если используется HSTS и подключение не является доверенным (например, URL-адрес не соответствует домену, для которого выдан сертификат, или сертификат не является доверенным или истек), пользователь видит следующее предупреждение, которое невозможно обойти:

Блокирующая страница Microsoft Edge:

Снимок экрана: страница блокировки HSTS в браузере Microsoft Edge.

Блокировка страницы Mozilla Firefox:

Снимок экрана: страница блокировки HSTS в Mozilla Firefox.