Erweiterter Windows-Schutz <– extendedProtection>
Übersicht
Das <extendedProtection>
-Element gibt die Einstellungen an, die den erweiterten Schutz für die Windows-Authentifizierung in IIS 7.5 konfigurieren.
Erweiterter Schutz verbessert die vorhandene Windows-Authentifizierungsfunktionalität, um Authentifizierungsrelay- oder Man-in-the-Middle-Angriffe 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 in erster Linie für SSL-Verbindungen verwendet wird.
- Dienstbindungsinformationen, die über einen Dienstprinzipalnamen (Service Principal Name, SPN) angegeben werden, der in erster Linie für Verbindungen verwendet wird, die nicht SSL verwenden, oder wenn eine Verbindung über ein Szenario hergestellt wird, das SSL-Offloading bereitstellt, z. B. proxyserver oder Lastenausgleich.
Das <extendedProtection>
-Element kann eine Sammlung 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 (Fully Qualified Domain Name, FQDN) oder NetBIOS-Name des Zielservers oder eines Proxyservers sein kann. Wenn beispielsweise ein Client über einen Proxyserver eine Verbindung mit einem Zielserver herstellt, muss die SPN-Auflistung auf dem Zielserver den SPN für den Proxyserver enthalten. Jedem SPN in der Auflistung muss 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 zusätzliches Verhalten für den 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 die folgenden:
Name Beschreibung None
Dieser Wert gibt an, dass IIS keine Kanalbindungstokenüberprüfung durchführt. Diese Einstellung emuliert das Verhalten, das vor dem erweiterten Schutz vorhanden war.
Der numerische Wert lautet0
.Allow
Dieser Wert gibt an, dass die Überprüfung von Kanalbindungstoken aktiviert, aber nicht erforderlich ist. Diese Einstellung ermöglicht eine sichere Kommunikation mit Clients, die erweiterten Schutz unterstützen, aber weiterhin Clients unterstützt, die keinen erweiterten Schutz verwenden können.
Der numerische Wert lautet1
.Require
Dieser Wert gibt an, dass die Überprüfung von Kanalbindungstoken erforderlich ist. Diese Einstellung bietet keine Unterstützung für Clients, die keinen erweiterten Schutz unterstützen.
Der numerische Wert lautet2
.Das flags-Attribut konfiguriert zusätzliches Verhalten für erweiterten Schutz. Die möglichen Flags 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 lautet0
.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 lautet1
.NoServiceNameCheck
Dieses Flag gibt an, dass die SPN-Überprüfung deaktiviert ist; Dieses Flag sollte nicht in Szenarien verwendet werden, in denen nur SPNs überprüft werden.
Der numerische Wert lautet2
.AllowDotlessSpn
Dieses Flag gibt an, dass SPNs nicht als FQDNs erforderlich sind. Durch Festlegen dieses Flags können NetBIOS-basierte SPNs aktiviert werden. Hinweis: Das Festlegen dieses Flags ist kein sicheres Szenario. Nicht-FQDN-basierte Namen sind anfällig für Poisoning-Angriffe bei der Namensauflösung.
Der numerische Wert lautet4
.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 Flag angeben, müssen Sie auch das Proxy
-Flag angeben.
Der numerische Wert lautet32
.
Erweiterte Schutzszenarien
Betrachten Sie die folgende 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 jedes der folgenden Szenarien, in denen die SPN-Überprüfung verwendet wird und die Überprüfung von Kanalbindungstoken nicht verwendet wird, sollten Sie das
NoServiceNameCheck
-Flag nicht angeben.
Szenario | Flags | Beschreibung |
---|---|---|
Client stellt eine direkte Verbindung mit dem Zielserver mithilfe von HTTP her | Proxy , ProxyCohosting |
DIE SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet. |
Client stellt eine direkte Verbindung mit dem Zielserver mithilfe von SSL her | None |
Die Überprüfung von Kanalbindungstoken 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 her | Proxy , ProxyCohosting |
Die SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet. |
Der Client stellt eine Verbindung mit dem Zielserver über einen Proxyserver mithilfe von SSL für den gesamten Pfad bereit | Proxy |
Die SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet. |
Client stellt eine Verbindung mit dem Proxyserver mithilfe von SSL und Proxyserver mithilfe von HTTP (SSL off-loading) mit dem Zielserver her | Proxy |
Die SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet. |
Zusätzliche Informationen
Weitere Informationen zum erweiterten Schutz finden Sie im folgenden Thema:
Integrierte Windows-Authentifizierung mit erweitertem Schutz
Kompatibilität
Version | Hinweise |
---|---|
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 | N/V |
IIS 6.0 | N/V |
Setup
Die Standardinstallation von IIS 7 und höher enthält nicht den Windows-Authentifizierungsrollendienst. Um die Windows-Authentifizierung unter IIS zu verwenden, müssen Sie den Rollendienst installieren, die anonyme Authentifizierung für Ihre Website oder Anwendung deaktivieren und dann die Windows-Authentifizierung für die Website oder Anwendung aktivieren.
Hinweis
Nachdem Sie den Rollendienst installiert haben, übernimmt IIS 7 die folgenden Konfigurationseinstellungen in die Datei ApplicationHost.config.
<windowsAuthentication enabled="false" />
Windows Server 2012 oder Windows Server 2012 R2
- Klicken Sie auf der Taskleiste auf Server-Manager.
- Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
- Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features 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 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 ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Starttaste und klicken Sie dann auf Systemsteuerung.
- Klicken Sie in der Systemsteuerungauf Programme und dann auf „Windows-Features aktivieren oder deaktivieren“.
- Erweitern Sie Internetinformationsdienste, erweitern Sie World Wide Web Services, erweitern Sie Sicherheit, und wählen Sie dann 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 Hierarchiebereich des Server-Managers die Rollenund klicken Sie dann auf den 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ügenWindows-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 dann auf Systemsteuerung.
- Klicken Sie in der Systemsteuerungauf Programme und Funktionenund dann auf Windows-Features aktivieren oder deaktivieren.
- Erweitern Sie Internetinformationsdienste, World Wide Web Services und Security.
- Wählen Sie Windows-Authentifizierung aus, und klicken Sie dann auf OK.
Gewusst wie
So aktivieren Sie erweiterten Schutz für die Windows-Authentifizierung
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:
- Klicken Sie der der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
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 Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:
- Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Vista oder Windows 7 verwenden:
- Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
- Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Sites und dann die Website, Anwendung oder den Webdienst, für die Sie den erweiterten Schutz für Windows-Authentifizierung aktivieren möchten.
Scrollen Sie zum Abschnitt Sicherheit im Bereich Start, und doppelklicken Sie dann auf Authentifizierung.
Wählen Sie im Bereich Authentifizierung die Option 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 den erweiterten Schutz aktivieren möchten, während Sie Unterstützung für Clients bereitstellen, die keinen erweiterten Schutz unterstützen.
- Wählen Sie Erforderlich aus, wenn Sie den erweiterten Schutz aktivieren möchten, ohne Unterstützung auf der Downlevelebene bereitzustellen.
Klicken Sie auf OK, um das Dialogfeld Erweiterte Einstellungen zu schließen.
Konfiguration
Das <extendedProtection>
-Element kann auf Site-, Anwendungs- oder virtuelle Verzeichnisebene in der Datei ApplicationHost.config konfiguriert werden.
Attribute
Attribut | Beschreibung | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
flags |
Optionales flags-Attribut. Gibt die zusätzlichen Verhaltenseinstellungen für erweiterten Schutz an. Das flags -Attribut kann eine Kombination der folgenden Werte sein; der Standardwert ist None .
|
||||||||||||
tokenChecking |
Optionales Enumerationsattribut. Gibt das Verhalten für die Überprüfung von Kanalbindungsinformationen an. Das tokenChecking -Attribut kann einer der folgenden Werte sein: Der Standardwert ist None .
|
Untergeordnete Elemente
Element | Beschreibung |
---|---|
spn |
Fügt der Auflistung einen SPN hinzu. |
clearSpns |
Löscht die Auflistung von SPNs. |
removeSpn |
Entfernt einen SPN aus der Auflistung. |
Konfigurationsbeispiel
Im folgenden Beispiel wird ein <extendedProtection>
-Element angezeigt, das die Aktivierung der 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 der Windows-Authentifizierung mit erweitertem Schutz für die Standardwebsite und fügen der Sammlung 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 unbedingt den Commitparameterapphost
festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.
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()