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 ist0
.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 ist1
.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 ist2
.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 ist0
.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 ist1
.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 ist2
.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 ist4
.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 ist32
.
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:
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
- Klicken Sie auf der Taskleiste auf Server-Manager.
- Klicken Sie in Server-Manager auf das Menü "Verwalten", und klicken Sie dann auf "Rollen und Features hinzufügen".
- 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".
- 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.
.
- Klicken Sie auf der Seite Features auswählen auf Weiter.
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows 8 oder Windows 8.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.
- Klicken Sie in Systemsteuerung auf "Programme und Features", und klicken Sie dann auf "Windows-Features aktivieren" oder deaktivieren.
- Erweitern Sie Internetinformationsdienste, erweitern Sie World Wide Web Services, erweitern Sie Sicherheit, und wählen Sie dann die Windows-Authentifizierung aus.
- Klicken Sie auf OK.
- Klicken Sie auf Schließen.
Windows Server 2008 oder Windows Server 2008 R2
- Klicken Sie auf der Taskleiste auf "Start", zeigen Sie auf "Verwaltungstools", und klicken Sie dann auf Server-Manager.
- Erweitern Sie im Server-Manager Hierarchiebereich Rollen, und klicken Sie dann auf Webserver (IIS).
- Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt "Rollendienste ", und klicken Sie dann auf " Rollendienste hinzufügen".
- 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".
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows Vista oder Windows 7
- Klicken Sie auf der Taskleiste auf "Start", und klicken Sie dann auf Systemsteuerung.
- Klicken Sie in Systemsteuerung auf "Programme und Features", und klicken Sie dann auf "Windows-Features aktivieren" oder deaktivieren.
- Erweitern Sie Internetinformationsdienste, dann World Wide Web Services und dann Security.
- Wählen Sie die Windows-Authentifizierung aus, und klicken Sie dann auf 'OK'.
Vorgehensweise
Aktivieren des erweiterten Schutzes für Windows-Authentifizierung
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).
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.
Scrollen Sie im Bereich "Start" zum Abschnitt "Sicherheit", und doppelklicken Sie dann auf "Authentifizierung".
Wählen Sie im Authentifizierungsbereich die Windows-Authentifizierung aus.
Klicken Sie im Bereich "Aktionen" auf "Erweiterte Einstellungen".
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.
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 .
|
||||||||||||
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 .
|
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()