AD-Authentifizierung verwendet zwei Hauptprotokolle: Kerberos und NTLM
NTLM
Der Zertifizierungsprozess verläuft wie folgt:
- Der Client erzeugt lokal einen NTLM-Hash, und der Wert ist der Hashwert des Passworts des Benutzers.
- Der Client sendet den Benutzernamen an den Anwendungsserver.
- Der Anwendungsserver erzeugt einen Zufallswert für den Client, der üblicherweise als Nonce oder Herausforderung bezeichnet wird.
- Der Client verschlüsselt den Nonce mit NTLM-Hash und sendet ihn an den Anwendungsserver.
- Nach Erhalt sendet der Anwendungsserver ihn zusammen mit Benutzernamen und Nonce an den AD-Server.
- AD erzeugt einen NTLM-Hash basierend auf dem Passwort des Benutzers, verschlüsselt den Nonce und vergleicht dann die Nachricht des Clients.
- Wenn die Werte gleich sind, besteht die Authentifizierung, und wenn sie unterschiedlich sind, scheitert die Authentifizierung.
Kerberos
Schlüsselbegriffe:
- KDC: Key Distribution Center, das zwei Dienste anbietet: Authentication Service (AS) und Ticket-Granting Service (TGS). Die Domain erstellt ein Domänenkonto namens krbtgt für KDC, und TGT verwendet das Passwort für Verschlüsselung und Entschlüsselung. Wenn ein Domänenbenutzer zum ersten Mal zugrifft, möchte er, dass sich das AS authentifiziert, und nach der Weitergabe fordert das AS TGS an, um dem Domainnutzer ein Ticket (TGT) zu stellen.
- SPN:Name des Dienstprinzips。 Zusätzlich zu Benutzerkonten haben AD-Konten auch Servicekonten. Die Anwendung hat außerdem ein Servicekonto zugeordnet, das es der Anwendung ermöglicht, auf Serverressourcen wie Exchange, SQL, IIS usw. zuzugreifen. SPN ist ein Dienst, der verwendet wird, um den von der Anwendung aktivierten Dienst mit dem Dienstkonto in AD zu verknüpfen.
Zertifizierungsprozess:
1. Wenn sich ein Domain-Nutzer anmeldet, wird eine AS-Anfrage (AS_REQ) an den DC gesendet, die einen verschlüsselten Zeitstempel enthält, der mit dem Passwort-Hash und Benutzernamen des Benutzers verschlüsselt ist.
2. Nach Erhalt der Anfrage verwendet der DC den Benutzernamens- und Passworthash des Benutzers, um sie zu entschlüsseln. Der DC antwortet dem Client eine AS-Antwort (AS_REP), die einen Session-Schlüssel und ein TGT (Ticket Granting Ticket) enthält. Der Sitzungsschlüssel wird mit dem Passwort-Hash des Benutzers verschlüsselt. Das TGT enthält die Gruppenmitgliedschaft, Domäne, Zeitstempel, Client-IP und Sitzungsschlüssel. TGT ist ebenfalls verschlüsselt, mit dem Passwort des KDC-Servicekontos verschlüsselt, und der Client kann es nicht entschlüsseln. (TGT ist standardmäßig 10 Stunden gültig, und Updates danach erfordern nicht, dass der Benutzer das Passwort erneut eingibt.)
3. Wenn ein Benutzer eine Ressource in der Domain anfordert, wird eine Ticket Granting Service Request (TGS_REQ) gesendet, einschließlich Benutzername, Zeitstempel, TGT und SPN. Zeitstempel und Benutzernamen werden mit einem Sitzungsschlüssel verschlüsselt.
4. Nach Erhalt der Anfrage stellt der KDC zunächst fest, ob ein SPN in der Anfrage vorhanden ist, entschlüsselt dann das TGT, extrahiert den Sitzungsschlüssel und den Zeitstempel im TGT und verwendet den Sitzungsschlüssel im TGT, um den verschlüsselten Benutzernamen und Zeitstempel zu entschlüsseln. Führen Sie mehrere Prüfungen durch:
(1) Der von TGT entschlüsselte Zeitstempel muss gültig sein. (Wenn ein Wiederholungsangriff auftritt, ist der Zeitstempel ungültig.) )
(2) Ob der Benutzername im TGT mit dem Benutzernamen in der Anfrage übereinstimmt.
(3) Ob die IP-Adresse im TGT mit der IP-Adresse in der Anfrage identisch ist.
Die Prüfung antwortet auf das Ticket Granting ServiceReply(TGS_REP) des Client, das den autorisierten Zugang zu SPN, den neuen Sitzungsschlüssel für den Zugriff zwischen Client und SPN sowie das neue Service-Ticket-Serviceticket (einschließlich des neuen Sitzungsschlüssels, Benutzernamens und Benutzergruppe) enthält. Sowohl das autorisierte SPN als auch der Sitzungsschlüssel, der auf das SPN zugreift, sind mit dem Sitzungsschlüssel in TGT verschlüsselt. Das Serviceticket wird mit dem Passwort des entsprechenden SPN-Servicekontos verschlüsselt.
1. Nach dem oben genannten Prozess hat der Benutzer den Sitzungsschlüssel und das Service-Ticket erhalten, das sich auf den Anwendungsdienst bezieht. Der Benutzer sendet eine Anwendungsanfrage (AP_REQ) an den Anwendungsdienst, die den Benutzernamen und den Zeitstempel enthält und mit einem Sitzungsschlüssel verschlüsselt wird.
2. Der Anwendungsdienst verwendet den Passworthash des Service-Kontos, um das Serviceticket zu entschlüsseln und Benutzer-, Benutzergruppen- und Sessionsschlüssel zu extrahieren. Entschlüsseln Sie den Benutzernamen und den Zeitstempel im AP_REQ mit dem entschlüsselten Sitzungsschlüssel. AP_REQ Wenn ja, wird die Anfrage angenommen, und der Anwendungsdienst weist Berechtigungen basierend auf den Benutzergruppeninformationen im Service-Ticket zu, woraufhin der Benutzer auf den angeforderten Dienst zugreifen kann.
Ursprüngliche Adresse:Der Hyperlink-Login ist sichtbar.
|