Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe validatie van Windows-accounts wordt waargenomen tijdens netwerktoegang met behulp van het NTLM-protocol.
Oorspronkelijk KB-nummer: 103390
Samenvatting
Hier volgt een vereenvoudigd algoritme waarin wordt uitgelegd hoe validatie van Windows-accounts wordt waargenomen tijdens netwerktoegang met behulp van het NTLM-protocol. Het gebruikt toegang via het SMB-protocol (Server Message Block) als voorbeeld, maar is van toepassing op alle andere servertoepassingen die ondersteuning bieden voor NTLM-verificatie. Deze discussie heeft geen betrekking op de interne werking van dit proces. Met deze informatie kunt u het aanmeldingsgedrag van windows-netwerken voorspellen onder deterministische omstandigheden.
Wanneer Kerberos wordt gebruikt om de gebruiker te verifiëren en toegang te krijgen tot serverbronnen, verschilt het proces van wat NTLM doet.
De lokale database is de domeindatabase en de enige database op de domeincontrollers. Maar op andere servers en alle computers verschilt de lokale database van de domeincontroller.
Achtergrondinformatie
Wanneer twee Windows-computers communiceren via een netwerk, gebruiken ze een protocol op hoog niveau met de naam server message block (SMB). SMB-opdrachten worden ingesloten in de transportprotocollen, zoals TCP/IP of Quick UDP Internet Connections (QUIC). Wanneer een clientcomputer bijvoorbeeld een NET USE
opdracht uitvoert, wordt er een SMB Session Setup- en X-frame verzonden.
Wanneer u NTLM gebruikt, bevat de SMB -sessieconfiguratie het gebruikersaccount, een hash-functie van het versleutelde wachtwoord en aanmeldingsdomein in Windows. Een domeincontroller onderzoekt al deze informatie om te bepalen of de client machtigingen heeft om de NET USE-opdracht te voltooien.
Algoritmen
Een Windows-clientcomputer verzendt de volgende opdracht naar een server:
NET USE x: \\server\share
De Windows-clientcomputer verzendt een 'Sessie-installatie' SMB die het aanmeldingsdomein, het gebruikersaccount en het wachtwoord bevat.
De server onderzoekt de domeinnaam of computernaam die is opgegeven door de SMB. Als de naam de eigen naam van de server is, wordt het volgende algoritme uitgevoerd:
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
Als het domein dat is opgegeven in de SMB een domein is dat door de server wordt vertrouwd, wordt het volgende algoritme uitgevoerd:
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.
Als een beveiligd kanaal niet is ingesteld, wordt het volgende algoritme uitgevoerd:
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
Belangrijk
In de volgende gevallen worden scenario's besproken waarbij de client gebruikmaakt van een ander gebruikersdomein dan het domein dat de server heeft of kent. Er is een probleem met dit verschil wanneer het NTLMv2-verificatieprotocol wordt onderhandeld. NTLM bij v2 maakt gebruik van een wachtwoordzout en het gebruikersdomein wordt door de client gebruikt in dit zout.
Wanneer de server de informatie ophaalt en de gebruiker in de lokale database vindt, gebruikt de server de naam van de LOKALE database om het zout en de hash te berekenen. Dus als het 'brondomein' zoals verzonden door de client leeg is of een onbekend domein is, komt het zout en daarom niet overeen met de wachtwoord-hash. In deze gevallen mislukt de verificatiepoging met de fout 'onbekende gebruikersnaam of ongeldig wachtwoord' (STATUS_LOGON_FAILURE). De controlegebeurtenis voor de poging rapporteert 'onjuist wachtwoord', STATUS_WRONG_PASSWORD.
Een voorbeeldgebeurtenis:
Logboeknaam: beveiliging
Bron: Microsoft-Windows-Security-Auditing
Gebeurtenis-id: 4625
Taakcategorie: Aanmelden
Niveau: informatie
Trefwoorden: Controlefout
Computer: server-computer1
Beschrijving:
Een account kan niet worden aangemeld.Onderwerp:
Beveiligings-id: NULL-SID
Accountnaam: -
Accountdomein: -
Aanmeldings-id: 0x0Aanmeldingstype: 3
Account waarvoor aanmelding is mislukt:
Beveiligings-id: NULL-SID
Accountnaam: ntadmin
Accountdomein: client-computer1Foutinformatie:
Reden van fout: onbekende gebruikersnaam of ongeldig wachtwoord.
Status: 0xc000006d
Substatus: 0xc000006a
...Gedetailleerde verificatiegegevens:
Aanmeldingsproces: NtLmSsp
Verificatiepakket: NTLM
Overgedragen services: -
Pakketnaam (alleen NTLM): -
Sleutellengte: 0
Om dit probleem te voorkomen, moet u de juiste domeinnaam expliciet op de client opnemen. Voor een stationstoewijzing in een werkgroepscenario zou dit het volgende zijn:
Net use x: \\server-computer1\data /u:server-computer1\ntadmin *
Als het domein dat is opgegeven in de SMB onbekend is door de server, bijvoorbeeld als een domein is opgegeven maar niet door de server is herkend als een vertrouwd domein of de domeincontroller, wordt het volgende algoritme uitgevoerd:
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
Als het domein dat is opgegeven in de SMB NULL is, wordt er geen domein opgegeven, het volgende algoritme wordt uitgevoerd:
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.
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
Opmerkingen
Als het gastaccount is uitgeschakeld en de gebruiker geen account heeft, vraagt de server nog steeds een wachtwoord aan. Hoewel er geen wachtwoord aan de vereisten voldoet, vraagt de server nog steeds een wachtwoord aan als beveiligingsmaatregel. Deze beveiligingsmaatregel zorgt ervoor dat een onbevoegde gebruiker het verschil niet kan zien tussen een geval waarin een account bestaat en wanneer het account niet bestaat. De gebruiker wordt altijd om een wachtwoord gevraagd, ongeacht of het account bestaat.
Op dit moment wordt de volgende informatie geretourneerd uit het vertrouwde domein in het antwoord: Domein-SID, Gebruikers-id, Lidmaatschappen van globale groepen, Aanmeldingstijd, Afmeldingstijd, KickOffTime, Volledige naam, Wachtwoord LastSet, Wachtwoord kan wijzigen Vlag, Wachtwoord moet vlag wijzigen, Gebruikersscript, Profielpad, Startmap en Ongeldig aantal wachtwoorden.
Als er geen account wordt gevonden in het vertrouwde domein, moet het besturingssysteem het lokale gastaccount gebruiken om consistent gedrag voor verificatie op de server te garanderen.
Zie Het Lsass.exe-proces reageert mogelijk niet meer als u veel externe vertrouwensrelaties hebt op een Active Directory-domeincontroller voor meer informatie over het beperken van het opzoeken en aanmelden van geïsoleerde namen in vertrouwde domeinen met behulp van de registervermeldingen LsaLookupRestrictIsolatedNameLevel en NeverPing. Daarnaast is er een hotfix beschikbaar waarmee logboekregistratie wordt uitgebreid om geïsoleerde aanvragen voor naamzoekopdrachten in Windows Server 2008 SP2 te identificeren.
- Gastaccounts in vertrouwde domeinen zijn nooit beschikbaar.
- Het daadwerkelijke interne proces is complexer dan de algoritmen die hier worden beschreven.
- Deze algoritmen bespreken niet de werkelijke mechanismen van passthrough-verificatie. Zie NTLM-gebruikersverificatie in Windows voor meer informatie.
- Deze algoritmen bespreken niet het wachtwoordversleutelingsproces dat wordt gebruikt in Windows. Een binair groot object (BLOB) dat is afgeleid van een wachtwoordhash in één richting, wordt verzonden als onderdeel van de verificatieaanvraag. De inhoud van deze BLOB is afhankelijk van het verificatieprotocol dat is gekozen voor de aanmelding.
- In dit artikel worden de interne werkingen van de Microsoft Authentication Module niet besproken.
- Bij deze algoritmen wordt ervan uitgegaan dat het gastaccount, indien ingeschakeld, geen wachtwoord heeft. Standaard heeft het gastaccount geen wachtwoord in Windows. Als er een wachtwoord voor een gastaccount is opgegeven, moet het gebruikerswachtwoord dat in de SMB wordt verzonden, overeenkomen met het wachtwoord van het gastaccount.
Voorbeelden
Hier volgen voorbeelden van deze algoritmen in actie.
Voorbeeld 1
U bent aangemeld bij de computer met dezelfde accountnaam en hetzelfde wachtwoord als in de domeinaccountdatabase contoso-domein. Wanneer u de NET USE \\CONTOSO
opdracht uitvoert voor de domeincontroller voor het domein CONTOSO-DOMAIN, wordt de opdracht voltooid. Wanneer u de NET USE \\NET
opdracht uitvoert voor de domeincontroller die het domein CONTOSO-DOMAIN vertrouwt, ontvangt u het volgende foutbericht:
Systeemfout 1326 is opgetreden. Aanmeldingsfout: onbekende gebruikersnaam of slecht wachtwoord.
Het account \CONTOSO-DOMAIN\USER1 heeft machtigingen voor \\NET.
Notitie
In dit voorbeeld wordt uitgegaan van de volgende configuraties.
Configuraties
Computer met een lokale beveiligingsinstantie:
- Aanmeldingsaccount: USER1
- Wachtwoord: PSW1
- Aanmeldingsdomein: LOCAL1
Active Directory-domeincontroller:
-Servernaam: NET
-Domein: NET-DOMAIN
-Trust: NET-DOMAIN Trust CONTOSO-DOMAIN (daarom,
accounts op CONTOSO-DOMAIN kunnen machtigingen krijgen
in het NET-DOMEIN).
Het DOMEIN NET-DOMEIN:
- De domeinaccountdatabase voor het DOMEIN NET-DOMEIN bevat geen account voor USER1.
- Het gastaccount is uitgeschakeld.
Het domein CONTOSO-DOMAIN:
- Servernaam: CONTOSO
- Domein: CONTOSO-DOMAIN
- Domeindatabase bevat account: USER1
- Domeindatabase bevat wachtwoord: PSW1
In dit voorbeeld wordt de computer aangemeld bij het lokale domein, niet het domein CONTOSO-DOMAIN waar het domeinaccount van de computer zich bevindt.
Voorbeeld 2
Wanneer u de NET USE x: \\NET\share
opdracht uitvoert, worden de volgende stappen uitgevoerd:
De computer verzendt het volgende in de SMB -sessieconfiguratie:
- account = "USER1"
- password = "PSW1"
- domein = "LOCAL1"
De \\NET-server ontvangt de SMB en bekijkt de accountnaam.
De server onderzoekt de lokale domeinaccountdatabase en vindt geen overeenkomst.
De server onderzoekt vervolgens de SMB-domeinnaam.
De server vertrouwt 'LOCAL1' niet, zodat de server de vertrouwde domeinen niet controleert.
De server controleert vervolgens het gastaccount.
Het gastaccount is uitgeschakeld, zodat de systeemfout 1326 is opgetreden. Aanmeldingsfout: onbekende gebruikersnaam of ongeldig wachtwoord.' foutbericht wordt gegenereerd.
Voorbeeld 3
Wanneer u de NET USE x: \\CONTOSO\share
opdracht uitvoert, worden de volgende stappen uitgevoerd:
De computer verzendt het volgende in de SMB -sessieconfiguratie:
- account = "USER1"
- password = "PSW1"
- domein = "LOCAL1"
De \\CONTOSO-server ontvangt de SMB en onderzoekt de accountnaam.
De server onderzoekt de lokale domeinaccountdatabase en zoekt een overeenkomst.
De server vergelijkt vervolgens het SMB-wachtwoord met het wachtwoord van het domeinaccount.
De wachtwoorden komen overeen.
Daarom wordt het bericht 'Opdracht voltooid' gegenereerd. In voorbeeld 2 en voorbeeld 3 is de vertrouwensrelatie niet beschikbaar. Als de computer is aangemeld bij het domein CONTOSO-DOMAIN, zou de NET USE x: \\NET\share
opdracht zijn geslaagd.
De ideale oplossing is om alle computers zich aan te melden bij een domein. Als u zich wilt aanmelden, moet de gebruiker het domein, het account en het wachtwoord opgeven. Nadat u dit hebt uitgevoerd, geven alle OPDRACHTEN VAN NET USE -type de juiste domein-, account- en wachtwoordgegevens door. Beheerders moeten proberen dubbele accounts op zowel computers als meerdere domeinen te voorkomen. Windows helpt deze configuratie te voorkomen door vertrouwensrelaties tussen domeinen te gebruiken en door leden te gebruiken die domeindatabases kunnen gebruiken.
Tijdelijke oplossing
Er is één tijdelijke oplossing die in deze gevallen kan worden gebruikt. Vanaf de computer kunt u de volgende opdracht uitvoeren:
NET USE X: \\NET\SHARE /USER:CONTOSO-DOMAIN\USER1 PSW1
In deze opdracht is het volgende waar:
- \\NET = De computernaam van de domeincontroller die wordt geopend.
- \SHARE = De naam van de share.
- /USER: opdrachtregelparameter waarmee u het domein, account en wachtwoord kunt opgeven dat moet worden opgegeven in de SMB voor sessie-installatie.
- CONTOSO-DOMAIN = Domeinnaam van het domein waarin het gebruikersaccount zich bevindt.
- \USER1 = account dat moet worden gevalideerd.
- PSW1 = wachtwoord dat overeenkomt met het account in het domein.
Typ het volgende bij de opdrachtprompt voor meer informatie over deze opdracht:
NET USE /?
NULL-domeinnamen
De Microsoft SMB-client die is opgenomen in Windows, verzendt NULL-domeinnamen in de SMB -sessie-installatie [x73]' SMB. De Microsoft SMB-client verwerkt de domeinnaam door de aanmeldingsdomeinnaam op te geven en door een NULL-teken te verzenden als de domeinnaam niet is opgegeven in de NET USE-opdracht. De Microsoft SMB-client vertoont ook het gedrag dat wordt beschreven in voorbeeld 1.
Notitie
Er zijn meestal twee representaties voor 'NULL' in de SMB: een domeinnaam met lengte nul en een een-bytedomeinnaam die bestaat uit het vraagteken (?). De SMB-server onderschept het vraagteken en vertaalt het naar NULL voordat deze wordt doorgegeven aan de lokale beveiligingsinstantie (LSA).
Probleemoplossing
Een goede tip voor het oplossen van problemen met netwerktoegang is het inschakelen van controle door het volgende te doen.
Windows-domeincontrollers
- Start Active Directory vanuit de systeembeheerprogramma's op een domeincontroller.
- Klik met de rechtermuisknop op OE voor domeincontrollers en klik vervolgens op Eigenschappen.
- Dubbelklik op het tabblad Groepsbeleid op Standaarddomeincontrollerbeleid.
- Klik in de beleidseditor op Computerinstellingen, klik op Windows-instellingen, klik op Beveiligingsinstellingen, klik op Geavanceerde controlebeleidsconfiguratie en klik vervolgens op Accountaanmelding.
- Selecteer de optie Validatie van referenties controleren en de optie Fout .
Domeininstellingen voor Windows 2000
- Start Active Directory vanuit de systeembeheerprogramma's op een domeincontroller.
- Klik met de rechtermuisknop op de domeinnaam en klik vervolgens op Eigenschappen.
- Dubbelklik op het tabblad Groepsbeleid op Standaarddomeinbeleid.
- Klik in de beleidseditor op Computerinstellingen, klik op Windows-instellingen, klik op Beveiligingsinstellingen, klik op Geavanceerde controlebeleidsconfiguratie en klik vervolgens op Accountaanmelding.
- Selecteer de optie Validatie van referenties controleren en de optie Fout .
Lokale instellingen voor Windows 2000-servers en -leden
- Start lokaal beveiligingsbeleid vanuit de systeembeheerprogramma's.
- Open Advanced Audit Policy Configuration – Local Group Policy Object.
- Selecteer Accountaanmelding en vervolgens de optie Referentievalidatie controleren en de optie Fout .
- Wanneer een netwerkgebruiker deze server op afstand opent, wordt er nu een audittrail geregistreerd Logboeken. Als u deze gebeurtenissen in Logboeken wilt zien, klikt u in het menu Logboek op Beveiliging.
Zie het technische overzicht van Windows Server 2003-beveiligingsservices voor meer informatie over vertrouwensrelaties, passthrough-verificatie, gebruikersmachtigingen en domeinaanmelding.