Настройка 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.
Запуск диспетчера IIS (
InetMgr.exe
)Перейдите к
Sites
и щелкнитеDefault Web Site
Actions
В меню выберитеHSTS...
Enable
Установите флажок, определитеmax-age
значение и выберите директивы в соответствии с описанием в этой статье.Важно!
Мы не можем перенаправить HTTP на HTTPS с помощью конфигурации HSTS, так как это нарушает подключение в некоторых сценариях, включая командную консоль Exchange (EMS). Если вы хотите включить перенаправление http to HTTPS, необходимо выполнить действия, описанные в разделе Настройка перенаправления http to https для Outlook в Интернете в Exchange Server.
Щелкните
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.
Запуск диспетчера IIS (
InetMgr.exe
)Перейдите к
Sites
и щелкнитеDefault Web Site
Actions
В меню выберитеHSTS...
Снимите флажок все директивы, установите
max-age
для директивы значение0
и, наконец, снимите флажокEnable
Щелкните
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:
- Откройте браузер и установите HTTPS-подключение к OWA или ECP. Убедитесь, что сертификат, возвращенный сервером Exchange Server, соответствует используемому домену (например, e2k16-2.contoso.lab) и является доверенным для клиентского компьютера (так как это необходимо для активации защиты HSTS браузера для домена).
- Введите
edge://net-internals/#hsts
в адресной строке и нажмите клавишу ВВОД. - Введите доменное имя, используемое для доступа к OWA или ECP (например, e2k16-2.contoso.lab),
Query HSTS/PKP domain
и нажмите клавишу ВВОД.
Пример.
Если результат имеет значение Not found
, это означает, что HSTS не используется для домена. Причина может быть в том, что URL-адрес ранее не был посещен или срок действия записи с хранилищем политик HSTS истек (он действителен в течение времени, указанного в директиве max-age
).
Если результат найден, выходные данные выглядят следующим образом:
Если используется HSTS и подключение не является доверенным (например, URL-адрес не соответствует домену, для которого выдан сертификат, или сертификат не является доверенным или истек), пользователь видит следующее предупреждение, которое невозможно обойти: