AD-authenticatie gebruikt twee hoofdprotocollen: Kerberos en NTLM
NTLM
Het certificeringsproces verloopt als volgt:
- De client genereert lokaal een NTLM-hash, en de waarde is de hashwaarde van het wachtwoord van de gebruiker.
- De client stuurt de gebruikersnaam naar de applicatieserver.
- De applicatieserver genereert een willekeurige waarde voor de client, die meestal nonce of challenge wordt genoemd.
- client versleutelt de nonce met NTLM-hash en stuurt deze naar de applicatieserver.
- Na ontvangst stuurt de applicatieserver deze naar de AD-server samen met de gebruikersnaam en nonce.
- AD genereert een NTLM-hash op basis van het wachtwoord van de gebruiker, versleutelt de nonce en vergelijkt vervolgens het bericht van de client.
- Als de waarden hetzelfde zijn, slaagt de authenticatie, en als ze verschillen, faalt de authenticatie.
Kerberos
Belangrijke termen:
- KDC: Key Distribution Center, dat twee diensten aanbiedt: Authentication Service (AS) en Ticket-Granting Service (TGS). Het domein genereert een domeinaccount genaamd krbtgt voor KDC, en TGT gebruikt het wachtwoord voor versleuteling en ontsleuteling. Wanneer een domeingebruiker voor het eerst toegang krijgt, wil hij dat de AS authenticeert, en na het passeren vraagt de AS om TGS om een ticket (TGT) aan de domeingebruiker te verstrekken.
- SPN: Naam van diensthoofd. Naast gebruikersaccounts hebben AD-accounts ook service-accounts. De applicatie heeft ook een serviceaccount gekoppeld, waardoor de applicatie toegang krijgt tot serverbronnen, zoals Exchange, SQL, IIS, enzovoort. SPN is een dienst die wordt gebruikt om de service, ingeschakeld door de applicatie, te koppelen aan het serviceaccount in AD.
Certificeringsproces:
1. Wanneer een domeingebruiker inlogt, wordt een AS-verzoek (AS_REQ) naar de DC gestuurd, dat een versleutelde tijdstempel bevat die is versleuteld met de wachtwoordhash en gebruikersnaam van de gebruiker.
2. Na ontvangst van het verzoek gebruikt de DC de gebruikersnaam- en wachtwoordhash van de gebruiker om het te ontsleutelen. De DC geeft een AS-antwoord (AS_REP) aan de client, inclusief een sessiesleutel en een TGT (Ticket Granting Ticket). De sessiesleutel is versleuteld met de wachtwoordhash van de gebruiker. De TGT bevat het groepslidmaatschap, domein, tijdstempel, client IP en sessiesleutel. TGT is ook versleuteld, versleuteld met het wachtwoord van het KDC-serviceaccount, en de client kan het niet ontsleutelen. (TGT is standaard 10 uur geldig, en updates die daarna plaatsvinden vereisen niet dat de gebruiker het wachtwoord opnieuw invoert)
3. Wanneer een gebruiker een resource in het domein aanvraagt, wordt een Ticket Granting Service Request (TGS_REQ) verzonden, inclusief de gebruikersnaam, tijdstempel, TGT en SPN. Tijdstempels en gebruikersnamen worden versleuteld met een sessiesleutel.
4. Na ontvangst van het verzoek bepaalt de KDC eerst of er een SPN in het verzoek zit, ontsleutelt vervolgens de TGT, haalt de sessiesleutel en de tijdstempel uit TGT, en gebruikt de sessiesleutel in de TGT om de versleutelde gebruikersnaam en tijdstempel te ontsleutelen. Voer verschillende controles uit:
(1) De tijdstempel die door TGT wordt ontsleuteld, moet geldig zijn. (Als er een herhalingsaanval plaatsvindt, is de tijdstempel ongeldig.) )
(2) Of de gebruikersnaam in de TGT overeenkomt met de gebruikersnaam in het verzoek.
(3) Of het IP-adres in de TGT hetzelfde is als het IP-adres in het verzoek.
De check zal reageren op de Ticket Granting ServiceReply(TGS_REP) van de client, die de geautoriseerde toegang van de SPN bevat, de nieuwe sessiesleutel die wordt gebruikt voor toegang tussen de client en de SPN, en het nieuwe Service Ticket serviceticket (inclusief de nieuwe sessiesleutel, gebruikersnaam en gebruikersgroep). Zowel de geautoriseerde SPN als de sessiesleutel die toegang geeft tot de SPN zijn versleuteld met de sessiesleutel in TGT. Het serviceticket wordt versleuteld met het wachtwoord van het bijbehorende SPN-serviceaccount.
1. Na het bovenstaande proces heeft de gebruiker de sessiesleutel en het serviceticket verkregen dat betrekking heeft op de applicatieservice. De gebruiker stuurt een Application Request (AP_REQ) naar de applicatieservice, die de gebruikersnaam en tijdstempel bevat en is versleuteld met een sessiesleutel.
2. De applicatieservice gebruikt de wachtwoordhash van het serviceaccount om het serviceticket te ontsleutelen en de gebruikers-, gebruikersgroep en sessiesleutel te extraheren. Decrypteer de gebruikersnaam en tijdstempel in de AP_REQ met de ontsleutelde sessiesleutel. AP_REQ Als dat zo is, wordt het verzoek geaccepteerd en wijst de applicatieservice rechten toe op basis van de gebruikersgroepinformatie in het serviceticket, waarna de gebruiker toegang krijgt tot de gevraagde dienst.
Origineel adres:De hyperlink-login is zichtbaar.
|