Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Der erweiterte Schutz trägt dazu bei, Authentifizierungsrelayangriffe zu verhindern, indem sichergestellt wird, dass der Client den Dienst kennt, mit dem er eine Verbindung herstellt.
Erweiterter Schutz ist ein Feature der vom Betriebssystem implementierten Netzwerkkomponenten. Erweiterter Schutz wird in Windows unterstützt.
SQL Server ist sicherer, wenn Verbindungen mit erweitertem Schutz hergestellt werden.
Prüfliste "Anforderungen"
Damit der erweiterte Schutz wirksam ist, müssen alle folgenden Bedingungen erfüllt sein:
- Verwenden Sie einen Clienttreiber , der die Kanalbindung unterstützt.
- Aktivieren Sie die TLS-Verschlüsselung für die Verbindung, damit der Client ein Kanalbindungstoken (Channel Binding Token, CBT) erzeugen kann.
- Stellen Sie eine Verbindung mit dem richtigen Dienstprinzipalnamen (Service Principal Name, SPN) her, der der SQL Server Instanz entspricht.
- Verwenden Sie Windows-Authentifizierung (NTLM oder Kerberos). Erweiterter Schutz gilt nicht für die SQL-Authentifizierung.
- Aktivieren des erweiterten Schutzes für die SQL Server-Instanz (auf "Zulässig" oder "Erforderlich" festgelegt).
Note
Ein Beispiel für eine Verbindungszeichenfolge in C#, die erweiterten Schutz unterstützt, finden Sie unter Beispiel Verbindungszeichenfolge.
Beschreibung von "Erweiterter Schutz"
Der erweiterte Schutz verwendet Dienstbindung und Kanalbindung, um einen Authentifizierungsrelayangriff zu verhindern. Bei einem Authentifizierungsrelayangriff stellt ein Client, der die NTLM-Authentifizierung ausführen kann (z. B. Windows Explorer, Outlook, eine .NET SqlClient-Anwendung und andere), eine Verbindung mit einem Angreifer (z. B. einem schädlichen CIFS-Dateiserver) her. Der Angreifer verwendet die Anmeldeinformationen des Clients, um sich als Client zu maskieren und sich bei einem Dienst zu authentifizieren (z. B. eine Instanz des Datenbankmoduls).
Es gibt zwei Varianten dieses Angriffs:
Bei einem lockenden Angriff verbindet sich der Client freiwillig mit dem Angreifer.
Bei einem Spoofingangriff beabsichtigt der Client, eine Verbindung mit einem gültigen Dienst herzustellen, ist jedoch nicht bewusst, dass ein oder beide DNS- und IP-Routing vergiftet sind, um die Verbindung stattdessen an den Angreifer umzuleiten.
SQL Server unterstützt Dienst- und Kanalbindungen, um die Angriffe auf SQL Server-Instanzen zu verringern.
Dienstbindung
Dienstbindungsadressen rufen Angriffe auf, indem ein Client einen signierten Dienstprinzipalnamen (SPN) des SQL Server Diensts sendet, mit dem der Client eine Verbindung herstellen möchte. Der Dienst überprüft als Teil der Authentifizierungsantwort, ob der im Paket empfangene SPN mit seinem eigenen SPN übereinstimmt. Wenn ein Client dazu verleitet wird, eine Verbindung mit einem Angreifer herzustellen, enthält der Client den signierten SPN des Angreifers. Der Angreifer kann das Paket nicht weiterleiten, um sich beim echten SQL Server-Dienst als Client zu authentifizieren, da es den SPN des Angreifers enthalten würde. Die Dienstbindung verursacht einmalige, vernachlässigbare Kosten, behebt jedoch keine Spoofingangriffe. Dienstbindung tritt auf, wenn eine Clientanwendung keine Verschlüsselung zum Herstellen einer Verbindung mit dem SQL Server verwendet.
Kanalbindung
Die Kanalbindung richtet einen sicheren Kanal (Schannel) zwischen einem Client und einer Instanz des SQL Server-Diensts ein. Der Dienst überprüft die Authentizität des Clients, indem das Kanalbindungstoken (CBT) des Clients mit seinem eigenen CBT verglichen wird. Durch die Kanalbindung werden sowohl Köderungsangriffe als auch Spoofing-Angriffe unterbunden. Es verursacht jedoch eine größere Laufzeitkosten, da sie die TLS-Verschlüsselung (Transport Layer Security) des gesamten Sitzungsdatenverkehrs erfordert. Kanalbindung tritt auf, wenn eine Clientanwendung Verschlüsselung verwendet, um eine Verbindung mit dem SQL Server herzustellen, unabhängig davon, ob die Verschlüsselung vom Client oder vom Server erzwungen wird.
Warnung
SQL Server und Microsoft Datenanbieter für SQL Server unterstützen ältere Protokolle, einschließlich TLS 1.0 und SSL 3.0. Wenn Sie ein anderes Protokoll (z. B. TLS 1.2 oder TLS 1.3) erzwingen, indem Sie Änderungen an der SChannel-Ebene des Betriebssystems vornehmen, können Ihre Verbindungen mit SQL Server fehlschlagen. Stellen Sie sicher, dass Sie über den neuesten Build von SQL Server verfügen, um TLS 1.2 oder TLS 1.3 zu unterstützen. Weitere Informationen finden Sie unter TLS 1.2 und TLS 1.3.
Betriebssystemunterstützung
Die folgenden Links enthalten weitere Informationen dazu, wie Windows erweiterten Schutz unterstützt:
- Integrierte Windows-Authentifizierung mit erweitertem Schutz
- Microsoft-Sicherheitsempfehlung (973811), Erweiterter Schutz für die Authentifizierung
Treiberunterstützung
Die einzigen Treiber, die erweiterten Schutz unterstützen, sind Windows basiert:
- Microsoft ODBC-Treiber für SQL Server (nur unter Windows)
- Microsoft OLE DB-Treiber für SQL Server
- System.Data.SqlClient (in .NET Framework unter Windows)
- Microsoft.Data.SqlClient (unter Windows)
Einstellungen
Drei SQL Server Verbindungseinstellungen wirken sich auf die Dienstbindung und kanalbindung aus. Sie können diese Einstellungen mithilfe des SQL Server-Konfigurations-Manager oder WMI konfigurieren. Zeigen Sie diese Einstellungen mithilfe des Facets " Serverprotokolleinstellungen " der richtlinienbasierten Verwaltung an.
Erzwingen der Verschlüsselung
Mögliche Werte sind Yes und No. Um die Kanalbindung zu verwenden, legen Sie " Verschlüsselung erzwingen " auf "Ja" fest, und alle Clients müssen verschlüsseln. Wenn dies "Nein" ist, wird nur die Dienstbindung garantiert. Das Feature Verschlüsselung erzwingen befindet sich im SQL Server-Konfigurations-Manager unter Protocols for MSSQLSERVER Properties (Flags Tab). Ab SQL Server 2022 (16.x) können Sie auch "Strenge Verschlüsselung erzwingen" auf "Ja" festlegen, um den Schutz zu stärken, indem Sie TDS 8.0 verwenden. Weitere Informationen finden Sie unter Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen.
Legen Sie "Verschlüsselung erzwingen " auf "Ja " fest, wenn sie mit erweitertem Schutz verwendet wird.
Erweiterter Schutz
Mögliche Werte sind Aus, Zulässigund Erforderlich. Verwenden Sie die Variable "Erweiterter Schutz", um die Erweiterte Schutzebene für jede SQL Server Instanz festzulegen. Sie finden erweiterten Schutz auf den Protokollen für MSSQLSERVER-Eigenschaften (Erweiterte Registerkarte) in SQL Server-Konfigurations-Manager.
Auf "Aus" festlegen, um den erweiterten Schutz zu deaktivieren. Die SQL Server-Instanz akzeptiert Verbindungen von jedem beliebigen Client, unabhängig davon, ob er geschützt ist oder nicht. "Aus" ist mit älteren und nicht gepatchten Betriebssystemen kompatibel, ist jedoch weniger sicher. Verwenden Sie diese Einstellung, wenn die Clientbetriebssysteme keinen erweiterten Schutz unterstützen.
Auf "Zulässig" festlegen, dass erweiterter Schutz für Verbindungen von Betriebssystemen erforderlich ist, die erweiterten Schutz unterstützen. Erweiterter Schutz wird für Verbindungen von Betriebssystemen ignoriert, die erweiterten Schutz nicht unterstützen. Verbindungen von nicht geschützten Clientanwendungen, die auf geschützten Clientbetriebssystemen ausgeführt werden, werden abgelehnt. Diese Einstellung ist sicherer als aus, ist aber nicht die sicherste. Verwenden Sie diese Einstellung in gemischten Umgebungen. Einige Betriebssysteme unterstützen erweiterten Schutz und andere nicht.
Auf "Erforderlich" festgelegt, um nur Verbindungen von geschützten Anwendungen auf geschützten Betriebssystemen zu akzeptieren. Diese Einstellung ist die sicherste, aber Verbindungen von Betriebssystemen oder Anwendungen, die erweiterten Schutz nicht unterstützen, können keine Verbindung mit SQL Server herstellen.
Weitere Informationen zu empfohlenen Einstellungen finden Sie unter Aktivieren der Verschlüsselung mit erweitertem Schutz.
Akzeptierte NTLM-SPNs
Geben Sie die Variable "Akzeptierte NTLM SPNs" an, wenn mehrere SPN einen Server kennen. Wenn ein Client versucht, eine Verbindung mit dem Server mithilfe eines gültigen SPN herzustellen, den der Server nicht kennt, schlägt die Dienstbindung fehl. Um dieses Problem zu vermeiden, geben Sie mehrere SPNs an, die den Server mit den akzeptierten NTLM-SPNs darstellen. Akzeptierte NTLM-SPNs ist eine Reihe von SPNs, die durch Semikolons getrennt sind. Beispiel: Um die Verwendung der SPNs MSSQLSvc/ HostName1.Contoso.com und MSSQLSvc/ HostName2.Contoso.comzuzulassen, geben Sie im Feld Akzeptierte NTLM-SPNs die Zeichenfolge MSSQLSvc/HostName1.Contoso.com;MSSQLSvc/HostName2.Contoso.com ein. Die maximale Länge der Variablen beträgt 2.048 Zeichen. Sie finden akzeptierte NTLM SPNs auf den Protokollen für MSSQLSERVER-Eigenschaften (Erweiterte Registerkarte) in SQL Server-Konfigurations-Manager.
Aktivieren des erweiterten Schutzes für das Datenbankmodul
Um erweiterten Schutz zu verwenden, muss sowohl der Server als auch der Client über ein Betriebssystem verfügen, das erweiterten Schutz unterstützt und auf dem Betriebssystem aktiviert sein muss. Weitere Informationen zum Aktivieren des erweiterten Schutzes für das Betriebssystem finden Sie unter Erweiterter Schutz für die Authentifizierung.
Während der erweiterte Schutz und NTLMv2 in allen unterstützten Versionen von Windows standardmäßig aktiviert sind, ist der erweiterte Schutz für SQL Server Verbindungen nicht standardmäßig aktiviert. Sie müssen sie manuell in SQL Server-Konfigurations-Manager aktivieren.
Um den erweiterten Schutz für SQL Server-Verbindungen zu aktivieren, müssen Administratoren die Einstellungen in SQL Server-Konfigurations-Manager konfigurieren. Diese Konfiguration enthält Optionen für die Dienstbindung und Kanalbindung, um verschiedene Arten von Authentifizierungsrelayangriffen zu mindern. Ausführliche Anweisungen finden Sie in der SQL Server Dokumentation zum Konfigurieren des erweiterten Schutzes.
Aktivieren der Verschlüsselung mit erweitertem Schutz
Gilt für: SQL Server
Um die Sicherheit zu verbessern, wenn Sie Windows-Authentifizierung verwenden, legen Sie den erweiterten Schutzauf"Erforderlich" fest, und erzwingen Sie die Verschlüsselung in SQL Server-Konfigurations-Manager.
Diese Einstellungen stellen die sicherste Konfiguration für SQL Server bereit.
Note
Verwenden Sie in SQL Server 2022 (16.x) und höheren Versionen force Strict Encryption anstelle von Force Encryption, um eine stärkere Sicherheit über TDS 8.0 zu ermöglichen.
Aktualisieren Sie Ihre Verbindungszeichenfolgen , um diese Änderungen zu berücksichtigen.
Weitere Informationen findest du unter:
- Herstellen einer Verbindung mit dem Datenbankmodul mit erweitertem Schutz
- Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen
- TDS 8.0
- Herstellen einer Verbindung mit SQL Server mit strenger Verschlüsselung
Nach dem Aktivieren des erweiterten Schutzes
Nachdem Sie den erweiterten Schutz auf dem Servercomputer aktiviert haben, führen Sie die folgenden Schritte aus, um erweiterten Schutz zu aktivieren:
Wechseln Sie zum SQL Server-Konfigurations-Manager über das Windows Startmenü.
Erweitern Sie SQL Server Netzwerkkonfiguration, und klicken Sie dann mit der rechten Maustaste auf Protokolle für<InstanceName>. Wählen Sie Eigenschaften aus.
Legen Sie auf der Registerkarte "Erweitert" den erweiterten Schutz auf die entsprechende Einstellung für Kanalbindung und Dienstbindung fest.
Wenn mehrere SPN einen Server kennen, konfigurieren Sie optional das Feld "Akzeptierte NTLM SPNs " auf der Registerkarte "Erweitert ", wie im Abschnitt "Einstellungen" beschrieben.
Legen Sie für die Kanalbindung auf der Registerkarte " Kennzeichnungen " " Verschlüsselung erzwingen " auf "Ja" fest. Diese Einstellung wird empfohlen.
Starten Sie den Datenbank-Engine-Dienst neu.
Konfigurieren anderer SQL Server-Komponenten
Weitere Informationen zum Konfigurieren von Reporting Services finden Sie unter Erweiterter Schutz für die Authentifizierung mit Reporting Services.
Wenn Sie IIS für den Zugriff auf Analysis Services-Daten mit einer HTTP- oder HTTPS-Verbindung verwenden, kann Analysis Services den erweiterten Schutz nutzen, der von IIS bereitgestellt wird. Weitere Informationen dazu, wie IIS zur Verwendung von Extended Protection konfiguriert wird, finden Sie unter Konfigurieren von Extended Protection in IIS 7.5.
Beispiel für eine Verbindungszeichenfolge
Im folgenden C#-Beispiel verwendet die Verbindungszeichenfolge Windows-Authentifizierung (Integrated Security=true). Das Kanalbindungstoken wird über TLS-Verschlüsselung (Encrypt=true) aktiviert. Die Zertifikatüberprüfung wird mit TrustServerCertificate=false. Obwohl nicht erforderlich, HostNameInCertificate wird empfohlen und in diesem Beispiel enthalten.
using (var conn = new SqlConnection(
"Server=sql01.contoso.com;" +
"Database=AdventureWorks2025;" +
"Integrated Security=true;" +
"Encrypt=true;" +
"TrustServerCertificate=false;" +
"HostNameInCertificate=sql01.contoso.com;"))
{
conn.Open();
}