Réinitialisation d'un mot de passe dans Active Directory

Réinitialisation d'un mot de passe dans Active Directory

Suite logique de l'intervention précédente sur l'AD du lab interne ANSSI : sur le même domaine LAB.LOCAL, je rejoue une demande de support classique — réinitialiser le mot de passe de Jean Dupont, déverrouiller son compte et lui transmettre le mot de passe temporaire de manière sûre.
Publié le
Statut
Terminé

Contexte et besoins

Toujours sur l’Active Directory du lab interne ANSSI, domaine LAB.LOCAL, je rejoue le scénario le plus fréquent du support utilisateur : un collaborateur a oublié son mot de passe. Côté procédure, ce ticket arrive par téléphone ou par GLPI, le technicien vérifie l’identité du demandeur, puis réinitialise le mot de passe avec un mot de passe temporaire que l’utilisateur devra changer au premier login.

L’objectif de cette intervention est triple : connaître la manipulation ADUC complète, savoir la rejouer en PowerShell pour scripter, et formaliser le protocole de communication du nouveau mot de passe. Cible : l’utilisateur Jean Dupont créé dans l’article précédent, dont le compte est verrouillé après cinq tentatives ratées de connexion.

Rappel théorique sur l’authentification AD

Cycle de vie d’un mot de passe

Quand un utilisateur ouvre une session, le client négocie un TGT Kerberos auprès du KDC du domaine. Ce TGT est dérivé du hash du mot de passe, jamais du mot de passe en clair : l’AD ne stocke pas le mot de passe lui-même mais son hash (NT-OWF par défaut, c’est-à-dire MD4 du mot de passe Unicode).

Quand on réinitialise un mot de passe avec un compte privilégié, on remplace ce hash par celui du nouveau mot de passe. C’est différent d’un changement classique, qui exige le mot de passe actuel pour être validé.

OpérationPermission requiseEffet
Change PasswordL’utilisateur lui-même, avec l’ancien mot de passeMet à jour le hash, recalcule éventuellement les clés Kerberos
Reset PasswordCompte avec l’extension de droit Reset Password sur l’objet utilisateurForce un nouveau hash sans connaître l’ancien

Verrouillage de compte

Le verrouillage est régi par la Account Lockout Policy du domaine :

  • Account lockout threshold : nombre de tentatives ratées avant verrouillage (5 sur le lab).
  • Account lockout duration : durée du verrouillage automatique (30 minutes).
  • Reset account lockout counter after : délai avant que le compteur de tentatives revienne à zéro (30 minutes aussi).

Côté attribut, c’est lockoutTime qui change. Quand un admin déverrouille manuellement, lockoutTime est remis à 0.

Communication du mot de passe

Le nouveau mot de passe ne doit jamais être transmis par :

  • mail non chiffré ;
  • SMS ;
  • chat d’entreprise non chiffré.

Bonnes pratiques : téléphone interne avec rappel sur un numéro déjà connu, remise en face-à-face si possible, ou portail SSPR (Self-Service Password Reset) pour les cas simples. C’est la posture demandée par les guides ANSSI sur la gestion des identités.

Topologie

L’architecture est la même que pour l’intervention précédente : un contrôleur de domaine virtualisé et mon poste d’admin sur le segment d’administration du lab.

ÉquipementRôle
Poste d’admin WindowsConsole ADUC, PowerShell
VM Windows Server 2022 (DC)Contrôleur de domaine LAB.LOCAL

Prérequis

  • Le compte utilisateur Jean Dupont (jean.dupont) déjà créé sur LAB.LOCAL.
  • Un compte d’administration disposant des droits Reset Password sur le container Users.
  • Console ADUC ou module PowerShell ActiveDirectory disponible.

Diagnostic préalable

Avant tout, je vérifie l’état réel du compte. Un utilisateur qui « n’arrive plus à se connecter » peut avoir trois causes : mot de passe oublié, compte verrouillé, compte désactivé. Le geste à faire n’est pas le même.

POWERSHELL
Get-ADUser -Identity "jean.dupont" -Properties LockedOut,Enabled,PasswordExpired,AccountLockoutTime,LastBadPasswordAttempt |
    Format-List Name,Enabled,LockedOut,PasswordExpired,AccountLockoutTime,LastBadPasswordAttempt
Cliquez pour développer et voir plus

Sortie :

TEXT
Name                   : Jean Dupont
Enabled                : True
LockedOut              : True
PasswordExpired        : False
AccountLockoutTime     : 03/02/2025 14:12:08
LastBadPasswordAttempt : 03/02/2025 14:11:55
Cliquez pour développer et voir plus

Diagnostic : compte actif (Enabled: True), mais verrouillé (LockedOut: True) suite à des tentatives ratées rapprochées. Le mot de passe n’est pas expiré : l’utilisateur l’a probablement oublié et a tenté plusieurs combinaisons. Je dois donc déverrouiller ET réinitialiser, parce que le déverrouillage seul lui donnera 5 nouvelles tentatives avec un mot de passe qu’il ne se rappelle pas.

Réinitialisation via ADUC

Sur le DC, j’ouvre Utilisateurs et ordinateurs Active Directory, je localise Jean Dupont dans Users, clic droit → Réinitialiser le mot de passe.

Boîte de dialogue Réinitialiser le mot de passe avec déverrouillage du compte

TEXT
Nouveau mot de passe         : ●●●●●●●●●●●●●●
Confirmer le mot de passe    : ●●●●●●●●●●●●●●

[X] L'utilisateur doit changer le mot de passe à la prochaine ouverture de session

État de verrouillage du compte sur ce contrôleur de domaine : Déverrouillé

[X] Déverrouiller le compte de l'utilisateur
Cliquez pour développer et voir plus

Explications ligne par ligne :

  • Nouveau mot de passe : mot de passe temporaire, qui doit respecter la politique de complexité du domaine. Je génère 14 caractères mixtes via mon gestionnaire de mots de passe : c’est plus sûr qu’un mot de passe « tapé au clavier » par habitude (Welcome2025! et autres dérivés sont les premiers testés en attaque).
  • L'utilisateur doit changer le mot de passe à la prochaine ouverture de session : coché. Indispensable : le mot de passe que je tape passe par le ticket, par mon esprit, par la confirmation orale, il doit être éphémère.
  • Déverrouiller le compte de l'utilisateur : coché. Sans ça, mon reset enregistre un nouveau hash mais le compte reste LockedOut: True jusqu’à la fin de la fenêtre de verrouillage (30 minutes par défaut). Cocher la case remet lockoutTime à 0 immédiatement.
  • L’indication État de verrouillage : Déverrouillé qu’on voit sur la capture confirme que le déverrouillage a déjà été appliqué pendant que je remplissais le formulaire : ADUC met à jour cet indicateur en temps réel.

Je clique sur OK. La fenêtre se ferme, le mot de passe est remplacé. ADUC affiche un message de confirmation.

Vérification dans les propriétés du compte

Pour m’assurer que tout est cohérent, j’ouvre les Propriétés de Jean Dupont, onglet Compte.

Onglet Compte des propriétés de Jean Dupont après le reset

Je vérifie que :

  • la case Déverrouiller le compte n’est plus cochée (= compte n’est plus verrouillé) ;
  • l’option L’utilisateur devra changer le mot de passe à la prochaine ouverture est bien cochée ;
  • l’option Le mot de passe n’expire jamais reste décochée ;
  • l’option Enregistrer le mot de passe en utilisant un chiffrement réversible reste décochée ;
  • la date d’expiration du compte est inchangée (toujours fin avril 2026).

Réinitialisation via PowerShell

Pour scripter le geste, voici l’équivalent PowerShell.

POWERSHELL
# 1) Vérifier l'état du compte avant action
Get-ADUser -Identity "jean.dupont" -Properties LockedOut,Enabled,PasswordExpired |
    Format-List Name,Enabled,LockedOut,PasswordExpired

# 2) Préparer le nouveau mot de passe (saisi de manière sécurisée)
$Nouveau = Read-Host -AsSecureString "Mot de passe temporaire"

# 3) Réinitialiser le mot de passe
Set-ADAccountPassword -Identity "jean.dupont" -NewPassword $Nouveau -Reset

# 4) Forcer le changement à la prochaine ouverture de session
Set-ADUser -Identity "jean.dupont" -ChangePasswordAtLogon $true

# 5) Déverrouiller le compte
Unlock-ADAccount -Identity "jean.dupont"

# 6) Vérifier l'état après action
Get-ADUser -Identity "jean.dupont" -Properties LockedOut,PasswordExpired,PasswordLastSet |
    Format-List Name,LockedOut,PasswordExpired,PasswordLastSet
Cliquez pour développer et voir plus

Explications ligne par ligne :

  • Read-Host -AsSecureString : le mot de passe est saisi à l’invite et stocké en SecureString. Il n’apparaît jamais en clair dans l’historique PowerShell.
  • Set-ADAccountPassword -Reset : le switch -Reset est crucial. Sans lui, la commande attend l’ancien mot de passe (cas du Change Password utilisateur). Avec, l’admin peut forcer le nouveau hash.
  • Set-ADUser -ChangePasswordAtLogon $true : force le flag pwdLastSet=0. Équivalent à la case ADUC.
  • Unlock-ADAccount : remet lockoutTime à 0. Cmdlet idempotent : si le compte n’est pas verrouillé, ne fait rien.
  • Le diagnostic en étape 6 doit retourner LockedOut: False, PasswordExpired: False, et un PasswordLastSet à vide (signal du flag change at next logon).

Communication du mot de passe

C’est la partie qui ne se voit pas dans les outils mais qui fait toute la différence.

ÉtapeActionPourquoi
1. Vérifier l’identitéRappel sur le numéro interne ou demande de confirmation par le managerEmpêche le social engineering (fausse demande d’un soi-disant utilisateur)
2. Annoncer le mot de passe à voix« Ton mot de passe temporaire est T-r-a-n-s... » avec épellationÉvite les confusions L/I, O/0, S/5
3. Faire répéter« Tu peux me l’épeler en retour ? »Vérifie que l’utilisateur l’a bien noté
4. Rappeler la suite« Tu devras le changer dès ta prochaine connexion »Posture les attentes côté utilisateur
5. Documenter le ticket« Reset effectué à 14h32, déverrouillage OK, communication par téléphone interne »Traçabilité dans GLPI / outil de ticket

Problèmes rencontrés et solutions

SymptômeCauseCorrection
Le mot de passe est refusé par ADUCPolitique de complexité non respectée (longueur, catégories)Choisir un mot de passe plus fort ou ajuster la Default Domain Policy
L’utilisateur reste verrouillé après le resetCase « Déverrouiller le compte » non cochéeRe-cocher la case ou exécuter Unlock-ADAccount -Identity jean.dupont
L’utilisateur peut se connecter sans qu’on lui demande de changerpwdLastSet non remis à 0Cocher l’option dans ADUC ou exécuter Set-ADUser -ChangePasswordAtLogon $true
Le reset ne se réplique pas immédiatement sur les autres DCRéplication AD non instantanée (toutes les 15 min par défaut)Forcer la réplication avec repadmin /syncall ou attendre la convergence

Compétences du bloc 1 mobilisées

Compétence officielleMobilisation concrète
Répondre aux incidents et aux demandes d’assistance et d’évolutionTraitement complet d’un ticket type « mot de passe oublié » : diagnostic, reset, déverrouillage, communication, traçabilité.
Mettre en place et vérifier les niveaux d’habilitation associés à un serviceVérification que le compte conserve ses droits initiaux après reset (date d’expiration, options non modifiées).
Vérifier le respect des règles d’utilisation des ressources numériquesApplication stricte de la politique de communication des mots de passe (canal sûr, épellation, traçabilité).
Exploiter des référentiels, normes et standards adoptés par le prestataire informatiqueProcédure conforme aux guides ANSSI sur la gestion des identités et l’authentification.

Bilan

L’opération en elle-même est triviale en quelques clics, mais c’est l’enchaînement qui fait la qualité du support : vérification de l’identité → diagnostic réel (verrouillé ? désactivé ? mot de passe expiré ?) → reset + déverrouillage cohérents → communication sûre → traçabilité. Manquer une étape (typique : réinitialiser sans déverrouiller, ou transmettre le mot de passe par mail) transforme un ticket de 3 minutes en incident de sécurité potentiel.

Trois points retenus pour mes prochains tickets :

  • toujours faire le diagnostic avant le geste — réinitialiser un mot de passe sur un compte qui était juste verrouillé crée un mot de passe inconnu dont l’utilisateur n’a pas besoin ;
  • la version PowerShell est plus rapide à enchaîner et laisse une trace dans l’historique, ce qui aide pour la documentation du ticket ;
  • la communication du mot de passe est une compétence à part entière, pas un détail.

Sources

Commencer la recherche

Saisissez des mots-clés pour rechercher des articles

↑↓
ESC
⌘K Raccourci