Algorithmen zur Überprüfung des Netzwerkzugriffs und Beispiele für Windows Server 2003, Windows XP und Windows 2000
In diesem Artikel wird erläutert, wie die Windows-Kontovalidierung während des Netzwerkzugriffs mithilfe des NTLM-Protokolls funktioniert.
Gilt für: Windows 10 (alle Editionen), Windows Server 2012 R2
Ursprüngliche KB-Nummer: 103390
Zusammenfassung
Im Folgenden finden Sie einen vereinfachten Algorithmus, der erläutert, wie die Windows-Kontovalidierung während des Netzwerkzugriffs mithilfe des NTLM-Protokolls funktioniert. Es wird der Zugriff über das SMB-Protokoll (Server Message Block) als Beispiel verwendet, aber es gilt für alle anderen Serveranwendungen, die die NTLM-Authentifizierung unterstützen. Diese Diskussion behandelt nicht die internen Funktionsweisen dieses Prozesses. Mit diesen Informationen können Sie das Windows-Netzwerkanmeldungsverhalten unter deterministischen Bedingungen vorhersagen.
Wenn Kerberos verwendet wird, um den Benutzer zu authentifizieren und Zugriff auf Serverressourcen zu erhalten, unterscheidet sich der Prozess von NTLM.
Denken Sie daran, dass die lokale Datenbank die Domänendatenbank und die einzige Datenbank auf den Domänencontrollern ist. Auf anderen Servern und allen Computern unterscheidet sich die lokale Datenbank jedoch vom Domänencontroller.
Hintergrundinformationen
Wenn zwei Windows Server 2003-basierte, Windows XP- oder Windows 2000-basierte Computer über ein Netzwerk kommunizieren, verwenden sie ein allgemeines Protokoll namens Server Message Block (SMB). SMB-Befehle sind in die Transportprotokolle eingebettet, z. B. NetBIOS Enhanced User Interface (NetBEUI) oder TCP/IP. Wenn beispielsweise ein Clientcomputer einen NET USE
Befehl ausführt, wird ein Frame "SMB-Sitzungseinrichtung und X" gesendet.
Unter Windows enthält der SMB "Sitzungseinrichtung" das Benutzerkonto, eine Hashfunktion des verschlüsselten Kennworts und die Anmeldedomäne. Ein Domänencontroller überprüft alle diese Informationen, um zu ermitteln, ob der Client über Berechtigungen zum Ausführen des NET USE-Befehls verfügt.
Algorithmen
Ein Windows-Clientcomputer sendet den folgenden Befehl an einen Server:
NET USE x: \\server\share
Der Windows-Clientcomputer sendet ein SMB für das Sitzungssetup, das die Anmeldedomäne, das Benutzerkonto und das Kennwort enthält.
Der Server untersucht den Domänen- oder Computernamen, der vom SMB angegeben wurde. Wenn der Name der name des Servers ist, wird der folgende Algorithmus ausgeführt:
It checks its own domain database or computer database for
a matching account.
If it finds a matching account then
The SMB password is compared to the domain database password or the computer database password.
If the password matches then
The command completed successfully.
If the password does NOT match then
The user is prompted for a password.
The password is retested as above.
System error 1326 has occurred. Logon failure: unknown
user name or bad password.
End
If it does NOT find the account in the domain Security Accounts Manager (SAM) database or computer SAM database then
Guest permissions are tested.
If the guest account is enabled
The command completed successfully.
If the guest account is disabled
(* See Note a).
The user is prompted for a password.
System error 1326 has occurred. Logon failure:
unknown user name or bad password.
End
Wenn es sich bei der im SMB angegebenen Domäne um eine Domäne handelt, der der Server vertraut, wird der folgende Algorithmus ausgeführt:
The server will do pass-through authentication. The
network logon request will be sent to a server that has a domain controller role in the
specified trusted domain.
Wenn kein sicherer Kanal eingerichtet ist, wird der folgende Algorithmus ausgeführt:
The trusted domain controller checks its own domain database
for a matching account.
If the trusted domain controller finds a matching account, then
NOT for Windows 2000 and later versions:
It determines whether the account is a local or global account.
If the account is local, then
Guest permissions on the original server are tested.
If the guest account is enabled
The command completed successfully.
If the guest account is disabled
(* See Note 1) The user is prompted for a password.
System error 1326 has occurred. Logon failure:
unknown user name or bad password.
End
If the account is global (the only option for Active Directory)
The SMB password is compared to the domain database
password.
If the password matches, then
The command completed successfully.
(* See Note 2)
If the password does NOT match, then
The user is prompted for a password.
The password is retested as above.
System error 1326 has occurred. Logon failure:
unknown user name or bad password.
End
If the trusted domain controller does NOT find the account in the trusted domain controller
database, then
Guest permissions are tested on the original server, not the trusted domain. (* See Note 3)
If the guest account is enabled
The user will have original server guest access.
The command completed successfully.
If the guest account is disabled
(* See Note 1) The user is prompted for a password.
System error 1326 has occurred. Logon failure:
unknown user name or bad password.
End
Wichtig
In den folgenden Fällen werden Szenarien erläutert, in denen der Client eine andere Benutzerdomäne verwendet als die, die der Server besitzt oder kennt. Es gibt ein Problem mit diesem Konflikt, wenn das NTLMv2-Authentifizierungsprotokoll ausgehandelt wird. NTLM in v2 verwendet ein Kennwortsalz, und die Benutzerdomäne wird in diesem Salt vom Client verwendet.
Wenn der Server die Informationen abruft und den Benutzer in der lokalen Datenbank findet, verwendet der Server den Namen der LOCAL-Datenbank, um das Salt und den Hash zu berechnen. Wenn die vom Client gesendete "Quelldomäne" leer oder eine unbekannte Domäne ist, stimmen salt und daher der Kennworthash nicht überein. In diesen Fällen schlägt der Authentifizierungsversuch mit dem Fehler "Unbekannter Benutzername oder ungültiges Kennwort" (STATUS_LOGON_FAILURE) fehl. Das Überwachungsereignis für den Versuch meldet "falsches Kennwort", Symbol STATUS_WRONG_PASSWORD.
Ein Beispielereignis:
Protokollname: Sicherheit
Quelle: Microsoft-Windows-Security-Auditing
Ereignis-ID: 4625
Aufgabenkategorie: Anmeldung
Ebene: Informationen
Schlüsselwörter: Überwachungsfehler
Computer: server-computer1
Beschreibung:
Ein Konto konnte sich nicht anmelden.Betreff:
Sicherheits-ID: NULL SID
Kontoname: -
Kontodomäne: -
Anmelde-ID: 0x0Anmeldetyp: 3
Konto, für das die Anmeldung fehlgeschlagen ist:
Sicherheits-ID: NULL SID
Kontoname: ntadmin
Kontodomäne: client-computer1Fehlerinformationen:
Fehlerursache: Unbekannter Benutzername oder ungültiges Kennwort.
Status: 0xc000006d
Unterstatus: 0xc000006a
...Ausführliche Authentifizierungsinformationen:
Anmeldeprozess: NtLmSsp
Authentifizierungspaket: NTLM
Transited Services: -
Paketname (nur NTLM): -
Schlüssellänge: 0
Um dieses Szenario zu vermeiden, müssen Sie den richtigen Domänennamen explizit auf dem Client angeben. Für eine Laufwerkzuordnung in einem Arbeitsgruppenszenario wäre dies folgendes:
Net use x: \\server-computer1\data /u:server-computer1\ntadmin *
Wenn die im SMB angegebene Domäne vom Server unbekannt ist, z. B. wenn eine Domäne angegeben wurde, aber vom Server nicht als vertrauenswürdige Domäne oder deren Domänencontroller erkannt wurde, wird der folgende Algorithmus ausgeführt:
It will check its own account database for
a matching account
If the server finds a matching account, then
The SMB password is compared to the domain database password or the computer database password.
If the password matches, then
The command completed successfully.
If the password does NOT match, then
The user is prompted for a password.
The password is retested as above.
System error 1326 has occurred. Logon failure: unknown
user name or bad password.
End
If it does NOT find the account in the domain database then
guest permissions are tested.
If the guest account is enabled
The command completed successfully.
If the guest account is disabled
System error 1326 has occurred. Logon failure:
unknown user name or bad password.
End
Wenn die Domäne, die im SMB angegeben ist, NULL ist, d. a. keine Domäne angegeben ist, wird der folgende Algorithmus ausgeführt:
The server will treat this as a local network logon. The server
will test for a matching account in its own database.
If it finds a matching account, then
The SMB password is compared to the SAM database password.
If the password matches, then
The command completed successfully.
If the password does NOT match, then
The user is prompted for a password.
The password is retested as above.
System error 1326 has occurred. Logon failure: unknown
user name or bad password.
End
If it does NOT find the account in the local SAM database AND
LsaLookupRestrictIsolatedNameLevel=0 AND NeverPing=0, then (* See Note 4)
The server will simultaneously ask each domain that it trusts whether it has account that
matches the SMB account.
The first trusted domain to reply is sent a request to
perform pass-through authentication of the client
information.
The trusted domain will look in its own database.
If an account that matches the SMB account is found, then
The trusted domain determines whether the account is a local or global
account.
Not for Windows 2000 and later versions:
If the account is local then
Guest permissions on the original server are tested.
If the guest account is enabled
The command completed successfully.
If the guest account is disabled
The user will be prompted for a password.
Regardless of what password is entered, the user will receive
"Error 5: Access has been denied."
End
If the account is global (the only option for Active Directory)
The password that was specified in the SMB is compared
to the SAM database password.
If the password matches, then
The command completed successfully.
If the password does NOT match, then
The user is prompted for a password.
The password is retested as above.
System error 1326 has occurred. Logon failure:
unknown user name or bad password.
End
If no trusted domains respond to the request to identify the
account, then
Guest permissions are tested on the original server,
not the trusted server.
If the guest account is enabled
The command completed successfully.
If the guest account is disabled
System error 1326 has occurred. Logon failure:
unknown user name or bad password.
End
Hinweise
Wenn das Gastkonto deaktiviert ist und der Benutzer über kein Konto verfügt, fordert der Server weiterhin ein Kennwort an. Obwohl kein Kennwort seine Anforderungen erfüllt, fordert der Server als Sicherheitsmaßnahme weiterhin ein Kennwort an. Diese Sicherheitsmaßnahme stellt sicher, dass ein nicht autorisierter Benutzer den Unterschied zwischen einem Fall, in dem ein Konto vorhanden ist, und dem, wenn das Konto nicht vorhanden ist, nicht erkennen kann. Der Benutzer wird immer zur Eingabe eines Kennworts aufgefordert, unabhängig davon, ob das Konto vorhanden ist.
An diesem Punkt werden die folgenden Informationen von der vertrauenswürdigen Domäne in der Antwort zurückgegeben: Domänen-SID, Benutzer-ID, Globale Gruppenmitgliedschaften, Anmeldezeit, Abmeldezeit, KickOffTime, vollständiger Name, Kennwort lastSet, Kennwort kann Flag ändern, Kennwort muss geändert werden, Benutzerskript, Profilpfad, Startverzeichnis und Anzahl ungültiger Kennwörter.
Wenn kein Konto in der vertrauenswürdigen Domäne gefunden wird, muss das Betriebssystem das lokale Gastkonto verwenden, um ein konsistentes Verhalten für die Authentifizierung beim Server zu gewährleisten.
Weitere Informationen zum Einschränken der Suche und Anmeldung isolierter Namen in vertrauenswürdigen Domänen mithilfe der Registrierungseinträge LsaLookupRestrictIsolatedNameLevel und NeverPing finden Sie unter The Lsass.exe process may may stop reaktion if you have many external trusts on an Active Directory Domänencontroller.
Gastkonten in vertrauenswürdigen Domänen sind nie verfügbar.
Der eigentliche interne Prozess ist komplexer als die hier beschriebenen Algorithmen.
Diese Algorithmen behandeln nicht die tatsächlichen Mechanismen der Passthrough-Authentifizierung. Weitere Informationen finden Sie unter NTLM-Benutzerauthentifizierung in Windows.
Diese Algorithmen behandeln nicht den Kennwortverschlüsselungsprozess, der in Windows Server 2003, Windows XP und Windows 2000 verwendet wird. Ein blob (Binary Large Object), das von einem unidirektionalen Kennworthash abgeleitet wird, wird als Teil der Authentifizierungsanforderung gesendet. Der Inhalt dieses BLOB hängt vom für die Anmeldung ausgewählten Authentifizierungsprotokoll ab.
In diesem Artikel wird die interne Funktionsweise des Microsoft-Authentifizierungsmoduls nicht behandelt.
Diese Algorithmen gehen davon aus, dass das Gastkonto, wenn es aktiviert ist, über kein Kennwort verfügt. Standardmäßig verfügt das Gastkonto in Windows Server 2003, Windows XP und Windows 2000 nicht über ein Kennwort. Wenn ein Gastkontokennwort angegeben ist, muss das im SMB gesendete Benutzerkennwort mit diesem Gastkontokennwort übereinstimmen.
Beispiele
Im Folgenden sind Beispiele für diese Algorithmen in Aktion aufgeführt.
Beispiel 1
Sie sind mit demselben Kontonamen und Kennwort wie in der Scratch-DOMAIN-Domänenkontodatenbank am Computer angemeldet. Wenn Sie den NET USE \\SCRATCH
Befehl für den Domänencontroller für die Domäne SCRATCH-DOMAIN ausführen, wird der Befehl erfolgreich abgeschlossen. Wenn Sie den NET USE \\NET
Befehl für den Domänencontroller ausführen, der der DOMÄNE SCRATCH-DOMAIN vertraut, wird die folgende Fehlermeldung angezeigt:
Systemfehler 1326 ist aufgetreten. Anmelden gescheitert: Unbekannter Benutzername oder ungültiges Kennwort.
Das Konto \SCRATCH-DOMAIN\USER1 verfügt über Berechtigungen für \\NET.
Hinweis
In diesem Beispiel wird von den folgenden Konfigurationen ausgegangen.
Konfigurationen
Computer mit einer lokalen Sicherheitsautorität:
-Anmeldekonto: USER1
-Password: PSW1
-Login Domain: LOCAL1
Active Directory-Domänencontroller:
-Servername: NET</WWITEM>
-Domain: NET-DOMAIN</WWITEM>
-Trust: NET-DOMAIN Trust SCRATCH-DOMAIN (Daher,
Konten in SCRATCH-DOMAIN können Berechtigungen gewährt werden
in der NET-DOMÄNE).
Die DOMÄNE NET-DOMAIN:
- Die Domänenkontodatenbank für die DOMÄNE NET-DOMAIN enthält kein Konto für USER1.
- Das Gastkonto ist deaktiviert.
Windows Server 2003:
-Servername: SCRATCH
-Domain: SCRATCH-DOMAIN
-Domänendatenbank enthält Konto: USER1
-Domänendatenbank enthält kennwort: PSW1
In diesem Beispiel ist der Computer bei seiner lokalen Domäne angemeldet, nicht bei der SCRATCH-DOMAIN-Domäne, in der sich das Domänenkonto des Computers befindet.
Beispiel 2
Wenn Sie den NET USE x: \\NET\share
Befehl ausführen, werden die folgenden Schritte ausgeführt:
Der Computer sendet Folgendes im SMB "Sitzungseinrichtung":
- account = "USER1"
- password = "PSW1"
- domain = "LOCAL1"
Der \\NET-Server empfängt den SMB und hat sich den Kontonamen angesehen.
Der Server überprüft seine lokale Domänenkontodatenbank und findet keine Übereinstimmung.
Der Server untersucht dann den SMB-Domänennamen.
Der Server vertraut "LOCAL1" nicht, sodass der Server seine vertrauenswürdigen Domänen nicht überprüft.
Der Server überprüft dann sein Gastkonto.
Das Gastkonto ist deaktiviert, sodass der Systemfehler 1326 aufgetreten ist. Anmeldefehler: Unbekannter Benutzername oder ungültiges Kennwort." Fehlermeldung wird generiert.
Beispiel 3
Wenn Sie den NET USE x: \\SCRATCH\share
Befehl ausführen, werden die folgenden Schritte ausgeführt:
Der Computer sendet Folgendes im SMB "Sitzungseinrichtung":
- account = "USER1"
- password = "PSW1"
- domain = "LOCAL1"
Der \\SCRATCH-Server empfängt den SMB und untersucht den Kontonamen.
Der Server überprüft seine lokale Domänenkontodatenbank und findet eine Übereinstimmung.
Der Server vergleicht dann das SMB-Kennwort mit dem Kennwort des Domänenkontos.
Die Kennwörter stimmen überein.
Daher wird die Meldung "Befehl wurde erfolgreich abgeschlossen" generiert. In Beispiel 2 und Beispiel 3 ist die Vertrauensstellung nicht verfügbar. Wenn der Computer bei der Domäne SCRATCH-DOMAIN angemeldet wäre, wäre der NET USE x: \\NET\share
Befehl erfolgreich gewesen.
Die ideale Lösung besteht darin, dass sich alle Computer bei einer Domäne anmelden. Um sich anzumelden, muss der Benutzer die Domäne, das Konto und das Kennwort angeben. Danach übergeben alle NET USE -type-Befehle die richtigen Domänen-, Konto- und Kennwortinformationen. Administratoren sollten versuchen, doppelte Konten sowohl auf Computern als auch auf mehreren Domänen zu vermeiden. Windows Server 2003-basierte, Windows XP- und Windows 2000-basierte Computer tragen dazu bei, diese Konfiguration zu vermeiden, indem Vertrauensstellungen zwischen Domänen und Member verwendet werden, die Domänendatenbanken verwenden können.
Problemumgehung
Es gibt eine Problemumgehung, die in diesen Fällen verwendet werden kann. Auf dem Computer können Sie den folgenden Befehl ausführen:
NET USE X: \\NET\SHARE /USER:SCRATCH-DOMAIN\USER1 PSW1
In diesem Befehl gilt Folgendes:
- \\NET = Der Computername des Domänencontrollers, auf den zugegriffen wird.
- \SHARE = Der Freigabename.
- /USER: Befehlszeilenparameter, mit dem Sie die Domäne, das Konto und das Kennwort angeben können, die im SMB "Sitzungseinrichtung" angegeben werden sollen.
- SCRATCH-DOMAIN = Domänenname der Domäne, in der sich das Benutzerkonto befindet.
- \USER1 = Konto, das überprüft werden soll.
- PSW1 = Kennwort, das dem Konto in der Domäne entspricht.
Um weitere Informationen zu diesem Befehl zu erfahren, geben Sie Folgendes an der Eingabeaufforderung ein:
NET USE /?
NULL-Domänennamen
Der Microsoft SMB-Client, der in Windows Server 2003, Windows XP und Windows 2000 enthalten ist, sendet NULL-Domänennamen im SMB "Session Setup SMB [x73]". Der Microsoft SMB-Client verarbeitet den Domänennamen, indem er den Anmeldedomänennamen angibt und ein NULL-Zeichen sendet, wenn der Domänenname nicht im NET USE-Befehl angegeben ist. Der Microsoft SMB-Client zeigt auch das in Beispiel 1 beschriebene Verhalten.
Hinweis
- Der Standarddomänenname wird in der LANMAN.INI-Datei in der Zeile "DOMAIN =" angegeben. Dies kann vom
/DOMAIN:
Schalter mit demNET LOGON
Befehl überschrieben werden. - In der Regel gibt es zwei Darstellungen für "NULL" im SMB: Ein Domänenname der Länge null und ein 1-Byte-Domänenname, der aus dem Fragezeichen (?) besteht. Der SMB-Server fängt das Fragezeichen ab und übersetzt es in NULL, bevor es an die lokale Sicherheitsautorität (LSA) übergeben wird.
Problembehandlung
Ein guter Tipp für die Behandlung von Netzwerkzugriffsproblemen ist, die Überwachung wie folgt zu aktivieren.
Windows 2000 und höhere Versionen von Windows 2000-basierten Domänencontrollern
- Starten Sie in den Verwaltungstools auf einem Domänencontroller Active Directory-Benutzer und -Computer.
- Klicken Sie mit der rechten Maustaste auf Domänencontroller OE, und klicken Sie dann auf Eigenschaften.
- Doppelklicken Sie auf der Registerkarte Gruppenrichtlinie auf Standarddomänencontrollerrichtlinie.
- Klicken Sie im richtlinien-Editor auf Computereinstellungen, auf Windows-Einstellungen, auf Sicherheitseinstellungen, auf Lokale Richtlinien und dann auf Überwachungsrichtlinie.
- Wählen Sie die Option Anmeldung und Kontoanmeldung erfolgreich und die Option Fehler aus.
Domäneneinstellungen für Windows 2000-Server und -Mitglieder
- Starten Sie in den Verwaltungstools auf einem Domänencontroller Active Directory-Benutzer und -Computer.
- Klicken Sie mit der rechten Maustaste auf den Domänennamen, und klicken Sie dann auf Eigenschaften.
- Doppelklicken Sie auf der Registerkarte Gruppenrichtlinie auf Standarddomänenrichtlinie.
- Klicken Sie im Richtlinien-Editor auf Computereinstellungen, dann auf Windows-Einstellungen,Sicherheitseinstellungen, lokale Richtlinien und dann auf Überwachungsrichtlinie.
- Wählen Sie die Option Anmeldung und Kontoanmeldung erfolgreich und die Option Fehler aus.
Lokale Einstellungen für Windows 2000-Server und -Mitglieder
- Starten Sie in den Verwaltungstools lokale Sicherheitsrichtlinie.
- Öffnen Sie Überwachungsrichtlinie.
- Wählen Sie die Option Anmeldung und Kontoanmeldung erfolgreich und die Option Fehler aus. Wenn nun ein Netzwerkbenutzer remote auf diesen Server zugreift, wird ein Überwachungspfad Ereignisanzeige protokolliert. Um diese Ereignisse in Ereignisanzeige anzuzeigen, klicken Sie im Menü Protokoll auf Sicherheit.
Weitere Informationen zu Vertrauensstellungen, Passthrough-Authentifizierung, Benutzerberechtigungen und Domänenanmeldungen findest du unter Technische Übersicht über Windows Server 2003-Sicherheitsdienste.
Weitere Informationen
Im Grunde werden dieselben Algorithmen für die Überprüfung des Netzwerkzugriffs auf Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 Windows Server 2012 R2 angewendet.
Dieses Betriebssystem verfügt über mehrere neue Features in SMB.
Windows Server 2008
Windows Server 2012
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für