Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Службы федерации Active Directory (AD FS) 2019 добавляют возможность настройки заголовков ответов безопасности HTTP, отправленных AD FS. Эти средства помогают администраторам защищаться от распространенных уязвимостей безопасности и позволяют им воспользоваться последними достижениями в механизмах защиты на основе браузера. Эта функция связана с введением двух новых командлетов: Get-AdfsResponseHeaders
и Set-AdfsResponseHeaders
.
Note
Функция настройки заголовков ответов безопасности HTTP (за исключением заголовков CORS) с помощью командлетов: Get-AdfsResponseHeaders
и Set-AdfsResponseHeaders
была возвращена в AD FS 2016. You can add the functionality to your AD FS 2016 by installing KB4493473 and KB4507459.
В этой статье рассматриваются часто используемые заголовки ответов безопасности для демонстрации настройки заголовков, отправленных AD FS 2019.
Note
В статье предполагается, что вы установили AD FS 2019.
Scenarios
В следующих сценариях показано, что администраторам может потребоваться настроить заголовки безопасности.
- Администратор включил ПРОТОКОЛ HTTP Strict-Transport-Security (HSTS) для защиты пользователей, которые могут получить доступ к веб-приложению с помощью HTTP из общедоступной точки доступа wi-fi, которая может быть взломана. HSTS заставляет использовать все подключения через шифрование HTTPS. Они хотели бы еще больше укрепить безопасность, включив HSTS для поддоменов.
- An administrator configured the X-Frame-Options response header to protect the web pages from being clickjacked. X-Frame-Options запрещает отрисовку любой веб-страницы в iFrame. Однако они должны настроить значение заголовка из-за нового бизнес-требования для отображения данных (в iFrame) из приложения с другим источником (доменом).
- An administrator enabled X-XSS-Protection to sanitize and block the page if browser detects cross scripting attacks. X-XSS-Protection предотвращает перекрестные атаки на скрипты. Однако они должны настроить заголовок, чтобы разрешить загрузку страницы после его очистки.
- Администратору необходимо включить общий доступ к ресурсам между источниками (CORS) и задать источник (домен) в AD FS, чтобы разрешить одностраничному приложению доступ к веб-API с другим доменом.
- Администратор включил заголовок политики безопасности содержимого (CSP), чтобы предотвратить атаки на межсайтовые сценарии и внедрение данных, не разрешая любые запросы между доменами. Однако из-за нового бизнес-требования они должны настроить заголовок, чтобы разрешить веб-странице загружать изображения из любого источника и ограничивать носитель доверенным поставщикам.
Заголовки ответов безопасности HTTP
AD FS содержит заголовки ответа в исходящем HTTP-ответе, отправленном веб-браузером. Вы можете перечислить заголовки с помощью командлета Get-AdfsResponseHeaders
, как показано на следующем снимке экрана.
The ResponseHeaders attribute in the screenshot identifies the security headers included by AD FS in every HTTP response. AD FS sends the response headers only if ResponseHeadersEnabled is set to True
(default value). Значение можно установить в False
, чтобы предотвратить включение AD FS любых заголовков безопасности в ответе HTTP. Однако этот параметр не рекомендуется. You can set ResponseHeaders to False
with the following command:
Set-AdfsResponseHeaders -EnableResponseHeaders $false
HTTP Strict-Transport-Security (HSTS)
HTTP Strict-Transport-Security (HSTS) — это механизм политики веб-безопасности, который помогает снизить уровень атак протокола и перехват файлов cookie для служб с конечными точками HTTP и HTTPS. Он позволяет веб-серверам объявлять, что веб-браузеры или другие соответствующие агенты пользователей должны взаимодействовать только с ним с помощью HTTPS и никогда не через протокол HTTP.
Все конечные точки AD FS для трафика веб-проверки подлинности открываются исключительно по протоколу HTTPS. В результате AD FS эффективно устраняет угрозы, которые предоставляет механизм политики безопасности транспорта HTTP. По умолчанию нет понижения версии протокола HTTP, так как в HTTP нет прослушивателей. Заголовок можно настроить, задав следующие параметры:
- max-age=<время истечения срока действия>. Время истечения срока действия (в секундах) указывает, сколько времени сайт должен быть доступен только с помощью HTTPS. Значение по умолчанию и рекомендуемое значение — 31536000 секунд (один год).
- includeSubDomains. Это необязательный параметр. Если задано, правило HSTS также применяется ко всем поддоменам.
HSTS customization
By default, the header is enabled and max-age
is set to one year; however, administrators can modify the max-age
(lowering max-age value isn't recommended) or enable HSTS for subdomains through the Set-AdfsResponseHeaders cmdlet.
Set-AdfsResponseHeaders -SetHeaderName "Strict-Transport-Security" -SetHeaderValue "max-age=<seconds>; includeSubDomains"
Example:
Set-AdfsResponseHeaders -SetHeaderName "Strict-Transport-Security" -SetHeaderValue "max-age=31536000; includeSubDomains"
By default, the header is included in the ResponseHeaders attribute; however, administrators can remove the header through the Set-AdfsResponseHeaders
cmdlet.
Set-AdfsResponseHeaders -RemoveHeaders "Strict-Transport-Security"
X-Frame-Options
AD FS по умолчанию не позволяет внешним приложениям использовать iFrames при выполнении интерактивного входа. Эта конфигурация предотвращает фишинговые атаки определенного стиля. Неинтерактивный вход можно выполнить с помощью iFrame из-за заранее установленного уровня безопасности сеанса.
Однако в некоторых редких случаях вы можете доверять определенному приложению, для которой требуется интерактивная страница входа AD FS с поддержкой iFrame. Заголовок X-Frame-Options
используется для этой цели.
Этот заголовок ответа HTTP о безопасности сообщает браузеру, может ли он отображать страницу в <frame>/<iframe>. Заголовок может иметь одно из следующих значений:
- deny. Страница в кадре не отображается. Эта конфигурация используется по умолчанию и рекомендуется.
- sameorigin. Страница отображается только в кадре, если источник совпадает с источником веб-страницы. Вариант не полезен, если все предки также находятся в одном и том же происхождении.
-
allow-from <указанного источника>. Страница отображается только в кадре, если источник (например,
https://www.".com
) соответствует конкретному источнику в заголовке. Некоторые браузеры могут не поддерживать этот параметр.
X-Frame-Options customization
По умолчанию заголовок имеет значение "Запретить"; однако администраторы могут изменить значение с помощью командлета Set-AdfsResponseHeaders
.
Set-AdfsResponseHeaders -SetHeaderName "X-Frame-Options" -SetHeaderValue "<deny/sameorigin/allow-from<specified origin>>"
Example:
Set-AdfsResponseHeaders -SetHeaderName "X-Frame-Options" -SetHeaderValue "allow-from https://www.example.com"
By default, the header is included in the ResponseHeaders attribute; however, administrators can remove the header through the Set-AdfsResponseHeaders
cmdlet.
Set-AdfsResponseHeaders -RemoveHeaders "X-Frame-Options"
X-XSS-Protection
Этот заголовок ответа безопасности HTTP используется для остановки загрузки веб-страниц при обнаружении атак на межсайтовые сценарии (XSS). Этот подход называется фильтрацией XSS. Заголовок может иметь одно из следующих значений:
- 0 disables XSS filtering. Not recommended.
- 1 enables XSS filtering. Если обнаружена атака XSS, браузер очищает страницу.
- 1; mode=block enables XSS filtering. Если обнаружена атака XSS, браузер блокирует отображение страницы. Этот параметр используется по умолчанию и рекомендуется.
X-XSS-Protection customization
By default, the header is set to 1; mode=block;. Однако администраторы могут изменить значение с помощью командлета Set-AdfsResponseHeaders
.
Set-AdfsResponseHeaders -SetHeaderName "X-XSS-Protection" -SetHeaderValue "<0/1/1; mode=block/1; report=<reporting-uri>>"
Example:
Set-AdfsResponseHeaders -SetHeaderName "X-XSS-Protection" -SetHeaderValue "1"
By default, the header is included in the ResponseHeaders attribute; however, admins can remove the header through the Set-AdfsResponseHeaders
cmdlet.
Set-AdfsResponseHeaders -RemoveHeaders "X-XSS-Protection"
Заголовки общего доступа к ресурсам между источниками (CORS)
Безопасность веб-браузера запрещает веб-странице выполнять запросы между источниками, инициируемые в скриптах. Однако может потребоваться получить доступ к ресурсам в других источниках (доменах). Общий доступ к ресурсам независимо от источника (CORS) — это стандарт консорциума W3C, позволяющий серверу смягчить ограничения политики одного источника. С помощью CORS сервер может явно разрешать некоторые междудоменные запросы, при этом отклоняя другие.
Чтобы лучше понять запрос CORS, в следующем сценарии рассматривается экземпляр, в котором одностраничное приложение (SPA) должно вызывать веб-API с другим доменом. Кроме того, примите во внимание, что как SPA, так и API настроены в AD FS 2019, и в AD FS включена поддержка CORS. AD FS может определять заголовки CORS в HTTP-запросе, проверять значения заголовков и включать соответствующие заголовки CORS в ответ. Дополнительные сведения о включении и настройке CORS в AD FS 2019 см. в разделе "Настройка CORS". Следующий пример поможет вам понять сценарий:
Пользователь обращается к SPA через клиентский браузер и перенаправляется в конечную точку проверки подлинности AD FS для проверки подлинности. Так как SPA настроен для неявного потока предоставления, запрос возвращает маркер Access + ID в браузер после успешной проверки подлинности.
После проверки подлинности пользователя интерфейсный JavaScript, включенный в SPA, выполняет запрос на доступ к веб-API. Запрос перенаправляется в AD FS со следующими заголовками:
- Параметры — описывает параметры связи для целевого ресурса.
- Источник — включает источник веб-API.
- Access-Control-Request-Method — определяет метод HTTP (например, DELETE), который будет использоваться при выполнении фактического запроса.
- Access-Control-Request-Headers — определяет заголовки HTTP, которые будут использоваться при выполнении фактического запроса.
Note
Запрос CORS похож на стандартный HTTP-запрос. Однако наличие заголовка источника указывает, что входящий запрос связан с CORS.
AD FS проверяет, что источник веб-API, включенный в заголовок, указан в доверенных источниках, настроенных в AD FS. For more information on how to modify trusted origins, see CORS Customization. AD FS отвечает следующими заголовками:
- Access-Control-Allow-Origin — значение, аналогичное заголовку Origin.
- Access-Control-Allow-Method - значение, аналогичное значению заголовка Access-Control-Request-Method.
- Access-Control-Allow-Headers - значение, аналогичное значению заголовка Access-Control-Request-Headers.
Браузер отправляет фактический запрос, включая следующие заголовки:
- Метод HTTP (например, DELETE).
- Источник — включает источник веб-API.
- Все заголовки, включенные в заголовок ответа Access-Control-Allow-Headers.
После проверки AD FS утверждает запрос, включив домен веб-API (источник) в заголовок ответаAllow-Origin управления доступом.
Включение заголовка Access-Control-Allow-Origin позволяет браузеру вызывать запрошенный API.
CORS customization
По умолчанию функция CORS не включена; однако администраторы могут включить функциональные возможности с помощью командлета Set-AdfsResponseHeaders
.
Set-AdfsResponseHeaders -EnableCORS $true
После включения администраторы могут перечислить список доверенных источников с помощью того же командлета. Например, следующая команда разрешает запросы CORS из источников https://example1.com
и https://example1.com
.
Set-AdfsResponseHeaders -CORSTrustedOrigins https://example1.com,https://example2.com
Note
Администраторы могут разрешить запросы CORS из любого источника, включив "*" в список источников, которым доверяют. Однако такой подход не рекомендуется из-за уязвимостей безопасности, и при выборе этого подхода появляется предупреждающее сообщение.
Политика безопасности содержимого (CSP)
Этот заголовок ответа безопасности HTTP используется для предотвращения межсайтового скриптинга, кликджекинга и других атак на внедрение данных, предотвращая непреднамеренное выполнение браузерами вредоносного содержания. Браузеры, не поддерживающие политику безопасности содержимого (CSP), игнорируют заголовки ответов CSP.
CSP customization
Настройка заголовка CSP включает изменение политики безопасности, которая определяет ресурсы, которые браузер может загружать для веб-страницы. Политика безопасности по умолчанию:
Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:;
The default-src directive is used to modify -src directives without listing each directive explicitly. Например, в следующем примере политика 1 совпадает с политикой 2.
Policy 1
Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "default-src 'self'"
Policy 2
Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "script-src 'self'; img-src 'self'; font-src 'self';
frame-src 'self'; manifest-src 'self'; media-src 'self';"
Если директива явно указана, указанное значение переопределяет значение, заданное для default-src. В следующем примере img-src принимает значение "*" (позволяет загружать изображения из любого источника), а другие директивы -src принимают значение как "self" (ограничение на тот же источник, что и веб-страница).
Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "default-src 'self'; img-src *"
Для политики по умолчанию src можно определить следующие источники:
- "self" — указание этого источника ограничивает загрузку содержимого только из того же источника, что и веб-страница.
- "unsafe-inline" — указание этого источника в политике позволяет использовать встроенный JavaScript и CSS.
- "unsafe-eval" — указание этого источника в политике позволяет использовать текст для механизмов JavaScript, таких как eval.
- "none" — указание этого источника ограничивает содержимое из любого источника для загрузки.
- данные: — указание данных: URI позволяют создателям содержимого внедрять небольшие файлы в документы. Использование не рекомендуется.
Note
AD FS использует JavaScript в процессе аутентификации и поэтому разрешает использование JavaScript, включая в политику по умолчанию источники 'unsafe-inline' и 'unsafe-eval'.
Custom headers
Помимо ранее перечисленных заголовков ответов безопасности (HSTS, CSP, X-Frame-Options, X-XSS-Protection и CORS), AD FS 2019 позволяет задавать новые заголовки.
Например, можно задать новый заголовок TestHeader и TestHeaderValue в качестве значения.
Set-AdfsResponseHeaders -SetHeaderName "TestHeader" -SetHeaderValue "TestHeaderValue"
После установки новый заголовок отправляется в ответе AD FS, как показано в следующем фрагменте кода Fiddler:
Совместимость веб-браузера
Используйте следующую таблицу и ссылки, чтобы определить, какие веб-браузеры совместимы с каждым из заголовков ответов безопасности.
Заголовки ответа безопасности HTTP | Browser Compatibility |
---|---|
HTTP Strict-Transport-Security (HSTS) | Совместимость браузера HSTS |
X-Frame-Options | Совместимость браузера X-Frame-Options |
X-XSS-Protection | Совместимость браузера X-XSS-Protection |
Общий доступ ресурсов из разных источников (Cross Origin Resource Sharing, CORS) | Совместимость браузера CORS |
Политика безопасности содержимого (CSP) | Совместимость браузера CSP |