Changer le mot de passe du compte KRBTGT

Hello, nous allons voir comment changer le mot de passe du compte krbtgt avec un script powershell. En règle général, il faut changer le mot de passe de ce compte une fois tous les 6 mois.

le compte krbtgt est un compte système spécial dans Active Directory qui est utilisé pour stocker les clés de chiffrement Kerberos et générer des clés de session uniques pour chaque utilisateur du domaine. Ce compte est crucial pour la sécurité des communications réseau et doit être protégé de manière appropriée pour éviter toute violation de la sécurité du domaine Active Directory. Le compte est désactivé par défaut.

Comment changer le mot de passe proprement ?

  • Step 1 : Vérifier d’abord la réplication de vos serveurs AD si tout va bien (sinon ce n’est pas la peine, corrigez d’abord)
  • Step 2 : Changer le mot de passe une fois
  • Step 3 : Attendre au moins 10h et vérifier toujours la réplication de vos DCs
  • Step 4 : Changer le mot de passe une 2eme fois
  • Step 5 : Vérifier, vérifier, vérifier…. =)

Scripts PowerShell :

Reset_krbtgt_password

Pour checker le compte krbtgt.

Get-ADUser krbtgt -Property * | select Name,Enabled,Created,PasswordLastSet

Name     Enabled   Created     PasswordLastSet
----     -------   -------     ---------------
krbtgt   False     20/06/2005  12:23:30 14/03/2023 08:39:04

2eme changement fait ce jour pour mon cas (14/03/2023)

Vérifier la réplication de vos serveurs AD

Pour vérifier la réplication de vos ADs

Repadmin /showreps

Mais, je vous propose un script pour chercker l’ensemble des services AD que vous pouvez mettre en tâche planifiée. Télécharger le script.

(facultatif = Ouvrir le script avec un éditeur comme notepad++ et entrez les infos smtp pour recevoir le rapport par mail).

###############################Paramters####################################

$Smtphost = "smtp.pixel.lan"
$from = "AD-Health@pixel.fr"
$EmailReport= "pixelabs@pixel.fr"
$timeout = "60"

###########################Define Variables##################################

Lancer le script :

PS C:\Users\pixelabs\Desktop\Scripts> .\ADHealthCheckV2.ps1
sys-ad01.pixel.lan          sys-ad01.pixel.lan         Ping Success

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
417    Job417          BackgroundJob   Completed     True            localhost            get-service -ComputerN...
sys-ad1.pixel.lan          Netlogon        Running
419    Job419          BackgroundJob   Completed     True            localhost            get-service -ComputerN...
sys-ad01.pixel.lan          NTDS    Running
421    Job421          BackgroundJob   Completed     True            localhost            get-service -ComputerN...
sys-ad01.pixel.lan          DNS     Running
423    Job423          BackgroundJob   Completed     True            localhost            dcdiag /test:netlogons...
sys-ad01.pixel.lan          Netlogons Test passed
425    Job425          BackgroundJob   Completed     True            localhost            dcdiag /test:Replicati...
sys-ad01.pixel.lan          Replications Test passed
427    Job427          BackgroundJob   Completed     True            localhost            dcdiag /test:Services ...
sys-ad01.pixel.lan          Services Test passed
429    Job429          BackgroundJob   Completed     True            localhost            dcdiag /test:Advertisi...
sys-ad01.pixel.lan          Advertising Test passed
431    Job431          BackgroundJob   Completed     True            localhost            dcdiag /test:FSMOCheck...
sys-ad01.pixel.lan          FSMOCheck Test passed
...
...etc

Vous allez recevoir par mail ce rapport

Check_AD_health

Si jamais vous avez une alerte rouge pour le sysvol, il faut adapter le script en français.

Exemple :

  • ligne 230
  • ligne 255
  • ligne 281
  • ligne 307
  • ligne 333
 if($cmp::instr($sysvol1, "ussi"))

Changer le mot de passe KRBTGT

Le script PowerShell pour changer le mot de passe est hyper bien foutu. En effet, vous pouvez effectuer une simulation avec un compte de TEST krbtgt ou un simulation avec le compte réel.

Il contient donc plusieurs modes qu’il faut lire absolument avant de commencer 🙂

Lancer le script.

.\Reset-KrbTgt-Password-For-RWDCs-And-RODCs.ps1

Reset_krbtgt_password

Tapez « YES » et lisez absolument tous ce que le script raconte.

Attention, je suis nul en anglais =)

Mode 1:

* Il peut être exécuté en toute sécurité à tout moment, car il n’y a aucun changement !
* Analyse l’environnement et vérifie les problèmes qui peuvent avoir un impact sur les modes 2, 3 ou 4 !
* Pour le domaine AD ciblé, il récupère toujours tous les RWDC, et tous les RODC le cas échéant.

Mode 2:

* Exécute également tout ce qui se fait en mode 1 !
* Crée un objet temporaire et vérifie s’il existe dans la base de données AD des DC distants (RWDC/RODC).
* Lors de la simulation du compte KrbTgt pour les RODC, la création de l’objet se fait contre le RWDC à partir duquel le RODC se réplique s’il est disponible. Si ce n’est pas le cas, la création se fait contre le RWDC avec le rôle PDC Emulator FSMO. Dans tous les cas, l’opération ‘répliquer un objet unique’ est suivie sur le RODC. C’est une façon d’estimer le temps total de réplication pour le mode 4.
* Si un contrôleur de domaine distant (RWDC/RODC) n’est pas disponible ou ne peut pas être atteint, il n’y aura pas de vérification de sa base de données AD pour déterminer si le changement apporté y est parvenu ou non.
* Lors de l’exécution de l’opération ‘répliquer un objet unique’, elle se fera toujours pour l’objet complet, qu’il s’agisse d’un RWDC ou d’un RODC distant.

Mode 3:

* Exécute également tout ce qui est prévu dans le mode 1 !
* Au lieu d’utiliser le vrai compte KrbTgt, il utilise des comptes KrbTgt TEST pré-créés pour la réinitialisation de mot de passe whatif !
* Pour les RWDC, il utilise le compte KrbTgt TEST krbtgt_TEST’ (tous les RWDC) (= créé lors de l’exécution du mode 8)
* Pour les RODC, il utilise le compte KrbTgt TEST  ‘krbtgt_<valeur numérique>_TEST’ (spécifique au RODC) (= créé lors de l’exécution du mode 8)
* IL NE réinitialise PAS le mot de passe du ou des comptes KrbTgt TEST/BOGUS et vérifiera si la valeur de la dernière réinitialisation du mot de passe dans la base de données AD du contrôleur de domaine distant (RWDC/RODC) correspond à la valeur de la dernière réinitialisation du mot de passe dans la base de données AD du RWDC source d’origine.
* Si un contrôleur de domaine distant (RWDC/RODC) n’est pas disponible ou ne peut pas être atteint, il n’y aura pas de vérification de sa base de données AD pour déterminer si le changement apporté y est parvenu ou non.

Mode 4:

* Exécute également tout ce qui est dans le mode 1 !
* Au lieu d’utiliser le vrai compte KrbTgt, il utilise le compte KrbTgt TEST pré-créés pour la réinitialisation de mot de passe !
* Pour les RWDC, il utilise le compte KrbTgt TEST ‘krbtgt_TEST’ (tous les RWDC) (= Créé lors de l’exécution du mode 8)
* Pour les RODC, il utilise le compte KrbTgt TEST ‘krbtgt_<Valeur Numérique>_TEST’ (spécifique aux RODC) (= Créé lors de l’exécution du mode 8)
* Réinitialise le mot de passe des comptes KrbTgt TEST, et vérifiera si la valeur de la dernière modification de mot de passe dans la base de données AD des DC distants (RWDC/RODC) correspond à la valeur de la dernière modification de mot de passe dans la base de données AD du RWDC source d’origine.
* Lors de la simulation du compte KrbTgt pour les RWDC, la réinitialisation de mot de passe est effectuée pour le compte KrbTgt TEST contre le RWDC avec le PDC Emulator FSMO, suivie de l’opération ‘répliquer un seul objet’ contre tous les RWDC disponibles/accessibles. Aucun RODC n’est impliqué car ceux-ci n’utilisent pas le compte KrbTgt utilisé par les RWDC et ne stockent/pas en cache son mot de passe. C’est une façon d’estimer le temps total de réplication pour le mode 6.
* Lors de la simulation du compte KrbTgt pour les RODC, la réinitialisation de mot de passe est effectuée pour les comptes KrbTgt TEST contre le RWDC à partir duquel le RODC se réplique s’il est disponible/accessibles. Si ce n’est pas disponible, la réinitialisation du mot de passe est effectuée contre le RWDC avec le PDC Emulator FSMO. Dans tous les cas, elle est suivie de l’opération ‘répliquer un seul objet’ contre le RODC qui utilise ce compte KrbTgt. Seul le RODC qui utilise le compte KrbTgt spécifique est vérifié pour voir si le changement lui est parvenu, mais seulement s’il est disponible/accessibles. C’est une façon d’estimer le temps total de réplication pour le mode 6.
*Si un DC distant (RWDC/RODC) n’est pas disponible ou ne peut pas être atteint, il n’y aura pas de vérification dans sa base de données AD pour déterminer si le changement a été effectué ou non.
*Lors de l’exécution de l’opération ‘répliquer un seul objet’, elle sera toujours effectuée pour l’objet complet si le DC cible est un RWDC. Si le DC cible est un RODC, alors elle sera effectuée pour l’objet partiel (seulement les secrets).

Mode 5:

* Exécute également tout ce qui se trouve dans le mode 1 !
* Maintenant, il utilise le VRAI compte de PROD KrbTgt pour la réinitialisation des mots de passe en mode whatif !
* Pour les RWDC, il utilise le compte KrbTgt PROD/REAL ‘krbtgt’ (tous les RWDC) (= créé lors de l’exécution du mode 8)
* Pour les RODC, il utilise le compte KrbTgt PROD/REAL ‘krbtgt_<valeur numérique>’ (spécifique à RODC) (= créé lors de l’exécution du mode 8)
* IL NE réinitialise PAS le mot de passe des comptes PROD/REAL KrbTgt et vérifiera si la valeur du dernier mot de passe défini dans la base de données AD du DC distant (RWDC/RODC) correspond à la valeur du dernier mot de passe défini dans la base de données AD du RWDC d’origine source.
* Si un DC distant (RWDC/RODC) n’est pas disponible ou ne peut pas être atteint, il n’y aura pas de vérification contre sa base de données AD pour déterminer si le changement effectué a été atteint ou non.

Mode 6: Le mot de passe du vrai compte sera réinitialisé.

* Exécute également tout depuis le mode 1 !
* Maintenant, il utilise le vrai compte PROD KrbTgt pour la réinitialisation de mot de passe !
* Pour les RWDC, il utilise le compte KrbTgt PROD ‘krbtgt’ (tous les RWDC)
* Pour les RODC, il utilise le compte KrbTgt PROD ‘krbtgt_<valeur numérique>’ (spécifique au RODC)
* Réinitialise le mot de passe du compte PROD KrbTgt et vérifie si la valeur du dernier mot de passe défini dans la base de données AD du DC distant (RWDC/RODC) correspond à la valeur du dernier mot de passe défini dans la base de données AD du RWDC source d’origine.
* Lors de la simulation du compte KrbTgt pour les RWDC, la réinitialisation du mot de passe est effectuée pour le(s) compte(s) PROD KrbTgt contre le RWDC avec l’émulateur PDC FSMO suivi de l’opération « répliquer un objet unique » contre chaque RWDC disponible/accessible. Aucun RODC n’est impliqué car ceux-ci n’utilisent pas le compte KrbTgt utilisé par les RWDC et ne stockent/pas en cache son mot de passe. Une fois la réplication terminée, le temps d’impact total sera affiché.
* Lors de la simulation du compte KrbTgt pour les RODCs, la réinitialisation du mot de passe est effectuée pour le(s) compte(s) PROD/REAL KrbTgt contre le RWDC à partir duquel le RODC est en train de répliquer, s’il est disponible/accessible. Si ce n’est pas disponible, la réinitialisation du mot de passe est effectuée contre le RWDC avec l’émulateur PDC FSMO. Dans les deux cas, cela est suivi de l’opération « répliquer un objet unique » contre le RODC qui utilise ce compte KrbTgt. Seul le RODC qui utilise le compte KrbTgt spécifique est vérifié pour voir si le changement est arrivé, mais seulement s’il est disponible/accessible. Une fois la réplication terminée, le temps d’impact total sera affiché.
* Si un DC distant (RWDC/RODC) n’est pas disponible ou ne peut pas être atteint, il n’y aura pas de vérification de sa base de données AD pour déterminer si le changement effectué y est parvenu ou non.
* Lors de l’opération « répliquer un objet unique », elle se fera toujours pour l’objet complet si le DC cible est un RWDC. Si le DC cible est un RODC, elle se fera pour l’objet partiel (seulement les secrets).

  • Mode 8: crée les objets nécessaires pour les tests et simulation.
  • Mode 9: Supprimes ces objets .

Et quand vous êtes pret, lancer le mode 6 pour reset le password. Attendez environs 10h/12h et répétez l’opération pour le reset encore une 2eme fois.

Reset_krbtgt_password_mode

Une fois terminé, surveiller la réplication de vos serveurs AD : /active-directory-dcdiag-avec-centreon-nsclient/

Le script lancé depuis un serveur Active Directory.

Laisser un commentaire