Autentificarea AD folosește două protocoale principale: Kerberos și NTLM
NTLM
Procesul de certificare este următorul:
- Clientul generează un hash NTLM local, iar valoarea este hash-ul parolei utilizatorului.
- clientul trimite numele de utilizator către serverul de aplicații.
- Serverul de aplicații generează o valoare aleatorie pentru client, care este de obicei numită nonce sau challenge.
- clientul criptează nonce-ul cu hash NTLM și îl trimite către serverul de aplicații.
- După primirea acestuia, serverul aplicației îl trimite către serverul AD împreună cu numele de utilizator și nonce-ul.
- AD generează un hash NTLM bazat pe parola utilizatorului, criptează nonce-ul și apoi compară mesajul clientului.
- Dacă valorile sunt aceleași, autentificarea trece, iar dacă sunt diferite, autentificarea eșuează.
Kerberos
Termeni cheie:
- KDC: Centrul de Distribuție a Cheilor, care oferă două servicii: Serviciul de Autentificare (AS) și Serviciul de Acordare a Bilete (TGS). Domeniul generează un cont de domeniu numit krbtgt pentru KDC, iar TGT folosește parola pentru criptare și decriptare. Când un utilizator de domeniu accesează pentru prima dată, dorește ca AS-ul să se autentifice, iar după ce a trecut, AS-ul solicită TGS să furnizeze un tichet (TGT) utilizatorului domeniului.
- SPN: Nume principal al serviciului。 Pe lângă conturile de utilizator, conturile AD au și conturi de serviciu. Aplicația va avea, de asemenea, un cont de serviciu asociat, care va facilita accesarea resurselor serverului, cum ar fi Exchange, SQL, IIS etc. SPN este un serviciu folosit pentru a asocia serviciul, activat de aplicație, cu contul de serviciu din AD.
Procesul de certificare:
1. Când un utilizator de domeniu se autentifică, o cerere AS (AS_REQ) este trimisă către DC, care conține un timestamp criptat criptat cu hash-ul parolei și numele de utilizator al utilizatorului.
2. După primirea cererii, DC-ul folosește hash-ul numelui de utilizator și parola utilizatorului pentru a o decripta. DC-ul răspunde la un răspuns AS (AS_REP) către client, care include o cheie de sesiune și un TGT (Ticket Granting Ticket). Cheia de sesiune este criptată cu hash-ul parolei utilizatorului. TGT-ul conține apartenența la grup, domeniul, timestamp-ul, IP-ul clientului și cheia de sesiune. TGT este, de asemenea, criptat, criptat cu parola contului de serviciu KDC, iar clientul nu poate decripta acest lucru. (TGT este valabil 10 ore în mod implicit, iar actualizările care apar ulterior nu necesită ca utilizatorul să reintroducă parola)
3. Când un utilizator solicită o resursă în domeniu, este trimisă o Cerere de Serviciu de Acordare a Tichetelor (TGS_REQ), care include numele de utilizator, timestamp, TGT și SPN. Timestamp-urile și numele de utilizator sunt criptate cu o cheie de sesiune.
4. După primirea cererii, KDC determină mai întâi dacă există un SPN în cerere, apoi decriptează TGT-ul, extrage cheia de sesiune și timestamp-ul din TGT și folosește cheia de sesiune din TGT pentru a decripta numele de utilizator și timestamp-ul criptat. Efectuează mai multe verificări:
(1) Marca temporală decriptată de TGT trebuie să fie validă. (Dacă are loc un atac de reluare, timestamp-ul este invalid.) )
(2) Dacă numele de utilizator din TGT este compatibil cu numele de utilizator din cerere.
(3) Dacă adresa IP din TGT este aceeași cu adresa IP din cerere.
Checul va răspunde la ServiceReply (TGS_REP) de acordare a tichetului clientului, care conține accesul autorizat SPN, noua cheie de sesiune folosită pentru accesul între client și SPN și noul tichet de serviciu Service Ticket (inclusiv noua cheie de sesiune, numele de utilizator și grupul de utilizatori). Atât SPN-ul autorizat, cât și cheia de sesiune care accesează SPN-ul sunt criptate cu cheia de sesiune în TGT. Tichetul de serviciu este criptat cu parola contului de serviciu SPN corespunzător.
1. După procesul de mai sus, utilizatorul a obținut cheia de sesiune și tichetul de serviciu aferent serviciului aplicației. Utilizatorul trimite o Cerere de Aplicație (AP_REQ) către serviciul de aplicație, care conține numele de utilizator și marca de timp și este criptată cu o cheie de sesiune.
2. Serviciul aplicației folosește hash-ul parolei contului de serviciu pentru a decripta tichetul de serviciu și a extrage utilizatorul, grupul de utilizatori și cheia de sesiune. Decriptează numele de utilizator și timestamp-ul în AP_REQ cu cheia de sesiune decriptată. AP_REQ Dacă da, cererea este acceptată, iar serviciul de aplicație atribuie permisiuni pe baza informațiilor grupului de utilizatori din tichetul de serviciu, iar apoi utilizatorul poate accesa serviciul solicitat.
Adresa originală:Autentificarea cu hyperlink este vizibilă.
|