Ré-initialisation du mot de passe du compte KRBTGT

Explication et différence en Microsoft-AD et Samba-AD

Le compte krbtgt est un compte critique dans la sécurité du domaine Active Directory. L’emprunte (hash) de ce compte est utilisé pour signer les tickets Kerberos échangé avec les clients.

La compromission des secrets d’authentification du compte krbtgt permet d’avoir le contrôle sur toutes les ressources du domaine. Ce compte doit être changé en cas de compromission de la base de comptes de l’AD.

Il est recommandé de le changer régulièrement (par exemple tous les mois ou tous les deux mois).

Lors d’un changement de mot de passe du compte krbtgt, Microsoft-AD garde en cache l’ancien hash pour permettre de garantir que le changement de mot de passe puisse être répliqué vers l’ensemble des contrôleurs de domaine.

Sur un Microsoft-AD, il est donc nécessaire de faire le changement de mot de passe du compte krbtgt deux fois pour garantir la sécurité si le compte a été compromis. Le délais entre les deux changements de mot de passe est important, car si il est trop court, ça peut poser des soucis de réplication, si il est trop long, ça peut laisser à un attaquant qui a compromis l’AD dans le passer de récupérer à nouveau le nouveau compte krbtgt.

Samba-AD n’implémente actuellement pas la conservation du hash N-1 pour le compte krbtgt (la conservation du hash N-1 n’est appliqué uniquement qu’aux comptes machines). Ceci n’est pas bloquant en pratique car si l’on valide que la réplicatation s’est bien propagée à l’ensemble des DC juste après le changement, les comptes des contrôleurs de domaine sont encore valide et donc les tickets pour la réplication fonctionne toujours.

Le fait que Samba-AD ne stocke pas le hash N-1 fait que les clients Kerberos seront obligé de négocier un nouveau ticket TGT lors de la prochaine demande de Service Ticket. Cela n’est pas un soucis sur les postes Windows qui conserve les identifiants de connexion en mémoire dans le processus lsass.exe, ils peuvent donc renouveller leur TGT sans soucis. Il en est de même pour les processus Winbind des serveurs de fichiers. Les comptes utilisateurs membre du groupe Protected Users auront besoin de renouveller leur TGT manuellement.

En conclusion, dans le cas de Samba-AD, il est nécessaire de faire qu’une seule fois le changement de mot de passe du compte krbtgt pour garantir la confidentialité de celui-ci. Par contre lors du changement, il faut garantir que l’ensemble des DC sont bien joignable et bien répliqué pour garantir une réplication rapide du changement vers tous ces DC.

Script de changement du mot de passe krbtgt

Samba fournit un script dans le code source pour effectuer le changement du mot de passe. Celui ci n’est actuellement pas packagé dans le RPM distribué par TIS. On peut le récupérer dans le tar.gz du code source ou dans le git (prendre la version correspondante à votre release Samba):

wget https://gitlab.com/samba-team/samba/raw/v4-9-stable/source4/scripting/devel/chgkrbtgtpass

Il faut récupérer ce fichier et le recopier sur le contrôleur de domaine avec le rôle PDC

Changement du mot de passe krbtgt sur un Samba-AD

Il est préférable de faire le changement de mot de passe sur la machine qui a le rôle PDC. Avant de faire le changement de mot de passe, on vérifie que la réplication fonctionne avec l’ensemble des DC

samba-tool drs replicate <remote_dc> <pdc_dc> dc=mydomain,dc=lan

Ensuite on lance le script que l’on a récupéré précédement et on le lance

python chgkrbtgtpass

On vérifie que le mot de passe a bien été mis à jour en vérifiant la date de dernière modification

pdbedit -Lv krbtgt

Ensuite on force la réplication sur l’ensemble des DC. En pratique Samba-AD va faire très rapidement des notifications de changment à l’ensemble des DCs, et la réplication aura probablement déjà eu lieu.

samba-tool drs replicate <remote_dc> <pdc_dc> dc=mydomain,dc=lan

Finalement on peut vérifier sur les différents DC que la réplication du compte s’est bien passée

pdbedit -Lv krbtgt