Rechercher et supprimer régulièrement les comptes d’utilisateur inactifs dans Active Directory
Pourquoi effectuer ces actions
Plus de 10 pour cent des comptes d’utilisateur dans Active Directory ont été détectés comme étant inactifs (obsolètes), en fonction du dernier changement de mot de passe ou de la date de dernière connexion de l’utilisateur. Les comptes d’utilisateurs obsolètes dans Active Directory constituent un risque de sécurité significatif, car ils peuvent être utilisés par un pirate ou un ancien employé. Ces comptes inactifs consomment également de l’espace de base de données récupérable.
Regardez un ingénieur client expliquer le problème
Contexte et meilleures pratiques
Active Directory contient un compte pour chaque utilisateur. Au fil du temps, les utilisateurs quittent l’organisation et ces comptes d’utilisateur peuvent ne pas être supprimés d’Active Directory. Les comptes d’utilisateur obsolètes constituent un problème de sécurité significatif, car les anciens employés et des pirates externes peuvent utiliser ces comptes pour attaquer l’organisation. Les comptes obsolètes utilisent également de l’espace dans la base de données d’annuaire pouvant être récupéré.
Les comptes d’utilisateur ont un attribut nommé PasswordLastSet, lequel enregistre la dernière fois qu’un utilisateur a changé son mot de passe. Comme PasswordLastSet est un attribut répliqué, un seul contrôleur de domaine dans chaque domaine doit être interrogé.
Windows Server 2003 a introduit un nouvel attribut appelé lastLogonTimeStamp pour faciliter l’identification des comptes potentiellement obsolètes. Cet attribut s’active dans un domaine configuré au niveau fonctionnel Windows Server 2003, Windows Server 2008, Windows Server 2008R2, Windows Server 2012 ou Windows Server 2012R2. À la différence de l’attribut lastLogon, disponible depuis Windows NT 4.0, l’attribut lastLogonTimeStamp est répliqué à chaque fois qu’il est mis à jour. L’interrogation de cet attribut est plus pratique, car un seul contrôleur de domaine dans chaque domaine doit être interrogé.
Pour trouver les comptes, exécutez un script qui interroge Active Directory sur les comptes d’utilisateurs inactifs. Dans le module Active Directory pour Windows PowerShell, la commande Search-ADAccount –AccountInactive –UsersOnly renvoie tous les comptes d’utilisateurs inactifs. Utilisez les options -DateTime ou -TimeSpan pour mieux cibler la date à laquelle l’ordinateur s’est connecté pour la dernière fois.
Remarque : Lastlogontimestamp n’est pas répliqué chaque fois qu’une personne se connecte. Consultez l’article Découverte des attributs de compte AD : LastLogon, LastLogonTimeStamp et LastLogonDate (en anglais uniquement) à l’adresse https://social.technet.microsoft.com/wiki/contents/articles/22461.understanding-the-ad-account-attributes-lastlogon-lastlogontimestamp-and-lastlogondate.aspx.
La gestion des comptes d’utilisateur obsolètes revient souvent à mettre en œuvre des processus d’annulation de l’approvisionnement efficaces. Cependant, il est possible que des utilisateurs ne puissent pas travailler et donc se connecter pendant une période prolongée. En outre, les comptes de service peuvent ne pas se connecter pendant des périodes prolongées. Par conséquent, vous devez intégrer plusieurs vérifications et mettre en place des garanties pour éviter de désactiver ou de supprimer des comptes toujours en cours d’utilisation.
Actions suggérées
Vous devez effectuer des contrôles réguliers pour rechercher des comptes d’utilisateur n’ayant pas changé leur mot de passe au cours des six derniers mois, puis désactiver et supprimer ces comptes d’Active Directory.
Exécutez un script dans chaque domaine qui interroge Active Directory à la recherche de comptes d’utilisateur dans lesquels l’antériorité du mot de passe est supérieure à une certaine période. Dans le module Active Directory pour Windows PowerShell, le script suivant répertorie les comptes d’utilisateur dont le mot de passe n’a pas été modifié au cours des six derniers mois.
$d = [DateTime]::Today.AddDays(-180)
Get-ADUser -Filter '(PasswordLastSet -lt $d) -or (LastLogonTimestamp -lt $d)' -Properties PasswordLastSet,LastLogonTimestamp | ft Name,PasswordLastSet,@{N="LastLogonTimestamp";E={[datetime]::FromFileTime($_.LastLogonTimestamp)}}
Après avoir identifié les comptes obsolètes, il est recommandé de désactiver ces comptes d’utilisateur, d’attendre plusieurs semaines, puis de supprimer les comptes si aucun problème n’a été signalé.