James Thew - Fotolia

Résoudre les verrouillages de compte Active Directory avec PowerShell

La saisie répétée d'identifiants incorrects peut empêcher les utilisateurs de se connecter. Cet article explique comment détecter et corriger ces problèmes ainsi que d'autres événements de verrouillage.

Lorsque vous avez du mal à vous souvenir de votre mot de passe professionnel, en particulier après de longues vacances, vous pouvez accidentellement déclencher une politique de sécurité qui vous empêche d'accéder à votre ordinateur portable jusqu'à ce qu'un technicien informatique vienne à votre secours. De nombreuses entreprises verrouillent automatiquement le compte d'un utilisateur après un certain nombre de tentatives de connexion infructueuses.

Cette politique de verrouillage de compte est conçue pour empêcher les attaques par force brute des pirates qui tentent de trouver le mot de passe d'un utilisateur. Mais les verrouillages peuvent également avoir d'autres causes, telles que des mots de passe incorrects lorsqu'un utilisateur quitte son domicile pour se rendre au bureau, ou lorsqu'une application utilise un processus de connexion automatisé avec des identifiants expirés.

En utilisant PowerShell pour surveiller les journaux d'événements (logs), les administrateurs peuvent détecter ces problèmes et en déterminer la cause afin de savoir s'il s'agit d'une intention malveillante ou d'une raison plus innocente. Cet article explique comment utiliser l'automatisation pour corriger les verrouillages de comptes Active Directory et surveiller les activités suspectes.

Quelles sont les causes des verrouillages de comptes Active Directory ?

Tous les verrouillages de comptes ne proviennent pas de sources malveillantes ou même d'utilisateurs qui ont oublié leur mot de passe.

Les applications s'appuient souvent sur un compte de service pour obtenir les autorisations nécessaires à leur fonctionnement. Cependant, si le mot de passe du compte de service change et que l'application n'obtient pas le mot de passe mis à jour, cela peut verrouiller le compte de service.

Les informations de connexion redondantes sont une autre cause de verrouillage des comptes. Un utilisateur professionnel peut avoir une douzaine d'identifiants ou plus associés à un nom d'utilisateur commun. Il est difficile de garder une trace de tous ces comptes. Il n'est pas difficile d'imaginer qu'une personne utilise plusieurs fois les mauvais identifiants jusqu'à ce que son compte soit verrouillé dans Active Directory.

Le verrouillage des comptes peut également se produire lorsque les utilisateurs changent de lieu de travail. Un scénario courant est celui où un utilisateur passe d'un ordinateur connecté au domaine au bureau à un ordinateur portable Windows à domicile non connecté à un réseau. Comme l'ordinateur portable est hors ligne, il n'enregistre pas les changements de mot de passe. L'utilisateur doit se connecter avec l'ancien mot de passe. Si l'utilisateur apporte cet ordinateur portable au bureau et tente d'accéder au réseau, la combinaison d'une incompatibilité de mot de passe et d'une confusion de l'utilisateur final peut entraîner un verrouillage de compte.

Les politiques de verrouillage de compte peuvent aider ou gêner les administrateurs

L'une des principales raisons pour lesquelles les verrouillages de compte posent problème est qu'ils ont tendance à se produire silencieusement. En tant qu'administrateur, vous pouvez ne jamais savoir qu'un verrouillage de compte s'est produit, à moins qu'un utilisateur ne vous appelle ou que vous ne voyiez un événement de verrouillage de compte répertorié dans les journaux d'événements Windows.

Les verrouillages de compte peuvent poser problème au service informatique, car, même si le déverrouillage des comptes et la réinitialisation des mots de passe sont assez simples, un volume élevé de demandes de réinitialisation ou de tickets de verrouillage de compte peut surcharger le service d'assistance et faire perdre du temps au personnel informatique. Bien sûr, ces verrouillages affectent l'utilisateur final, qui ne peut pas travailler tant qu'il attend la réparation de son compte verrouillé.

Même si les verrouillages de compte Active Directory ont pour but d'assurer la sécurité d'une entreprise, ils peuvent parfois avoir l'effet inverse. Les utilisateurs frustrés par le verrouillage de leur compte peuvent être tentés de contourner les protocoles de sécurité de l'entreprise et noter leur mot de passe ou utiliser des mots de passe faibles, faciles à mémoriser.

Une attaque automatisée par force brute pourrait passer en revue tous les utilisateurs d'une entreprise et causer des dommages considérables en verrouillant tous les comptes. Pour contrer cela, il est possible de définir le seuil de verrouillage des comptes sur 0, ce qui empêche tout verrouillage de compte, mais repose sur d'autres moyens de sécurité pour empêcher ces tentatives de piratage.

Comment rechercher les verrouillages de compte dans les logs de Windows ?

Pour rechercher les événements de verrouillage de compte dans les journaux d'événements, il est préférable de commencer par vérifier le journal de sécurité pour l'ID d'événement 4740 : un compte utilisateur a été verrouillé. Bien que cet événement indique qu'un compte a été verrouillé, il n'explique pas pourquoi.

Lorsque vous examinez ce problème, recherchez d'autres événements susceptibles de fournir davantage d'informations, tels que l'événement ID 4625 : Échec de connexion d'un compte. Cet événement détaille généralement la raison de l'échec de la connexion. Vous pouvez par exemple constater que l'utilisateur a saisi un mot de passe incorrect ou qu'il a tenté de se connecter en dehors des heures autorisées.

Pour anticiper ces situations de verrouillage, vous pouvez utiliser PowerShell pour vérifier les verrouillages dans les journaux d'événements à l'aide de la commande suivante :

Get-WinEvent -FilterHashTable @{LogName="Security"; ID=4740} | Select-Object TimeCreated, Message | Format-Table -Wrap

Les détails suivants décrivent les spécificités de cette commande :

  • La cmdlet Get-WinEvent interroge les journaux d'événements Windows.
  • FilterHashTable spécifie les éléments à rechercher dans les journaux d'événements. Dans ce cas, le paramètre LogName cible le journal de sécurité Windows et filtre les instances de l'ID d'événement 4740, qui fait référence aux événements de verrouillage de compte dans Active Directory.
  • La commande transfère les résultats vers la cmdlet Select-Object, qui affiche l'heure de création de l'événement et les détails de celui-ci, tels que le périphérique, le nom de l'utilisateur et le domaine.

La cmdlet Format-Table, associée au paramètre Wrap, force PowerShell à afficher les informations pertinentes de manière claire dans un tableau. Normalement, la sortie PowerShell tronque le message de verrouillage de compte.

Utilisez PowerShell pour interroger le journal des événements afin d'afficher les événements de verrouillage de compte Active Directory.
Utilisez PowerShell pour interroger le journal des événements afin d'afficher les événements de verrouillage de compte Active Directory.

Dans un environnement de production, cette requête de verrouillage de compte Active Directory peut générer un nombre excessif de résultats, car elle vérifie le journal des événements de sécurité pour toutes les instances avec l'ID d'événement 4740, quelle que soit la date à laquelle l'événement s'est produit. La meilleure façon de résoudre ce problème est d'utiliser le filtre StartTime. Par exemple, la commande suivante examine les événements des dernières 24 heures :

$Start=(Get-Date).AddDays(-1)
Get-WinEvent -FilterHashTable @{LogName="Security"; ID=4740;StartTime=$Start} | Select-Object TimeCreated, Message | Format-Table -Wrap

Les détails suivants précisent les spécificités de cette commande :

  • La variable nommée $Start sert de point de départ pour la recherche dans les journaux. Get-Date.AddDays(-1) indique à PowerShell de soustraire un jour de l'heure actuelle. Pour vérifier les journaux de la semaine précédente, utilisez AddDays(-7).
  • La deuxième commande est identique à la précédente, sauf que StartTime=$Start est ajouté comme paramètre à la table de hachage du filtre pour indiquer à PowerShell d'ignorer les résultats antérieurs à la date et à l'horodatage de la variable $Start.

Comment vérifier les verrouillages de compte dans votre entreprise ?

Une autre façon d'utiliser PowerShell pour vérifier les verrouillages Active Directory consiste à interroger un compte utilisateur à l'aide de la cmdlet Get-ADUser, puis à vérifier la valeur de la propriété LockedOut.

Le problème avec cette approche est la fiabilité. Elle fonctionne si Active Directory traite le statut de verrouillage du compte comme une propriété stockée, mais elle ne fonctionne pas s'il s'agit d'une propriété calculée.

Utilisez plutôt la cmdlet Search-ADAccount pour obtenir des résultats plus cohérents. Si vous souhaitez voir la liste des utilisateurs dont les comptes sont actuellement verrouillés, vous pouvez utiliser cette commande PowerShell.

Search-ADAccount -LockedOut | Select-Object SamAccountName, LockedOut

Les détails suivants décrivent les spécificités de cette commande :

  • La cmdlet Search-ADAccount est conçue pour examiner diverses propriétés des comptes utilisateur.
  • Le paramètre LockedOut indique si un compte est verrouillé.
  • La cmdlet Select-Object détermine les informations affichées dans la sortie. Dans ce cas, la commande affiche le nom du compte SAM (Security Account Manager), ou nom d'utilisateur, et l'état LockedOut.

Pour vérifier si un utilisateur spécifique a été verrouillé, utilisez cette commande :

Search-ADAccount -LockedOut | Where-Object {$_.SAMAccountName -eq "<username>"} | Select-Object SamAccountName, LockedOut

Cette commande est presque identique à la précédente, à l'exception de l'applet de commande Where-Object, qui filtre la liste pour afficher les résultats correspondant à l'utilisateur spécifié. La commande renvoie la valeur True si l'utilisateur est verrouillé. Aucun résultat n'est affiché dans le cas contraire.

Pour déverrouiller un compte, utilisez la commande PowerShell suivante, en remplaçant <username> par le nom de l'utilisateur dont vous souhaitez déverrouiller le compte.

Unlock-ADAccount <username>

Si vous souhaitez déverrouiller les comptes verrouillés, utilisez cette commande.

Search-ADAccount -LockedOut | Unlock-ADAccount

Les détails suivants décrivent les spécificités de cette commande :

  • La cmdlet Search-ADAccount recherche les utilisateurs verrouillés.
  • Les résultats sont transférés vers la cmdlet Unlock-ADAccount, qui supprime le statut de verrouillage.

Comment utiliser la console ADUC pour déverrouiller des comptes ?

PowerShell est généralement l'option la plus rapide et la plus simple pour déverrouiller des comptes dans certains cas, par exemple si vous avez beaucoup de comptes à déverrouiller ou si vous ne savez pas exactement quels comptes nécessitent une attention particulière, mais ce n'est pas la seule option possible. Vous pouvez également déverrouiller des comptes à l'aide de la console Utilisateurs et Ordinateurs Active Directory (ADUC) :

  • Ouvrez la console, puis cliquez avec le bouton droit sur le compte à déverrouiller et sélectionnez la commande Propriétés dans le menu contextuel pour ouvrir la feuille de propriétés de l'utilisateur.
  • Sélectionnez l'onglet Compte, puis cochez la case Déverrouiller le compte.
  • Cliquez sur OK pour terminer le processus.

Comment résoudre les problèmes liés aux verrouillages fréquents de compte ?

Les verrouillages fréquents de compte peuvent être un véritable casse-tête. Lorsqu'ils se produisent, ils sont généralement liés à quelques causes spécifiques. L'une d'entre elles est la mise en cache des informations d'identification. Évitez ce problème en demandant toujours aux utilisateurs de saisir leurs informations d'identification plutôt que d'autoriser Windows à les mémoriser.

Si un appareil utilisateur est souvent verrouillé lors de l'utilisation d'un appareil mobile, envisagez de recourir aux stratégies d'accès conditionnel de Microsoft. Ces stratégies réduisent les verrouillages grâce à des méthodes de vérification de connexion plus strictes, telles que l'utilisation de la localisation géographique pour empêcher les tentatives de piratage ou l'utilisation de Microsoft Authenticator pour mettre en œuvre une authentification sans mot de passe.

Vous pouvez également consulter les paramètres de verrouillage de compte Active Directory dans la stratégie de groupe et ajuster le seuil ou la durée de verrouillage afin de les aligner sur vos exigences de sécurité.

Certaines applications héritées stockent les informations d'identification à l'intérieur de l'application. Cette configuration peut déclencher des verrouillages si le mot de passe est modifié sans être ajusté dans l'application. Il est préférable de limiter cette pratique si possible et d'éviter une politique de verrouillage pour les comptes utilisés uniquement par ces applications.

Enfin, les problèmes de santé de la réplication Active Directory provoquent parfois des verrouillages de compte dans les environnements Active Directory complexes, par exemple lorsque la réplication faiblit ou qu'il y a un retard dans la réplication entre les contrôleurs de domaine. Pour vérifier l'état de la réplication Active Directory, utilisez la commande repadmin /replsummary.

Quelles sont les considérations de sécurité liées aux verrouillages de compte ?

Lorsque vous déterminez comment gérer les verrouillages de compte dans votre entreprise, examinez attentivement les options qui s'offrent à vous.

Tout d'abord, il est important de respecter les principes d'accès avec le moins de privilèges possible, ce qui signifie que les administrateurs ne disposent que des autorisations nécessaires pour faire leur travail. L'inconvénient est que cela limite la portée de l'utilisation de PowerShell par les administrateurs pour empêcher la gestion non autorisée des verrouillages de compte.

Deuxièmement, s'il est possible de créer des scripts PowerShell qui automatisent le processus de déverrouillage des comptes, il est important de protéger ces scripts contre tout accès non autorisé. Si vous avez correctement mis en œuvre l'accès avec le moins de privilèges possible, cela limite l'accès non autorisé à ces scripts. Cette limitation empêche toute modification malveillante de votre code et empêche les attaquants d'accéder au code pour en savoir plus sur votre infrastructure.

Enfin, il est important de vérifier les modèles d'accès aux comptes avant de déverrouiller un compte. Si vous constatez qu'un compte, en particulier un compte privilégié, est verrouillé à plusieurs reprises, cela peut indiquer qu'un attaquant cible ce compte.

Comment définir la politique de verrouillage de l'entreprise

Vous pouvez ajuster les paramètres de la politique de verrouillage des comptes à l'aide de l'éditeur de gestion des stratégies de groupe et en accédant au menu suivant : Configuration de l'ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies de compte > Stratégie de verrouillage des comptes. Les paramètres de stratégie de groupe offrent des options permettant d'ajuster la durée de verrouillage des comptes, le seuil et le compteur de réinitialisation du verrouillage.

Microsoft ne dispose pas de bonnes pratiques universellement applicables en matière de verrouillage de compte. Certaines documentations Microsoft suggèrent de définir le seuil de verrouillage de compte à 0 (pour empêcher les attaques par déni de service) ou à 10. Si vous configurez le verrouillage des comptes, Microsoft recommande de définir une durée de verrouillage relativement courte, par exemple 15 minutes.

Pour approfondir sur Windows