Active Directory (AD) est utilisé par de nombreuses organisations pour la gestion des utilisateurs et les services d’authentification. Comprendre l’expiration du mot de passe des comptes utilisateurs AD est important pour maintenir la sécurité. En utilisant PowerShell, cette tâche peut être automatisée, rendant la gestion plus facile. Cet article expliquera comment vérifier l’expiration du mot de passe des comptes utilisateurs AD en utilisant PowerShell, étape par étape.
Commande pour vérifier l’expiration du mot de passe
Pour vérifier l’expiration du mot de passe d’un compte utilisateur Active Directory, combinez le cmdlet PowerShell Get-ADUser avec plusieurs attributs. Ci-dessous se trouve la commande de base pour vérifier l’expiration du mot de passe pour un utilisateur spécifique.
# Vérifier l'expiration du mot de passe de l'utilisateur
Get-ADUser -Identity "username" -Properties "PasswordLastSet", "PasswordNeverExpires" | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, @{Name="PasswordExpires"; Expression={if ($_.PasswordNeverExpires -eq $false) { $_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays) } else {"Never Expires"}}}
Cette commande récupère le « PasswordLastSet » (la dernière fois que le mot de passe a été défini), si le mot de passe est défini pour ne jamais expirer « PasswordNeverExpires », et si le mot de passe a une expiration, calcule et affiche quand cette date d’expiration est.
Commentaires
- Le cmdlet
Get-ADUser
est utilisé pour récupérer les informations de l’utilisateur depuis AD. - Le paramètre
-Identity
spécifie le nom d’utilisateur cible. - Avec le paramètre
-Properties
, vous spécifiez quels attributs vous souhaitez récupérer. Par défaut, tous les attributs ne sont pas récupérés. - Utilisez le cmdlet
Select-Object
pour choisir les informations que vous souhaitez afficher et ajouter des propriétés personnalisées.
Exemple de script 1 : Liste des utilisateurs dont le mot de passe a expiré
Un script pour identifier et lister les utilisateurs dont les mots de passe ont expiré parmi tous les utilisateurs Active Directory peut aider à vérifier la conformité avec les politiques de sécurité organisationnelles et automatiser les tâches de gestion de compte.
Le script PowerShell suivant détecte les utilisateurs dont les mots de passe ont expiré en comparant la date actuelle et produit une liste de ces utilisateurs.
# Lister les utilisateurs expirés
Import-Module ActiveDirectory
$today = (Get-Date)
Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $today
} | Select-Object Name, PasswordLastSet, @{Name="PasswordExpires"; Expression={$_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)}}
Commentaires
Import-Module ActiveDirectory
rend les cmdlets liés à Active Directory disponibles. Cette ligne est toujours nécessaire avant d’exécuter des scripts liés à AD.- Le cmdlet
Get-Date
est utilisé pour obtenir la date actuelle, qui sert de base pour déterminer l’expiration du mot de passe. Get-ADUser -Filter *
cible tous les utilisateurs dans Active Directory.- Le cmdlet
Where-Object
filtre les utilisateurs dont les mots de passe ne sont pas valables de manière permanente et dont la date de définition du mot de passe plus la période de validité maximale définie par la politique de mot de passe du domaine est antérieure à la date d’aujourd’hui. - Utilisez le cmdlet
Select-Object
pour sélectionner uniquement les informations nécessaires et ajouter la propriété personnaliséePasswordExpires
pour calculer et afficher la date d’expiration du mot de passe.
Ce script facilite la gestion des utilisateurs expirés, contribuant à maintenir la sécurité.
Exemple de script 2 : Envoi automatique d’emails de notification avant l’expiration
Notifier les utilisateurs au sein de l’organisation que leur mot de passe est sur le point d’expirer peut améliorer l’expérience utilisateur et renforcer la sécurité. Le script PowerShell suivant détecte les utilisateurs dont les mots de passe expireront dans un nombre spécifié de jours et envoie automatiquement des emails de notification à ces utilisateurs.
# Envoyer des emails de notification avant l'expiration
Import-Module ActiveDirectory
$notificationPeriod = 14 # Nombre de jours avant l'envoi de la notification
$smtpServer = "smtp.example.com" # Adresse du serveur SMTP
$fromEmail = "admin@example.com" # Adresse email de l'expéditeur
$subject = "Votre mot de passe expirera bientôt" # Sujet de l'email
$users = Get-ADUser -Filter * -Properties EmailAddress, PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays - $notificationPeriod)) -lt (Get-Date)
}
foreach ($user in $users) {
$toEmail = $user.EmailAddress
$body = "Cher $($user.Name),\n\nVotre mot de passe expirera dans moins de $notificationPeriod jours. Veuillez
changer votre mot de passe dès que possible.\n\nCordialement,\nVotre équipe informatique"
Send-MailMessage -SmtpServer $smtpServer -From $fromEmail -To $toEmail -Subject $subject -Body $body
}
Commentaires
- Ce script utilise la variable
$notificationPeriod
pour définir quand commencer à notifier les utilisateurs, fixée à 14 jours à l’avance dans cet exemple. - Le cmdlet
Get-ADUser
récupère les informations des utilisateurs incluant les attributsEmailAddress
,PasswordLastSet
, etPasswordNeverExpires
. - Le cmdlet
Where-Object
filtre pour les utilisateurs dont l’expiration du mot de passe approche. - La boucle
foreach
est utilisée pour envoyer un email à chaque utilisateur concerné en utilisant le cmdletSend-MailMessage
.
En exécutant régulièrement ce script, les utilisateurs peuvent prendre les mesures appropriées avant que leurs mots de passe expirent, aidant à maintenir la sécurité des comptes et à réduire le nombre de tickets de support.
Exemple de script 3 : Désactivation automatique des comptes utilisateurs expirés
Comme mesure de sécurité, désactiver automatiquement les comptes utilisateurs dont les mots de passe ont expiré peut réduire le risque d’accès non autorisé. Le script PowerShell suivant détecte les comptes utilisateurs avec des mots de passe expirés et désactive automatiquement ces comptes.
# Désactivation automatique des utilisateurs expirés
Import-Module ActiveDirectory
$today = (Get-Date)
$expiredUsers = Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $today
}
foreach ($user in $expiredUsers) {
# Désactivation du compte utilisateur
Disable-ADAccount -Identity $user.SamAccountName
Write-Output "Compte désactivé : $($user.Name)"
}
Commentaires
Import-Module ActiveDirectory
importe le module Active Directory, permettant l’utilisation des cmdlets liés à AD.- Le cmdlet
Get-ADUser
récupère toutes les informations des utilisateurs et utiliseWhere-Object
pour filtrer les utilisateurs avec des mots de passe expirés. - Dans la boucle
foreach
, le cmdletDisable-ADAccount
est utilisé pour désactiver les comptes des utilisateurs dont les mots de passe ont expiré. - Le script affiche dans la console lorsque un compte utilisateur est désactivé.
Ce script est particulièrement utile pour la gestion des comptes dans de grandes organisations, automatisant la conformité avec les politiques de sécurité et réduisant la charge administrative. Exécuter régulièrement le script assure que les comptes avec des mots de passe expirés sont désactivés, renforçant la sécurité du système.
Considérations de sécurité
Lors de l’automatisation de la politique de mot de passe et de la gestion des comptes utilisateurs, plusieurs considérations de sécurité doivent être prises en compte. Faites attention aux points suivants lors de la mise en œuvre et de l’exploitation de ces scripts.
- Appliquer le principe de moindre privilège : Le compte exécutant le script doit se voir accorder les permissions minimales nécessaires. Par exemple, si seule la lecture des informations de mot de passe des utilisateurs est nécessaire, des permissions en lecture seule doivent être attribuées, et seulement les permissions nécessaires pour désactiver les comptes doivent être accordées pour ces opérations.
- Sécuriser le stockage des scripts : Puisque les scripts peuvent contenir des informations potentiellement sensibles ou des commandes modifiant le système, ils doivent être stockés de manière sécurisée pour se protéger contre l’accès non autorisé.
- Journalisation et surveillance : Les changements effectués par les scripts doivent être correctement journalisés et surveillés. Cela permet une réponse rapide aux comportements inattendus ou aux incidents de sécurité.
- Maintenir les mécanismes de notification : Surtout pour les scripts qui notifient les utilisateurs de l’expiration imminente du mot de passe ou désactivent automatiquement les comptes, il est conseillé d’avoir des mécanismes en place pour notifier les administrateurs ou les utilisateurs lorsque des actions sont prises.
- Revoir et mettre à jour régulièrement : Les scripts doivent être régulièrement revus et mis à jour si nécessaire, en réponse aux changements dans les politiques organisationnelles ou aux mises à jour de l’environnement Active Directory.
En adhérant à ces considérations de sécurité, les processus automatisés facilités par ces scripts peuvent fonctionner efficacement tout en restant alignés avec les normes de sécurité organisationnelles.
Conclusion
Utiliser PowerShell pour vérifier et gérer l’expiration des mots de passe des comptes utilisateurs Active Directory est essentiel pour maintenir la sécurité organisationnelle. En utilisant les scripts introduits dans cet article, une surveillance efficace des expirations de mot de passe des comptes utilisateurs AD, une notification avant l’expiration, et une désactivation automatique des comptes basée sur les politiques de sécurité peuvent être réalisées.
Il est important que ces processus automatisés soutiennent et renforcent les politiques de sécurité de l’organisation. Cependant, l’automatisation doit être accompagnée de l’application du principe de moindre privilège, d’un stockage sécurisé des scripts, d’une journalisation et surveillance appropriées, du maintien des mécanismes de notification, et d’une révision et mise à jour régulières, parmi d’autres considérations de sécurité.
En fin de compte, en combinant de manière appropriée ces meilleures pratiques et scripts d’automatisation, la gestion de l’environnement Active Directory peut devenir plus efficace et sécurisée.