Erweiterter Schutz für Windows <extendedProtection>

Übersicht

Das <extendedProtection> Element gibt die Einstellungen an, die den erweiterten Schutz für Windows-Authentifizierung in IIS 7.5 konfigurieren.

Erweiterter Schutz verbessert die vorhandene Windows-Authentifizierung Funktionalität, um Authentifizierungsrelays oder "Man in the Middle"-Angriffen zu mindern. Diese Entschärfung erfolgt mithilfe von Sicherheitsinformationen, die über zwei Sicherheitsmechanismen implementiert werden:

  • Kanalbindungsinformationen, die über ein Kanalbindungstoken (Channel Binding Token, CBT) angegeben werden, das hauptsächlich für SSL-Verbindungen verwendet wird.
  • Dienstbindungsinformationen, die über einen Dienstprinzipalnamen (SERVICE Principle Name, SPN) angegeben werden, der hauptsächlich für Verbindungen verwendet wird, die nicht SSL verwenden, oder wenn eine Verbindung über ein Szenario eingerichtet wird, das SSL-Offloading bereitstellt, z. B. ein Proxyserver oder lastenausgleichsgerät.

Das <extendedProtection> Element kann eine Auflistung von <spn> Elementen enthalten, die jeweils einen eindeutigen SPN für die Dienstbindungsinformationen enthalten. Jeder SPN stellt einen eindeutigen Endpunkt im Verbindungspfad dar, der möglicherweise ein vollqualifizierter Domänenname (FQDN) oder NetBIOS-Name des Zielservers oder eines Proxyservers sein kann. Wenn ein Client beispielsweise über einen Proxyserver eine Verbindung mit einem Zielserver herstellt, muss die SPN-Auflistung auf dem Zielserver den SPN für den Proxyserver enthalten. Jeder SPN in der Auflistung muss mit "HTTP" vorangestellt werden, sodass der resultierende SPN für "www.contoso.com" "HTTP/www.contoso.com" lautet.

Es gibt zwei Attribute des <extendedProtection> Elements, die die Kanalbindung und das zusätzliche Verhalten für erweiterten IIS-Schutz konfigurieren:

  • Das TokenChecking-Attribut konfiguriert das Verhalten für die Überprüfung auf Kanalbindungstoken. Die möglichen Werte für dieses Attribut sind:

    Name BESCHREIBUNG
    None Dieser Wert gibt an, dass IIS keine Kanalbindungstokenüberprüfung durchführt. Diese Einstellung emuliert das Verhalten, das vor erweitertem Schutz vorhanden ist.

    Der numerische Wert ist 0.
    Allow Dieser Wert gibt an, dass die Überprüfung des Kanalbindungstokens aktiviert ist, aber nicht erforderlich. Diese Einstellung ermöglicht die sichere Kommunikation mit Clients, die erweiterten Schutz unterstützen, aber weiterhin Clients unterstützt, die keinen erweiterten Schutz verwenden können.

    Der numerische Wert ist 1.
    Require Dieser Wert gibt an, dass die Überprüfung des Kanalbindungstokens erforderlich ist. Diese Einstellung bietet keine Unterstützung für Clients, die keinen erweiterten Schutz unterstützen.

    Der numerische Wert ist 2.
  • Das Flags-Attribut konfiguriert zusätzliches Verhalten für erweiterten Schutz. Die möglichen Kennzeichen sind:

    Name BESCHREIBUNG
    None Dieses Flag gibt an, dass kein zusätzliches Verhalten für erweiterten Schutz aktiviert ist. (Beispielsweise wird kein Proxyserver verwendet, und die SPN-Überprüfung ist aktiviert und erfordert FQDNs.)

    Der numerische Wert ist 0.
    Proxy Dieses Flag gibt an, dass ein Teil des Kommunikationspfads über einen Proxy erfolgt oder dass der Client eine direkte Verbindung mit dem Zielserver über HTTP herstellt.

    Der numerische Wert ist 1.
    NoServiceNameCheck Dieses Kennzeichen gibt an, dass die SPN-Überprüfung deaktiviert ist; Dieses Kennzeichen sollte nicht in Szenarien verwendet werden, in denen nur SPNs überprüft werden.

    Der numerische Wert ist 2.
    AllowDotlessSpn Dieses Flag gibt an, dass SPNs nicht als FQDNs erforderlich sind. Das Festlegen dieses Flags ermöglicht NetBIOS-basierte SPNs. Hinweis: Das Festlegen dieses Kennzeichens ist kein sicheres Szenario; Nicht-FQDN-basierte Namen sind anfällig für Vergiftungsangriffe bei der Namensauflösung.

    Der numerische Wert ist 4.
    ProxyCohosting Dieses Flag gibt an, dass der gesamte Client-zu-Server-Kommunikationspfad nur HTTP verwendet; Kein Teil des Kommunikationspfads verwendet SSL, und die SPN-Überprüfung wird verwendet. Hinweis: Wenn Sie dieses Kennzeichen angeben, müssen Sie auch das Proxy Kennzeichen angeben.

    Der numerische Wert ist 32.

Erweiterte Schutzszenarien

Betrachten Sie die folgenden Beispielszenarien:

  • In jedem der folgenden Szenarien können Sie auch das AllowDotlessSpn Flag angeben, wenn Ihre Netzwerkumgebung NetBIOS-basierte SPNs unterstützt. NetBIOS-basierte SPNs sind jedoch nicht sicher.
  • Für jede der folgenden Szenarien, in denen die SPN-Überprüfung verwendet wird und die Kanalbindungstokenüberprüfung nicht verwendet wird, sollten Sie das NoServiceNameCheck Kennzeichen nicht angeben.
Szenario Flags BESCHREIBUNG
Client stellt eine direkte Verbindung mit dem Zielserver mithilfe von HTTP herstellen Proxy, ProxyCohosting DIE SPN-Überprüfung wird verwendet, und die Kanalbindungstokenüberprüfung wird nicht verwendet.
Client stellt eine direkte Verbindung mit dem Zielserver mithilfe von SSL herstellen None Die Überprüfung des Kanalbindungstokens wird verwendet, und die SPN-Überprüfung wird nicht verwendet.
Client stellt eine Verbindung mit dem Zielserver über einen Proxyserver mithilfe von HTTP für den gesamten Pfad bereit. Proxy, ProxyCohosting DIE SPN-Überprüfung wird verwendet, und die Kanalbindungstokenüberprüfung wird nicht verwendet.
Client stellt eine Verbindung mit dem Zielserver über einen Proxyserver mit SSL für den gesamten Pfad bereit. Proxy DIE SPN-Überprüfung wird verwendet, und die Kanalbindungstokenüberprüfung wird nicht verwendet.
Client stellt eine Verbindung mit dem Proxyserver mithilfe von SSL und Proxyserver über HTTP (SSL-Off-Loading) mit dem Zielserver hergestellt. Proxy DIE SPN-Überprüfung wird verwendet, und die Kanalbindungstokenüberprüfung wird nicht verwendet.

Zusätzliche Informationen

Weitere Informationen zum erweiterten Schutz finden Sie im folgenden Thema:

Integrierte Windows-Authentifizierung unter Verwendung von "Erweiterter Schutz" (möglicherweise auf Englisch)

Dienstprinzipalnamen

Kompatibilität

Version Notizen
IIS 10.0 Das <extendedProtection> Element wurde in IIS 10.0 nicht geändert.
IIS 8,5 Das <extendedProtection> Element wurde in IIS 8.5 nicht geändert.
IIS 8,0 Das <extendedProtection> Element wurde in IIS 8.0 nicht geändert.
IIS 7,5 Das <extendedProtection> Element wurde in IIS 7.5 eingeführt.
IIS 7.0
IIS 6.0

Einrichten

Die Standardinstallation von IIS 7 und höher enthält nicht den Windows-Authentifizierung Rollendienst. Um Windows-Authentifizierung in IIS zu verwenden, müssen Sie den Rollendienst installieren, die anonyme Authentifizierung für Ihre Website oder Anwendung deaktivieren und dann Windows-Authentifizierung für die Website oder Anwendung aktivieren.

Hinweis

Nachdem Sie den Rollendienst installiert haben, übernimmt IIS 7 die folgenden Konfigurationseinstellungen für die ApplicationHost.config-Datei.

<windowsAuthentication enabled="false" />

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie in Server-Manager auf das Menü "Verwalten", und klicken Sie dann auf "Rollen und Features hinzufügen".
  3. Klicken Sie im Assistenten " Rollen und Features hinzufügen " auf "Weiter". Wählen Sie den Installationstyp aus, und klicken Sie auf "Weiter". Wählen Sie den Zielserver aus, und klicken Sie auf "Weiter".
  4. Erweitern Sie auf der Seite "Serverrollen " den Webserver (IIS), erweitern Sie Den Webserver, erweitern Sie "Sicherheit", und wählen Sie dann die Windows-Authentifizierung aus. Klicken Sie auf Weiter.
    Screenshot der Seite .
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Startbildschirm den Mauszeiger auf die untere linke Ecke, klicken Sie mit der rechten Maustaste auf die Startschaltfläche, und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in Systemsteuerung auf "Programme und Features", und klicken Sie dann auf "Windows-Features aktivieren" oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, erweitern Sie World Wide Web Services, erweitern Sie Sicherheit, und wählen Sie dann die Windows-Authentifizierung aus.
    Screenshot der Navigationsstruktur
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Windows Server 2008 oder Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf "Start", zeigen Sie auf "Verwaltungstools", und klicken Sie dann auf Server-Manager.
  2. Erweitern Sie im Server-Manager Hierarchiebereich Rollen, und klicken Sie dann auf Webserver (IIS).
  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt "Rollendienste ", und klicken Sie dann auf " Rollendienste hinzufügen".
  4. Wählen Sie auf der Seite "Rollendienste auswählen " des Assistenten "Rollendienste hinzufügen" die Option "Windows-Authentifizierung" aus, und klicken Sie dann auf "Weiter".
    Screenshot der Seite
  5. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  6. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows Vista oder Windows 7

  1. Klicken Sie auf der Taskleiste auf "Start", und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in Systemsteuerung auf "Programme und Features", und klicken Sie dann auf "Windows-Features aktivieren" oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, dann World Wide Web Services und dann Security.
  4. Wählen Sie die Windows-Authentifizierung aus, und klicken Sie dann auf 'OK'.
    Screenshot der Navigationsstruktur

Vorgehensweise

Aktivieren des erweiterten Schutzes für Windows-Authentifizierung

  1. Internetinformationsdienste-Manager (IIS) öffnen:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Server-Manager, klicken Sie auf "Extras", und klicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-TASTE gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf "Verwaltungstools", und doppelklicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start", zeigen Sie auf "Verwaltungstools", und klicken Sie dann auf den IIS-Manager (Internet Information Services).
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start", und klicken Sie dann auf Systemsteuerung.
      • Doppelklicken Sie auf "Verwaltungstools", und doppelklicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
  2. Erweitern Sie im Bereich "Verbindungen" den Servernamen, erweitern Sie "Websites" und dann die Website, Anwendung oder Webdienst, für die Sie erweiterten Schutz für Windows-Authentifizierung aktivieren möchten.

  3. Scrollen Sie im Bereich "Start" zum Abschnitt "Sicherheit", und doppelklicken Sie dann auf "Authentifizierung".

  4. Wählen Sie im Authentifizierungsbereich die Windows-Authentifizierung aus.

  5. Klicken Sie im Bereich "Aktionen" auf "Aktivieren".
    Screenshot der Seite

  6. Klicken Sie im Bereich "Aktionen" auf "Erweiterte Einstellungen".

  7. Wenn das Dialogfeld "Erweiterte Einstellungen " angezeigt wird, wählen Sie im Dropdownmenü " Erweiterter Schutz " eine der folgenden Optionen aus:

    • Wählen Sie "Annehmen " aus, wenn Sie erweiterten Schutz aktivieren möchten, während Sie unterstützung auf Down-Level-Ebene für Clients bereitstellen, die keinen erweiterten Schutz unterstützen.
    • Wählen Sie "Erforderlich" aus, wenn Sie erweiterten Schutz aktivieren möchten, ohne unterstützung auf Down-Level-Ebene bereitzustellen.
      Screenshot des Dialogfelds
  8. Klicken Sie auf OK , um das Dialogfeld Erweiterte Einstellungen zu schließen.

Konfiguration

Das <extendedProtection> Element kann auf Standort-, Anwendungs- oder virtuelle Verzeichnisebene in der datei ApplicationHost.config konfiguriert werden.

Attribute

attribute BESCHREIBUNG
flags Optionale Flags-Attribut.

Gibt die zusätzlichen Verhaltenseinstellungen für erweiterten Schutz an.

Das Attribut kann eine Kombination aus den folgenden Werten sein. Der flags Standardwert ist None.
Name BESCHREIBUNG
None

Dieses Flag gibt an, dass kein zusätzliches Verhalten für erweiterten Schutz aktiviert ist. (Beispielsweise wird kein Proxyserver verwendet, und die SPN-Überprüfung ist aktiviert und erfordert FQDNs.)

Der numerische Wert ist 0.

Proxy

Dieses Flag gibt an, dass ein Teil des Kommunikationspfads über einen Proxy erfolgt oder dass der Client eine direkte Verbindung mit dem Zielserver über HTTP herstellt.

Der numerische Wert ist 1.

NoServiceNameCheck

Dieses Kennzeichen gibt an, dass die SPN-Überprüfung deaktiviert ist; Dieses Kennzeichen sollte nicht in Szenarien verwendet werden, in denen nur SPNs überprüft werden.

Der numerische Wert ist 2.

AllowDotlessSpn

Dieses Flag gibt an, dass SPNs nicht als FQDNs erforderlich sind. Das Festlegen dieses Flags ermöglicht NetBIOS-basierte SPNs. Hinweis: Das Festlegen dieses Kennzeichens ist kein sicheres Szenario; Nicht-FQDN-basierte Namen sind anfällig für Vergiftungsangriffe bei der Namensauflösung.

Der numerische Wert ist 4.

ProxyCohosting

Dieses Flag gibt an, dass der gesamte Client-zu-Server-Kommunikationspfad nur HTTP verwendet; Kein Teil des Kommunikationspfads verwendet SSL, und die SPN-Überprüfung wird verwendet. Hinweis: Wenn Sie dieses Kennzeichen angeben, müssen Sie auch das Proxy Kennzeichen angeben.

Der numerische Wert ist 32.

tokenChecking Optionales Enumerationsattribute.

Gibt das Verhalten für die Überprüfung von Kanalbindungsinformationen an.

Das Attribut kann eine der folgenden Werte sein. Der tokenChecking Standardwert ist None.
Name BESCHREIBUNG
None

Dieser Wert gibt an, dass IIS keine Kanalbindungstokenüberprüfung durchführt. Diese Einstellung emuliert das Verhalten, das vor erweitertem Schutz vorhanden ist.

Der numerische Wert ist 0.

Allow

Dieser Wert gibt an, dass die Überprüfung des Kanalbindungstokens aktiviert ist, aber nicht erforderlich. Diese Einstellung ermöglicht die sichere Kommunikation mit Clients, die erweiterten Schutz unterstützen, aber weiterhin Clients unterstützt, die keinen erweiterten Schutz verwenden können.

Der numerische Wert ist 1.

Require

Dieser Wert gibt an, dass die Überprüfung des Kanalbindungstokens erforderlich ist. Diese Einstellung bietet keine Unterstützung für Clients, die keinen erweiterten Schutz unterstützen.

Der numerische Wert ist 2.

Untergeordnete Elemente

Element BESCHREIBUNG
spn Fügt der Auflistung einen SPN hinzu.
clearSpns Löscht die Auflistung von SPNs.
removeSpn Entfernt ein SPN aus der Auflistung.

Konfigurationsbeispiel

Im folgenden Beispiel wird ein <extendedProtection> Element angezeigt, das das Aktivieren von Windows-Authentifizierung mit erweitertem Schutz für die Standardwebsite veranschaulicht und der Auflistung von SPNs zwei SPN-Einträge hinzufügt.

<location path="Default Web Site">
   <system.webServer>
      <security>
         <authentication>
            <windowsAuthentication enabled="true">
               <extendedProtection tokenChecking="Allow" flags="None">
                  <spn name="HTTP/www.contoso.com" />
                  <spn name="HTTP/contoso.com" />
               </extendedProtection>
            </windowsAuthentication>
         </authentication>
      </security>
   </system.webServer>
</location>

Beispielcode

Die folgenden Beispiele veranschaulichen das Konfigurieren von Windows-Authentifizierung mit erweiterten Schutz für die Standardwebsite und fügen der Auflistung von SPNs zwei SPN-Einträge hinzu.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /extendedProtection.tokenChecking:"Allow" /extendedProtection.flags:"None" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/www.contoso.com']" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/contoso.com']" /commit:apphost

Hinweis

Sie müssen den Commitparameterapphost unbedingt festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der ApplicationHost.config-Datei commitsiert.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site");
         windowsAuthenticationSection["enabled"] = true;

         ConfigurationElement extendedProtectionElement = windowsAuthenticationSection.GetChildElement("extendedProtection");
         extendedProtectionElement["tokenChecking"] = @"Allow";
         extendedProtectionElement["flags"] = @"None";

         ConfigurationElementCollection extendedProtectionCollection = extendedProtectionElement.GetCollection();

         ConfigurationElement spnElement = extendedProtectionCollection.CreateElement("spn");
         spnElement["name"] = @"HTTP/www.contoso.com";
         extendedProtectionCollection.Add(spnElement);

         ConfigurationElement spnElement1 = extendedProtectionCollection.CreateElement("spn");
         spnElement1["name"] = @"HTTP/contoso.com";
         extendedProtectionCollection.Add(spnElement1);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site")
      windowsAuthenticationSection("enabled") = True

      Dim extendedProtectionElement As ConfigurationElement = windowsAuthenticationSection.GetChildElement("extendedProtection")
      extendedProtectionElement("tokenChecking") = "Allow"
      extendedProtectionElement("flags") = "None"

      Dim extendedProtectionCollection As ConfigurationElementCollection = extendedProtectionElement.GetCollection

      Dim spnElement As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement("name") = "HTTP/www.contoso.com"
      extendedProtectionCollection.Add(spnElement)

      Dim spnElement1 As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement1("name") = "HTTP/contoso.com"
      extendedProtectionCollection.Add(spnElement1)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;

var extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection");
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow";
extendedProtectionElement.Properties.Item("flags").Value = "None";

var extendedProtectionCollection = extendedProtectionElement.Collection;

var spnElement = extendedProtectionCollection.CreateNewElement("spn");
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com";
extendedProtectionCollection.AddElement(spnElement);

var spnElement1 = extendedProtectionCollection.CreateNewElement("spn");
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com";
extendedProtectionCollection.AddElement(spnElement1);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site")
windowsAuthenticationSection.Properties.Item("enabled").Value = True

Set extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection")
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow"
extendedProtectionElement.Properties.Item("flags").Value = "None"

Set extendedProtectionCollection = extendedProtectionElement.Collection

Set spnElement = extendedProtectionCollection.CreateNewElement("spn")
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com"
extendedProtectionCollection.AddElement(spnElement)

Set spnElement1 = extendedProtectionCollection.CreateNewElement("spn")
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com"
extendedProtectionCollection.AddElement(spnElement1)

adminManager.CommitChanges()