« Un mot de passe complexe suffit à sécuriser Domain Admins. »
Le risque dépend aussi du nombre de comptes, de leurs postes de connexion, de la durée d’exposition des tickets, des délégations et de la capacité d’audit.
01Inventorie les groupes sensibles
$privilegedGroups = @(
'Enterprise Admins',
'Schema Admins',
'Domain Admins',
'Administrators',
'Account Operators',
'Server Operators',
'Backup Operators',
'DnsAdmins',
'Group Policy Creator Owners'
)
foreach ($group in $privilegedGroups) {
Get-ADGroupMember -Identity $group -Recursive -ErrorAction SilentlyContinue |
Select-Object @{Name='Group';Expression={$group}},Name,SamAccountName,ObjectClass
}
02Repère les comptes à risque
$riskProperties = @(
'AdminCount',
'Enabled',
'PasswordNeverExpires',
'DoesNotRequirePreAuth',
'TrustedForDelegation',
'LastLogonDate'
)
Get-ADUser -Filter * -Properties $riskProperties |
Where-Object {
$_.AdminCount -eq 1 -or
$_.PasswordNeverExpires -or
$_.DoesNotRequirePreAuth -or
$_.TrustedForDelegation
} |
Select-Object SamAccountName,Enabled,AdminCount,PasswordNeverExpires,
DoesNotRequirePreAuth,TrustedForDelegation,LastLogonDate
AdminCount=1 indique une relation avec la protection administrative, mais ne suffit pas seul à conclure qu’un compte possède encore un privilège actif.
03Sépare les identités
behnam.eskandari compte utilisateur quotidien
adm-behnam.eskandari administration du domaine
srv-backup compte de service géré et documenté
Le compte administratif ne sert ni à la messagerie, ni à la navigation web, ni aux tâches bureautiques. Son usage se limite aux postes et serveurs d’administration prévus.
04Prépare les corrections en simulation
$accountControlParams = @{
Identity = 'adm-alice.martin'
DoesNotRequirePreAuth = $false
TrustedForDelegation = $false
WhatIf = $true
}
Set-ADAccountControl @accountControlParams
Set-ADUser -Identity 'adm-alice.martin' -PasswordNeverExpires $false -WhatIf
Avant toute correction, vérifie les dépendances applicatives et les procédures de récupération.
05Contrôle Protected Users
Get-ADGroupMember 'Protected Users' |
Select-Object Name,SamAccountName,ObjectClass
$protectedUserParams = @{
Identity = 'Protected Users'
Members = 'adm-alice.martin'
WhatIf = $true
}
Add-ADGroupMember @protectedUserParams
Protected Users impose des restrictions d’authentification. Teste d’abord sur un compte administratif de laboratoire et vérifie les applications, protocoles et scénarios de secours.
06Réduis les connexions privilégiées
Définis une station d’administration dédiée, applique des GPO spécifiques, refuse les connexions administratives sur les postes utilisateurs et journalise les ouvertures de session privilégiées.
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
StartTime = (Get-Date).AddDays(-1)
Id = 4624,4672,4648
} | Select-Object TimeCreated,Id,MachineName,Message
07Revois et retire proprement
$removeParams = @{
Identity = 'Domain Admins'
Members = 'adm-alice.martin'
Confirm = $true
WhatIf = $true
}
Remove-ADGroupMember @removeParams
Une revue de privilèges doit enregistrer demande, approbateur, durée, propriétaire, justification, preuve de retrait et comptes de secours.
08Construis le registre de durcissement
Pour chaque risque, indique contrôle, preuve d’implémentation, vérification, risque résiduel, propriétaire et fréquence de revue. Le registre fourni par le lab sert de point de départ.
Réduis le périmètre privilégié
Inventorie tous les membres sensibles, classe les usages, propose les retraits, crée un compte admin séparé, teste Protected Users et produis une preuve de connexion privilégiée contrôlée.
✓Ce que tu retiens
Le durcissement des privilèges repose sur la réduction, la séparation, la restriction des postes de connexion, la traçabilité et une revue régulière.