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 :
- Pour reset le password krbtgt : Reset-KrbTgt-Password-For-RWDCs-And-RODCs.ps1
- Pour checker les services AD : active-directory-health-check-v2/
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.
- Pour checker les services AD : active-directory-health-check-v2/
(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
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
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.
Une fois terminé, surveiller la réplication de vos serveurs AD : https://pixelabs.fr/active-directory-dcdiag-avec-centreon-nsclient/
Le script lancé depuis un serveur Active Directory.