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: 0x0

Anmeldetyp: 3

Konto, für das die Anmeldung fehlgeschlagen ist:

Sicherheits-ID: NULL SID
Kontoname: ntadmin
Kontodomäne: client-computer1

Fehlerinformationen:

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

  1. 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.

  2. 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.

  3. 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.

  4. 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:

  1. Der Computer sendet Folgendes im SMB "Sitzungseinrichtung":

    • account = "USER1"
    • password = "PSW1"
    • domain = "LOCAL1"
  2. Der \\NET-Server empfängt den SMB und hat sich den Kontonamen angesehen.

  3. Der Server überprüft seine lokale Domänenkontodatenbank und findet keine Übereinstimmung.

  4. Der Server untersucht dann den SMB-Domänennamen.

  5. Der Server vertraut "LOCAL1" nicht, sodass der Server seine vertrauenswürdigen Domänen nicht überprüft.

  6. Der Server überprüft dann sein Gastkonto.

  7. 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:

  1. Der Computer sendet Folgendes im SMB "Sitzungseinrichtung":

    • account = "USER1"
    • password = "PSW1"
    • domain = "LOCAL1"
  2. Der \\SCRATCH-Server empfängt den SMB und untersucht den Kontonamen.

  3. Der Server überprüft seine lokale Domänenkontodatenbank und findet eine Übereinstimmung.

  4. Der Server vergleicht dann das SMB-Kennwort mit dem Kennwort des Domänenkontos.

  5. 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 dem NET 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

  1. Starten Sie in den Verwaltungstools auf einem Domänencontroller Active Directory-Benutzer und -Computer.
  2. Klicken Sie mit der rechten Maustaste auf Domänencontroller OE, und klicken Sie dann auf Eigenschaften.
  3. Doppelklicken Sie auf der Registerkarte Gruppenrichtlinie auf Standarddomänencontrollerrichtlinie.
  4. Klicken Sie im richtlinien-Editor auf Computereinstellungen, auf Windows-Einstellungen, auf Sicherheitseinstellungen, auf Lokale Richtlinien und dann auf Überwachungsrichtlinie.
  5. Wählen Sie die Option Anmeldung und Kontoanmeldung erfolgreich und die Option Fehler aus.

Domäneneinstellungen für Windows 2000-Server und -Mitglieder

  1. Starten Sie in den Verwaltungstools auf einem Domänencontroller Active Directory-Benutzer und -Computer.
  2. Klicken Sie mit der rechten Maustaste auf den Domänennamen, und klicken Sie dann auf Eigenschaften.
  3. Doppelklicken Sie auf der Registerkarte Gruppenrichtlinie auf Standarddomänenrichtlinie.
  4. Klicken Sie im Richtlinien-Editor auf Computereinstellungen, dann auf Windows-Einstellungen,Sicherheitseinstellungen, lokale Richtlinien und dann auf Überwachungsrichtlinie.
  5. Wählen Sie die Option Anmeldung und Kontoanmeldung erfolgreich und die Option Fehler aus.

Lokale Einstellungen für Windows 2000-Server und -Mitglieder

  1. Starten Sie in den Verwaltungstools lokale Sicherheitsrichtlinie.
  2. Öffnen Sie Überwachungsrichtlinie.
  3. 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