Kerberos

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Authentification réseau (protocole)
Protocole Kerberos
Contexte Protocole d'authentification par défaut d'Active Directory
Voir aussi W32tm (synchronisation horaire, critique pour Kerberos)

Kerberos est le protocole d'authentification réseau utilisé par défaut dans un domaine Active Directory (NTLM restant disponible en repli pour la compatibilité avec des clients plus anciens ou hors domaine). Il repose sur un tiers de confiance, le KDC (Key Distribution Center), et des tickets à durée de vie limitée plutôt que sur la transmission répétée d'un mot de passe.

Déroulement de l'authentification

  1. Le client envoie une demande d'authentification au KDC (Key Distribution Center), plus précisément à son module AS (Authentication Server).
  2. L'AS répond en délivrant un TGT (Ticket Granting Ticket) si les identifiants sont valides.
  3. Le client présente ce TGT au TGS (Ticket Granting Server, l'autre module du KDC) pour obtenir un ticket de service spécifique à l'application ciblée.
  4. Le TGS délivre ce ticket de service.
  5. Le client présente ce ticket de service directement au serveur d'application visé, qui valide l'accès sans repasser par le KDC.

Chaque ticket a une durée de vie limitée (par défaut 10 heures pour le TGT sous Active Directory), ce qui limite la fenêtre d'exploitation si un ticket venait à être compromis.

Pourquoi l'heure système compte autant

Kerberos rejette une authentification si l'écart d'horloge entre le client et le KDC dépasse une tolérance par défaut de 5 minutes — une dérive d'horloge, même légère, casse l'authentification Kerberos sans lien évident avec sa cause réelle. Voir W32tm pour la synchronisation NTP, point de vigilance n°1 en cas d'échecs d'authentification inexpliqués sur un domaine.

Diagnostic

Les échecs Kerberos les plus fréquents en pratique : dérive d'horloge (voir ci-dessus), DNS mal résolu empêchant de localiser le KDC (voir Nslookup/Dcdiag), ou SPN (Service Principal Name) mal enregistré pour un service applicatif.

Voir aussi