Udostępnij za pomocą


Dostosowywanie nagłówków odpowiedzi zabezpieczeń HTTP za pomocą usług AD FS 2019

Usługi Active Directory Federation Services (AD FS) 2019 dodaje funkcje dostosowywania nagłówków odpowiedzi zabezpieczeń HTTP wysyłanych przez usługi AD FS. Te narzędzia ułatwiają administratorom ochronę przed typowymi lukami w zabezpieczeniach i umożliwiają im korzystanie z najnowszych ulepszeń mechanizmów ochrony opartych na przeglądarce. Ta funkcja pochodzi z wprowadzenia dwóch nowych poleceń cmdlet: Get-AdfsResponseHeaders i Set-AdfsResponseHeaders.

Note

Funkcje dostosowywania nagłówków odpowiedzi zabezpieczeń HTTP (z wyjątkiem nagłówków CORS) przy użyciu poleceń cmdlet: Get-AdfsResponseHeaders i Set-AdfsResponseHeaders zostały przywrócone do usług AD FS 2016. Funkcje można dodać do usług AD FS 2016, instalując KB4493473 i KB4507459.

W tym artykule omówiono często używane nagłówki odpowiedzi dotyczące zabezpieczeń, w celu zademonstrowania, jak dostosowywać nagłówki wysyłane przez AD FS 2019.

Note

W tym artykule założono, że zainstalowano usługi AD FS 2019.

Scenarios

W poniższych scenariuszach pokazano, że konieczne może być dostosowanie nagłówków zabezpieczeń przez administratorów.

  • Administrator włączył protokół HTTP Strict-Transport-Security (HSTS) w celu ochrony użytkowników, którzy mogą uzyskiwać dostęp do aplikacji internetowej przy użyciu protokołu HTTP z publicznego punktu dostępu do sieci Wi-Fi, który może zostać zhakowany. Moduł HSTS wymusza wszystkie połączenia za pośrednictwem szyfrowania HTTPS. Chcą jeszcze bardziej zwiększyć bezpieczeństwo, włączając usługę HSTS dla poddomen.
  • Administrator skonfigurował nagłówek odpowiedzi X-Frame-Options aby chronić strony internetowe przed atakami typu clickjacking. X-Frame-Options uniemożliwia wyświetlanie jakiejkolwiek strony internetowej w elemencie iFrame. Muszą jednak dostosować wartość nagłówka ze względu na nowe wymaganie biznesowe dotyczące wyświetlania danych (w elemencie iFrame) z aplikacji z innym źródłem (domeną).
  • Administrator włączył funkcję X-XSS-Protection w celu oczyszczenia i zablokowania strony, jeśli przeglądarka wykryje ataki między skryptami. X-XSS-Protection zapobiega atakom między skryptami. Jednak muszą dostosować nagłówek, aby umożliwić ładowanie strony po jej oczyszczeniu.
  • Administrator musi włączyć współużytkowanie zasobów między źródłami (CORS) i musi ustawić źródło (domenę) w usługach AD FS, aby umożliwić aplikacji jednostronicowej dostęp do internetowego interfejsu API z inną domeną.
  • Administrator włączył nagłówek Zasady zabezpieczeń zawartości (CSP), aby zapobiec atakom polegającym na skryptach między witrynami i iniekcji danych, nie zezwalając na wszelkie żądania między domenami. Jednak ze względu na nowe wymaganie biznesowe musi dostosować nagłówek, aby umożliwić stronie internetowej ładowanie obrazów z dowolnego źródła i ograniczenie multimediów do zaufanych dostawców.

Nagłówki odpowiedzi zabezpieczeń HTTP

AD FS zawiera nagłówki w odpowiedzi HTTP wysłanej do przeglądarki internetowej. Możesz wyświetlić listę nagłówków przy użyciu polecenia cmdlet Get-AdfsResponseHeaders, jak pokazano na poniższym zrzucie ekranu.

Zrzut ekranu przedstawiający dane wyjściowe programu PowerShell z polecenia Get-AdfsResponseHeaders.

Atrybut ResponseHeaders w zrzucie ekranu identyfikuje nagłówki zabezpieczeń dodane przez usługi AD FS do każdej odpowiedzi HTTP. Usługi AD FS wysyłają nagłówki odpowiedzi tylko wtedy, gdy ResponseHeadersEnabled jest ustawione na True (wartość domyślna). Wartość można ustawić na False, aby zapobiec uwzględnianiu przez AD FS jakichkolwiek nagłówków zabezpieczeń w odpowiedzi HTTP. To ustawienie nie jest jednak zalecane. Możesz ustawić ResponseHeaders na False za pomocą następującego polecenia:

Set-AdfsResponseHeaders -EnableResponseHeaders $false

Ścisły protokół HTTPTransport-Security (HSTS)

HTTP Strict-Transport-Security (HSTS) to mechanizm zasad zabezpieczeń sieci Web, który pomaga ograniczyć ataki wykorzystujące obniżenie wersji protokołu oraz przechwytywanie plików cookie dla usług, które oferują punkty końcowe zarówno HTTP, jak i HTTPS. Umożliwia ona serwerom internetowym deklarowanie, że przeglądarki internetowe lub inni zgodni agenci użytkowników powinni korzystać z niego tylko za pomocą protokołu HTTPS i nigdy nie za pośrednictwem protokołu HTTP.

Wszystkie punkty końcowe usług AD FS dla ruchu uwierzytelniania internetowego są otwierane wyłącznie za pośrednictwem protokołu HTTPS. W związku z tym usługi AD FS skutecznie ograniczają zagrożenia zapewniane przez mechanizm zasad HTTP Strict Transport Security. Domyślnie nie ma obniżenia do protokołu HTTP, ponieważ nie ma nasłuchujących w protokole HTTP. Nagłówek można dostosować, ustawiając następujące parametry:

  • maksymalny_wiek=<czas_wygasania>. Czas wygaśnięcia (w sekundach) określa czas uzyskiwania dostępu do witryny tylko przy użyciu protokołu HTTPS. Wartość domyślna i zalecana to 31536000 sekund (jeden rok).
  • includeSubDomains. Ten parametr jest opcjonalny. Jeśli zostanie określona, reguła HSTS ma również zastosowanie do wszystkich poddomen.

Dostosowywanie modułu HSTS

Domyślnie nagłówek jest włączony i max-age jest ustawiony na jeden rok, jednak administratorzy mogą modyfikować max-age wartość (niższa wartość maksymalnego wieku nie jest zalecana) lub włączyć usługę HSTS dla poddomen za pomocą polecenia cmdlet Set-AdfsResponseHeaders .

Set-AdfsResponseHeaders -SetHeaderName "Strict-Transport-Security" -SetHeaderValue "max-age=<seconds>; includeSubDomains"

Example:

Set-AdfsResponseHeaders -SetHeaderName "Strict-Transport-Security" -SetHeaderValue "max-age=31536000; includeSubDomains"

Domyślnie nagłówek jest dołączany do atrybutu ResponseHeaders ; administratorzy mogą jednak usunąć nagłówek za pomocą Set-AdfsResponseHeaders polecenia cmdlet .

Set-AdfsResponseHeaders -RemoveHeaders "Strict-Transport-Security"

X-Frame-Options

Usługi AD FS domyślnie nie pozwalają zewnętrznym aplikacjom na używanie elementów iFrame podczas logowania interaktywnego. Ta konfiguracja zapobiega atakom polegającym na wyłudzaniu informacji. Logowanie nieinterakcyjne można wykonać za pośrednictwem elementu iFrame ze względu na wcześniejsze zabezpieczenia na poziomie sesji, które zostały ustanowione.

Jednak w niektórych rzadkich przypadkach możesz zaufać określonej aplikacji, która wymaga interaktywnej strony logowania AD FS obsługującej element iFrame. W tym celu jest używany nagłówek X-Frame-Options.

Ten nagłówek odpowiedzi zabezpieczeń HTTP służy do komunikowania się z przeglądarką, czy może renderować stronę w ramce <>/<iframe>. Nagłówek można ustawić na jedną z następujących wartości:

  • deny. Strona w ramce nie jest wyświetlana. Ta konfiguracja jest ustawieniem domyślnym i zalecanym.
  • sameorigin. Strona jest wyświetlana tylko w ramce, jeśli źródło jest takie samo jak źródło strony internetowej. Opcja nie jest przydatna, chyba że wszyscy przodkowie znajdują się również w tym samym pochodzeniu.
  • zezwalaj na <określone źródło>. Strona jest wyświetlana tylko w ramce, jeśli źródło (na przykład https://www.".com) pasuje do określonego źródła w nagłówku. Niektóre przeglądarki mogą nie obsługiwać tej opcji.

Dostosowywanie X-Frame-Options

Domyślnie nagłówek jest ustawiony na odmowę; jednak administratorzy mogą modyfikować wartość za pomocą polecenia cmdlet 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"

Domyślnie nagłówek jest dołączany do atrybutu ResponseHeaders ; administratorzy mogą jednak usunąć nagłówek za pomocą Set-AdfsResponseHeaders polecenia cmdlet .

Set-AdfsResponseHeaders -RemoveHeaders "X-Frame-Options"

X-XSS-Protection

Ten nagłówek odpowiedzi zabezpieczeń HTTP służy do zatrzymywania ładowania stron internetowych, gdy przeglądarki wykrywają ataki skryptów między witrynami (XSS). Takie podejście jest określane jako filtrowanie XSS. Nagłówek można ustawić na jedną z następujących wartości:

  • Wartość 0 wyłącza filtrowanie XSS. Niezalecane.
  • 1 umożliwia filtrowanie XSS. Jeśli zostanie wykryty atak XSS, przeglądarka odczyści stronę.
  • 1; mode=block umożliwia filtrowanie XSS. Jeśli zostanie wykryty atak XSS, przeglądarka uniemożliwia renderowanie strony. To ustawienie jest ustawieniem domyślnym i zalecanym.

Dostosowywanie X-XSS-Protection

Domyślnie nagłówek jest ustawiony na 1; mode=block;. Jednak administratorzy mogą modyfikować wartość za pomocą polecenia cmdlet 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"

Domyślnie nagłówek jest dołączany do atrybutu ResponseHeaders ; administratorzy mogą jednak usunąć nagłówek za pomocą Set-AdfsResponseHeaders polecenia cmdlet .

Set-AdfsResponseHeaders -RemoveHeaders "X-XSS-Protection"

Nagłówki współdzielenia zasobów między domenami (CORS)

Zabezpieczenia przeglądarki internetowej uniemożliwiają stronie internetowej wykonywanie żądań między źródłami inicjowanych z poziomu skryptów. Jednak możesz chcieć uzyskać dostęp do zasobów w innych źródłach (domenach). Współużytkowanie zasobów między źródłami (CORS) to standard W3C, który umożliwia serwerowi złagodzenie zasad tego samego źródła. Za pomocą mechanizmu CORS serwer może jawnie zezwalać na niektóre żądania między źródłami podczas odrzucania innych.

Aby lepiej zrozumieć żądanie CORS, poniższy scenariusz przeprowadzi cię przez wystąpienie, w którym aplikacja jednostronicowa (SPA) musi wywołać internetowy interfejs API z inną domeną. Ponadto należy wziąć pod uwagę, że zarówno SPA, jak i interfejs API są skonfigurowane w usługach AD FS 2019, a usługi AD FS mają włączony mechanizm CORS. Usługi AD FS mogą identyfikować nagłówki CORS w żądaniu HTTP, weryfikować wartości nagłówka i uwzględniać odpowiednie nagłówki CORS w odpowiedzi. Aby uzyskać szczegółowe informacje na temat włączania i konfigurowania mechanizmu CORS w usługach AD FS 2019, zobacz sekcję o dostosowywaniu mechanizmu CORS . Poniższy przykładowy przepływ przeprowadzi Cię przez scenariusz:

  1. Użytkownik uzyskuje dostęp do SPA za pośrednictwem przeglądarki i jest przekierowywany do końcowego punktu uwierzytelniania AD FS w celu przeprowadzenia uwierzytelnienia. Ponieważ SPA jest skonfigurowany do niejawnego przepływu udzielania, żądanie zwraca token Access + ID do przeglądarki po pomyślnym uwierzytelnieniu.

  2. Po uwierzytelnieniu użytkownika fronton JavaScript zawarty w SPA wysyła żądanie dostępu do internetowego interfejsu API. Żądanie jest przekierowywane do usług AD FS z następującymi nagłówkami:

    • Opcje — opisuje opcje komunikacji dla zasobu docelowego.
    • Źródło — zawiera źródło internetowego interfejsu API.
    • Access-Control —Request-Method — identyfikuje metodę HTTP (na przykład DELETE), która ma być używana podczas rzeczywistego żądania.
    • Access-Control —Request-Headers — identyfikuje nagłówki HTTP, które mają być używane podczas rzeczywistego żądania.

    Note

    Żądanie CORS przypomina standardowe żądanie HTTP. Jednak obecność nagłówka źródła sygnalizuje, że żądanie przychodzące jest powiązane z mechanizmem CORS.

  3. Usługa AD FS sprawdza, czy źródło interfejsu API zawarte w nagłówku jest wymienione w zaufanych źródłach skonfigurowanych w usłudze AD FS. Aby uzyskać więcej informacji na temat modyfikowania zaufanych źródeł, zobacz Dostosowywanie mechanizmu CORS. AD FS następnie odpowiada z następującymi nagłówkami:

    • Access-Control—Allow-Origin — wartość taka sama jak w nagłówku Origin.
    • Access-Control-Allow-Method — wartość taka sama jak w nagłówku Access-Control-Request-Method.
    • Access-Control-Allow-Headers — wartość taka sama jak w nagłówku Access-Control-Request-Headers.
  4. Przeglądarka wysyła rzeczywiste żądanie, w tym następujące nagłówki:

    • Metoda HTTP (na przykład DELETE).
    • Źródło – obejmuje pochodzenie internetowego API.
    • Wszystkie nagłówki zawarte w nagłówku odpowiedzi Access-Control-Allow-Headers.
  5. Po zweryfikowaniu usługa AD FS zatwierdza żądanie, uwzględniając domenę internetowego interfejsu API (źródło) w nagłówku odpowiedzi Access-Control-Allow-Origin.

  6. Dołączenie nagłówka Access-Control-Allow-Origin umożliwia przeglądarce wywołanie żądanego interfejsu API.

Dostosowywanie mechanizmu CORS

Domyślnie funkcja CORS nie jest włączona; administratorzy mogą jednak włączyć tę funkcję za pomocą polecenia cmdlet Set-AdfsResponseHeaders.

Set-AdfsResponseHeaders -EnableCORS $true

Po jej włączeniu administratorzy mogą wyliczać listę zaufanych źródeł przy użyciu tego samego polecenia cmdlet. Na przykład następujące polecenie zezwala na żądania CORS ze źródeł https&#58;//example1.com i https&#58;//example1.com.

Set-AdfsResponseHeaders -CORSTrustedOrigins https://example1.com,https://example2.com

Note

Administratorzy mogą zezwalać na żądania CORS z dowolnej domeny, dodając "*" do listy zaufanych źródeł, chociaż takie podejście nie jest zalecane z uwagi na luki w zabezpieczeniach, a w przypadku wyboru tej opcji wyświetlany jest komunikat ostrzegawczy.

Zasady zabezpieczeń zawartości (CSP)

Ten nagłówek odpowiedzi zabezpieczeń HTTP służy do zapobiegania atakom przez witryny krzyżowe, atakom kliknięciowym i innym atakom poprzez wstrzykiwanie danych, zapobiegając przypadkowemu wykonywaniu złośliwej zawartości przez przeglądarki. Przeglądarki, które nie obsługują zasad zabezpieczeń zawartości (CSP), ignorują nagłówki odpowiedzi dostawcy CSP.

Dostosowywanie CSP

Dostosowanie nagłówka CSP obejmuje zmodyfikowanie zasad zabezpieczeń definiujących zasoby, które przeglądarka może załadować dla strony internetowej. Domyślne zasady zabezpieczeń to:

Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:;

Dyrektywa default-src służy do modyfikowania dyrektyw -src bez jawnego wyświetlania każdej dyrektywy. Na przykład w poniższym przykładzie zasady 1 są takie same jak zasady 2.

Zasady 1

Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "default-src 'self'"

Zasady 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';"

Jeśli dyrektywa jest jawnie wymieniona, określona wartość zastępuje wartość podaną dla parametru default-src. W poniższym przykładzie img-src przyjmuje wartość "*" (zezwalającą na ładowanie obrazów z dowolnego źródła), podczas gdy inne dyrektywy -src przyjmują wartość "self" (ograniczenie do tego samego źródła co strona internetowa).

Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "default-src 'self'; img-src *"

Dla zasad default-src można zdefiniować następujące źródła:

  • Wybierając opcję 'własne', ogranicza się źródło zawartości do ładowania do pochodzenia strony internetowej.
  • "niebezpieczne wbudowane" — określenie tego źródła w zasadach umożliwia korzystanie z wbudowanych języków JavaScript i CSS.
  • "'unsafe-eval' — określenie tego źródła w zasadach umożliwia używanie tekstu w mechanizmach języka JavaScript, takich jak eval."
  • "none" — określenie tego źródła uniemożliwia ładowanie zawartości z jakiegokolwiek źródła.
  • dane: — określanie danych: identyfikatory URI umożliwiają twórcom zawartości osadzanie małych plików wbudowanych w dokumentach. Użycie nie jest zalecane.

Note

Usługa AD FS używa JavaScriptu w procesie uwierzytelniania, dlatego włącza tę funkcję, uwzględniając źródła 'unsafe-inline' i 'unsafe-eval' w domyślnej polityce.

Niestandardowe nagłówki

Oprócz wcześniej wymienionych nagłówków odpowiedzi zabezpieczeń (HSTS, CSP, X-Frame-Options, X-XSS-Protection i CORS), program AD FS 2019 umożliwia ustawianie nowych nagłówków.

Na przykład można ustawić nowy nagłówek "TestHeader" i "TestHeaderValue" jako wartość.

Set-AdfsResponseHeaders -SetHeaderName "TestHeader" -SetHeaderValue "TestHeaderValue"

Po ustawieniu nowy nagłówek jest wysyłany w odpowiedzi usług AD FS, jak pokazano w poniższym fragmencie kodu programu Fiddler:

Zrzut ekranu programu Fiddler na karcie z nagłówkami, gdzie wyróżniono TestHeader: TestHeaderValue w sekcji Różne.

Zgodność przeglądarki internetowej

Skorzystaj z poniższej tabeli i linków, aby określić, które przeglądarki internetowe są zgodne z każdym nagłówkiem odpowiedzi zabezpieczeń.

Nagłówki odpowiedzi zabezpieczeń HTTP Zgodność przeglądarki
Ścisły protokół HTTPTransport-Security (HSTS) Zgodność przeglądarki HSTS
X-Frame-Options X-Frame-Options kompatybilność przeglądarki
X-XSS-Protection X-XSS-Protection zgodność przeglądarki
CORS (Współdzielenie zasobów między źródłami) Zgodność CORS z przeglądarkami
Zasady zabezpieczeń zawartości (CSP) Zgodność przeglądarki CSP

Next