Dans toute annuaire Active Directory il existe une mauvaise pratique, celle dont je voudrais vous parler aujourd'hui est la non expiration des mots de passe pour un / des comptes du domaine.
Pourquoi ?
Il existe plusieurs arguments au fait qu'un mot de passe qui n'expire jamais est une mauvaise pratique, je mettrais en avant ici les deux qui me posent le plus problème:
- Tout d'abord un mot de passe qui n'expire jamais a plus de chance d'être "découvert" dans des attaques de type brute force; si on se concentre sur ces comptes en particulier, le fait qu'il n'y ai pas de rotation de mot de passe, laisse une plus grande période de temps à l'attaquant pour le découvrir.
- Si le compte est compromis, l'attaquant a par définition un accès "constant" au SI, puisque tant que la rotation du mot de passe n'aura pas lieu, ce dernier conservera son accès.
Que faire ?
Bien qu'il ne soit pas une bonne pratique d'autoriser la non expiration des mots de passe, je les croise tous le jours dans tout Active Directory, avec toujours "une bonne raison" de l'avoir fait.
En revanche, même s'il n'est pas possible de s'en séparer, il est tout de même bon de mettre en oeuvre quelques bonne pratiques lorsque l'on est dans cette situation :
- Lister les comptes dont le mot de passe n'expire jamais.
- Documenter la cause de cette configuration.
- Documenter leur emploi (raison d'utilisation, application dans lesquelles ils sont utilisés, machines sur lesquelles ils sont utilisés).
- Documenter la date du dernier changement de mot de passe (même si elle peut être retrouvée dans l'AD).
- Documenter une procédure de changement de mot de passe (documentation applicative, processus de dépendance...).
- Indiquer une personne / équipe en mesure de pouvoir réaliser le changement de mot de passe (il se peut qu'il y ai des développeurs, prestataires externes, éditeurs qui se servent de ce mot de passe).
- Réaliser une rotation du mot de passe manuellement.
Lister les comptes avec Powershell.
# Variables
$RootFolder = "C:\Temp"
$Workefolder = "$RootFolder\NeverExpires"
$LogFolder = "$RootFolder\Logs"
$LogFile = "$LogFolder\NeverExpires.txt"
$AllFolders = $RootFolder, $Workefolder, $LogFolder
# Check and create if needed
foreach ($Folder in $AllFolders) {
If (!(Test-Path $Folder)) {
Try {
New-Item $Folder -ItemType Directory -ErrorAction Stop
}
Catch {
Write-Warning $($_)
}
}
}
# Import module
Try {
Import-Module ActiveDirectory -ErrorAction Stop
}
Catch {
Write-Output "Failed to import module ActiveDirectory" | Add-Content $LogFile
Exit
}
# Get Active Directory users that have a password that never expires
Try {
$AllEnabledUsers = Get-ADUser -Filter {Enabled -eq $true} -Properties PasswordNeverExpires -ErrorAction Stop
$PasswordNeverExpires = $AllEnabledUsers.Where({$_.PasswordNeverExpires -ne $false})
}
Catch {
Write-Output "Failed to collect users" | Add-Content $LogFile
}
# Export result
$PasswordNeverExpires | Export-Csv "$Workefolder\PasswordNeverExpires.csv" -Delimiter ";" -Encoding UTF8
Pour faire suite au précédent articles Powershell : Who's the owner of my AD objects et Powershell : Change the owner of my AD objects voici comment trouver les GPO dont le propriétaire n'est pas "Domain Admins" et les modifier.
# Get Domain
$Domain = Get-ADDomain | select -ExpandProperty NetBIOSName
# Get all GPO
$AllGPO = Get-GPO -All
$AllADGPO = Get-ADObject -Filter {(ObjectClass -eq "groupPolicyContainer")} -Properties displayName
# Filter GPO that are not owned by Domain Admins
$NoGood = $AllGPO.Where({$_.owner -ne "$Domain\Domain Admins"})
# Change owner of all invalid GPO
$NoGood | select -First 1 | foreach {
$DisplayName = $_.DisplayName
$Id = $_.ID
$Guid = $Id.Guid
$CurrentGpo = $AllADGPO.Where({$_.DisplayName -eq $DisplayName})
Write-Host $CurrentGpo
Write-Host $DisplayName -ForegroundColor Magenta
$adsiTarget = [adsi]"LDAP://$($CurrentGpo.DistinguishedName)"
$idRef = New-Object System.Security.Principal.NTAccount("$Domain", "Domain Admins")
$adsiTarget.PSBase.ObjectSecurity.SetOwner($idRef)
$adsiTarget.PSBase.CommitChanges()
$DisplayName = $null
$Id = $null
}
Introduction
La clé d’installation de Windows server se trouve sur le portal admin office rubrique facturation > vos produits. Elle est destinée à l’installation de Windows DTC 16 Cores. J'utilise un ISO en version d’évaluation.
Eval Version
Lorsque l’installation se fait en version d’évaluation il est possible d’upgrader de Standard Edition vers DataCenter Editiion, pas l’inverse.
Pour connaitre la version actuelle de l’édition :
> dism /online /get-currentedition
PS C:\Windows\system32> dism /online /get-currentedition
Outil Gestion et maintenance des images de déploiement
Version : 10.0.17763.3406
Version de l’image : 10.0.17763.4377
Édition actuelle :
Édition actuelle : ServerStandardEval
L’opération a réussi.
Pour connaitre les versions disponibles à l’upgrade : DISM /online /Get-TargetEditions
C:\Windows\system32> dism /online /get-targeteditions:serverStandard
Outil Gestion et maintenance des images de déploiement
Version : 10.0.17763.3406
Version de l’image : 10.0.17763.4377
Éditions vers lesquelles une mise à niveau peut être effectuée :
Édition cible : ServerStandard
Édition cible : ServerDatacenter
L’opération a réussi.
Licenced version
Pour upgrader de la Version Eval à Full Version, il faut utiliser une public KMS (GVLK) key for Windows Server (2016 2019 2022)
dism /online /set-edition:ServerStandard /productkey:N69G4-B89J2-4G8F4-WWYCC-J464C /accepteula

Pour convertir l’édition Standard Edition Eval à Datacenter Full
dism /online /set-edition:ServerDatacenter /productkey:WMDGN-G9PQG-XVVXX-R3X43-63DFG /accepteula
Deployment Image Servicing and Management tool
Version: 10.0.17763.3406
Image Version: 10.0.17763.4377
Starting to update components...
Starting to install product key...
Finished installing product key.
Removing package Microsoft-Windows-ServerDatacenterEvalEdition~31bf3856ad364e35~amd64~~10.0.17763.1
[==========================100.0%==========================]
Finished updating components.
Starting to apply edition-specific settings...
Finished applying edition-specific settings.
The operation completed successfully.
Restart Windows to complete this operation.
Do you want to restart the computer now? (Y/N)
PUne fois en Full Version, on peut alors l’activer avec la licence définitive
slmgr.vbs /upk
slmgr.vbs /cpky
slmgr.vbs /ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
Ou en mode GUI, Settings >system>Activation
