Code : MO-AD-004 | Version : 1.0 | Date : 16 avril 2026 | Auteur : Cédric LEGRAND
Constat traité : F-AD-013 (mots de passe Administrateur locaux identiques sur 78 postes), PingCastle A-LAPS #27
PDF complet : MO-AD-004_deploiement_windows_laps.pdf
Déploiement de Windows LAPS (Local Administrator Password Solution, version native intégrée à Windows Server 2019+ et Windows 10/11 via KB5025230 d'avril 2023) sur les 72 postes étudiants des trois salles informatiques (POSTES_S109, POSTES_S110, POSTES_S111) du BTS SIO.
La procédure procède en quatre temps :
ms-LAPS-* + extended right ms-LAPS-Encrypted-Password-Attributes) ;SELF/WriteProperty + ReadPassword) ;Get-LapsADPassword.Contexte initial : Avant cette procédure, les 72 postes des trois salles partageaient le même mot de passe Administrateur local (compte RID 500), invariant depuis le déploiement initial. Une compromission unitaire d'un poste exposait immédiatement les 71 autres au même secret. Le schéma AD comportait déjà les attributs
ms-LAPS-*(extension partielle héritée d'une mise à jour Windows antérieure) mais sans extended right chiffré, sans permissions ACL et sans GPO active : aucune rotation n'avait jamais eu lieu.
| Rubrique | Valeur |
|---|---|
| Public concerné | Domain Admins ; appartenance temporaire Schema Admins + Enterprise Admins pour l'extension de schéma |
| Systèmes ciblés | Domaine bts.sio (DC1 Srv2022, DC2 Srv2022Phy), 72 postes Win10/11 (S109=23, S110=32, S111=17) |
| Outils | PowerShell 5.1 (modules ActiveDirectory, LAPS, GroupPolicy), repadmin, WinRM via pywinrm |
| Durée | ≈ 25 min déploiement actif + 2 h propagation passive |
| Présentiel requis | Non — exécution intégrale via WinRM sous VPN WireGuard |
repadmin /replsummary sans erreur bloquante).wbadmin get versions.bts.sio en Windows2016Forest (FFL 7), conforme.LAPS et GroupPolicy présents sur DC1.Irréversibilité de l'extension de schéma : Microsoft ne fournit pas de cmdlet de retrait. Seule une restauration autoritative depuis backup pré-extension permet un retour en arrière partiel. Vérifier le backup System State avant la phase 3.
| Caractéristique | Legacy LAPS (AdmPwd) | Windows LAPS (natif) |
|---|---|---|
| Disponibilité | MSI Microsoft + CSE à installer | Intégré OS Server 2019+ et Win10/11 (KB5025230) |
| Attribut MDP clair | ms-Mcs-AdmPwd |
ms-LAPS-Password |
| Attribut MDP chiffré | — | ms-LAPS-EncryptedPassword (DPAPI-NG) |
| Historique | — | ms-LAPS-EncryptedPasswordHistory |
| Stockage | AD uniquement | AD ou Azure AD |
| Cmdlets | module externe AdmPwd.PS |
module LAPS natif |
Infrastructure BTS SIO en Server 2022 + Win10/11 22H2 → version native retenue, sans MSI ni CSE additionnel.
Pour qu'un poste publie son MDP rotaté dans son objet computer :
NT AUTHORITY\SELF) : WriteProperty sur ms-LAPS-* ;Set-LapsADComputerSelfPermission ;ReadProperty via Set-LapsADReadPasswordPermission.Update-LapsADSchema écrit dans Schema (Schema Admins, RID 518) et dans Configuration pour créer le extended right chiffré (Enterprise Admins, RID 519). Le compte BTS\Administrateur, même Domain Admin, n'est dans aucun de ces deux groupes par défaut. Il faut l'y ajouter temporairement, ouvrir une nouvelle session WinRM (le token NTLM est gelé à l'authentification), exécuter l'extension, puis retirer le compte au plus vite.
Le script scripts/T25_preflight_laps.py établit un audit non destructif via WinRM : version OS, disponibilité de Update-LapsADSchema, état actuel des attributs ms-LAPS-*, comptage postes par OU, dernière sauvegarde wbadmin, niveau fonctionnel forêt, identité du schéma master.

Toute valeur ABSENT sur Update-LapsADSchema ou les modules LAPS/GroupPolicy interrompt la procédure.
$rootDomainSid = (Get-ADDomain).DomainSID.Value
$schemaAdmins = "$rootDomainSid-518"
$enterpriseAdmins = "$rootDomainSid-519"
Add-ADGroupMember -Identity $schemaAdmins -Members 'Administrateur'
Add-ADGroupMember -Identity $enterpriseAdmins -Members 'Administrateur'

Pourquoi rouvrir une session WinRM : le token NTLM est constitué côté serveur à l'authentification ; il porte une snapshot des appartenances de groupe. Toute modification post-authentification n'est pas reprise par la session courante. Sans rouverture,
Update-LapsADSchemarenverra : « L'utilisateur ne dispose pas de droits d'accès suffisants ».
Avec une nouvelle session WinRM :
Update-LapsADSchema -Confirm:$false -Verbose
La cmdlet est idempotente : sur DC1, elle a complété l'extension partielle pré-existante en ajoutant le extended right CN=ms-LAPS-Encrypted-Password-Attributes et en mettant à jour le mayContain de la classe computer.

$ous = @(
'OU=POSTES_S109,DC=bts,DC=sio',
'OU=POSTES_S110,DC=bts,DC=sio',
'OU=POSTES_S111,DC=bts,DC=sio'
)
foreach ($ou in $ous) {
Set-LapsADComputerSelfPermission -Identity $ou
Set-LapsADReadPasswordPermission -Identity $ou `
-AllowedPrincipals 'Admins du domaine'
}

Le préfixe réel est ms-LAPS- (avec tirets), pas msLAPS- comme dans certaines documentations Microsoft.

$gpoName = 'LAPS - Rotation MDP admin local'
$key = 'HKLM\Software\Microsoft\Windows\CurrentVersion\LAPS\Config'
New-GPO -Name $gpoName -Comment 'T25 - Windows LAPS, rotation 30 jours'
Set-GPRegistryValue -Name $gpoName -Key $key -ValueName 'BackupDirectory' -Type DWord -Value 2
Set-GPRegistryValue -Name $gpoName -Key $key -ValueName 'PasswordAgeDays' -Type DWord -Value 30
Set-GPRegistryValue -Name $gpoName -Key $key -ValueName 'PasswordLength' -Type DWord -Value 20
Set-GPRegistryValue -Name $gpoName -Key $key -ValueName 'PasswordComplexity' -Type DWord -Value 4
Set-GPRegistryValue -Name $gpoName -Key $key -ValueName 'PostAuthenticationActions' -Type DWord -Value 5
Set-GPRegistryValue -Name $gpoName -Key $key -ValueName 'PostAuthenticationResetDelay' -Type DWord -Value 24

| Valeur | Donnée | Effet |
|---|---|---|
BackupDirectory |
2 |
Stockage du MDP rotaté dans Active Directory |
PasswordAgeDays |
30 |
Rotation tous les 30 jours |
PasswordLength |
20 |
Longueur 20 caractères |
PasswordComplexity |
4 |
Maj + min + chiffres + spéciaux |
PostAuthenticationActions |
5 |
Reset MDP + déconnexion utilisateur après usage par admin |
PostAuthenticationResetDelay |
24 |
Délai (heures) avant action post-auth |
foreach ($ou in $ous) {
New-GPLink -Name $gpoName -Target $ou -LinkEnabled Yes
}

Impératif : retirer immédiatement
BTS\Administrateurdes deux groupes sensibles.
Remove-ADGroupMember -Identity $schemaAdmins -Members 'Administrateur' -Confirm:$false
Remove-ADGroupMember -Identity $enterpriseAdmins -Members 'Administrateur' -Confirm:$false

La rotation est asynchrone : chaque poste applique la GPO à son prochain cycle gpupdate (90 min ± 30 min de jitter par défaut Microsoft) ou à son prochain démarrage. Test immédiat inadapté :

2 heures après le déploiement, sondage d'un échantillon :
Get-ADComputer -SearchBase 'OU=POSTES_S110,DC=bts,DC=sio' -Filter * |
Select-Object -First 5 |
Get-LapsADPassword -AsPlainText |
Format-Table ComputerName, ExpirationTimestamp, @{n='len';e={$_.Password.Length}}
Le lendemain, élargir aux 72 postes pour repérer ceux qui n'ont pas encore tourné (postes éteints au moment des cycles gpupdate).
| Symptôme | Cause probable | Résolution |
|---|---|---|
Update-LapsADSchema : « droits insuffisants » en écriture schéma |
Compte non membre de Schema Admins ou token NTLM non rafraîchi | Ajouter au RID 518, rouvrir la session WinRM |
Update-LapsADSchema : erreur sur CN=Extended-Rights |
Compte non membre de Enterprise Admins | Ajouter au RID 519, rouvrir session |
Get-LapsADPassword renvoie $null |
GPO pas encore appliquée par le poste | Attendre 90 min ou redémarrer le poste |
Invoke-GPUpdate -Computer X échoue |
Task Scheduler à distance désactivé (durcissement par défaut des postes étudiants) | Comportement attendu — attendre cycle naturel ; ne pas affaiblir le pare-feu |
| Lecture refusée à un Domain Admin | ACL ReadPassword non déléguée |
Rejouer Set-LapsADReadPasswordPermission |
| DC2 ne réplique pas l'attribut | DFSR/RPC 5722 cassé (T42 Sprint 3) | Sans incidence sur la réplication AD principale ; cf. MO-AD-005 |
Set-GPLink ... -LinkEnabled No sur les 3 OUs. Les MDP rotatés restent en place mais cessent d'être rotatés.Set-Acl.PDF complet (17 pages) : MO-AD-004_deploiement_windows_laps.pdf