[Active Directory] Verrouillage des comptes et audit

Dans cet article, nous allons voir le suivi du verrouillage de compte par suite d'une succession de tentatives de connexion avec un mot de passe erroné.

L'environnement de test est composé de deux contrôleurs de domaine : LAB2016dc1 et LAB2019DC2 et d'un poste client Windows 10 LABCL1. Tous les rôles FSMO sont gérés par LAB2016DC1.

La stratégie de verrouillage a été définie dans la GPO « Default Domain Policy ». Nous avons défini un verrouillage de 10 minutes si pendant une durée de 10 minutes, 3 mauvais mot de passe sont saisie.

 

Nous souhaitons suivre dans les journaux d'événement, les opérations de verrouillage des comptes par suite d'erreurs de saisies.

Pour cela, nous allons créer une GPO au niveau de l'OU « Domain Controller »

La GPO modifie la stratégie d'audit afin d'activité l'audit de verrouillage des comptes, comme dans l'exemple ci-dessous :

Lorsque l'audit est activé et lorsqu'un compte est verrouillé par le système, nous retrouvons dans l'événement 4740 dans le journal.

Comme nous le montre l'image ci-dessous, le nom du compte en question est identifié.

Dans un environnement avec plusieurs contrôleurs de domaine, on peut supposer qu'il faut donc rechercher les événement 4740 sur l'ensemble des contrôleurs de domaine, vu que nous ne savons pas lequel a verrouillé le compte.

Dans l'extrait de l'article suivant, vous pourrez constater que l'émulateur PDC gère certaines opérations spécifiques.

Dans un Windows, le titulaire du rôle émulateur PDC conserve les fonctions suivantes :

  • Les modifications de mot de passe apportées par d'autres DCS dans le domaine sont répliquées de manière lysible sur l'émulateur PDC.
  • Lorsque des échecs d'authentification se produisent sur un dc donné en raison d'un mot de passe incorrect, les échecs sont transmis à l'émulateur PDC avant qu'un message d'échec de mot de passe incorrect ne soit signalé à l'utilisateur.
  • Le verrouillage du compte est traité sur l'émulateur PDC.
  • L'émulateur PDC exécute toutes les fonctionnalités qu'un PDC Windows NT 4.0 Server ou une PDC antérieure effectue pour les clients Windows NT 4.0 ou des clients antérieures.

Source : https://docs.microsoft.com/fr-fr/windows/security/threat-protection/auditing/event-4740 .

Il nous suffirait donc de consulter le journal de serveur détenant le rôle Emulateur PDC, afin de retrouver les verrouillages de compte, si l'audit est activé.

Nous allons donc voir un premier script, qui va interroger le journal d'événement du contrôleur de domaine qui joue le rôle d'émulateur PDC.

Pour identifier ceux contrôleur de domaine il suffit d'utiliser la commande suivante : « (get-addomain).pdcemulator » .

 

Le script suivant recherche les événements 4740 sur le DC avec le rôle FSMO Emulateur PDC :

 

#Liste des contrôleurs de domaine

$dc = (get-addomain).pdcemulator

# événement à rechercher

$Filter = "Event[System[(EventID=4740)]]"

 

#commande a exécuter

    $remoteScript = {

     Get-WinEvent -Logname security -FilterXPath $Using:Filter |

     select @{Label='IdEvent';Expression={$_.id}}, @{Label='Time';Expression={$_.TimeCreated.ToString('g')}},

     @{Label='UserName';Expression={$_.Properties[0].Value}},

    @{Label='WorkstationName';Expression={$_.Properties[1].Value}}

 

    }

 

 

$list=@()

$list+=(Invoke-Command -ComputerName $dc -ScriptBlock $remoteScript) #| select idevent,time,username,pscomputername

 

 

#renvoie le résultat en format tableau

$list | Sort-Object { $_.time -as [DateTime] } -Descending | ft

 

Le résultat nous montre que le compte a été verrouillé à 4 reprises.

 

 

 

Mais que se passe-t-il, si l'émulateur PDC n'est pas disponible :

- Le compte, sera-t-il verrouillé ?

- Un autre contrôleur de domaine, va-t-il le verrouiller ?

 

En fait dans la période du 14/10/2021, le contrôleur de domaine LAB2016DC1 a été arrêté pendant 30 minutes environ vers 21 :00. Pendant cette période, l'utilisateur « toto » a essayé de se connecter avec un mauvais mot de passe.

Nous modifions les scripts précédents, et au lieu d'interroger l'émulateur PDC, nous allons interroger tous les contrôleurs de domaine.

Pour cela, nous utilisons une variable $DCs qui va contenir une liste de tous les contrôleurs de domaine : $dcs = (Get-ADDomainController -filter *).hostname

 

 

#Liste des contrôleurs de domaine

$dcs = (Get-ADDomainController -filter *).hostname

# événement à rechercher

$Filter = "Event[System[(EventID=4740)]]"

 

#commande a exécuter

    $remoteScript = {

     Get-WinEvent -Logname security -FilterXPath $Using:Filter |

     select @{Label='IdEvent';Expression={$_.id}}, @{Label='Time';Expression={$_.TimeCreated.ToString('g')}},

     @{Label='UserName';Expression={$_.Properties[0].Value}},

    @{Label='WorkstationName';Expression={$_.Properties[1].Value}}

    }

$list=@()

# boucle d'execution pour chaque contrôleur de domaine, envoie d'une commande à distance

Foreach ($dc in $dcs)

{

$list+=(Invoke-Command -ComputerName $dc -ScriptBlock $remoteScript) #| select idevent,time,username,pscomputername

}

 

#renvoie le résultat en format tableau

$list | Sort-Object { $_.time -as [DateTime] } -Descending | ft

 

 

Le résultat ci-dessous nous montre, que Lorsque LAB2016DC1 était arrêté, le serveur lab2019DC2 a verrouillé le compte. Le serveur lab2016DC1 a redémarré au moment de la tentative de 21 :26, et l'événement est présent sur les deux contrôleurs de domaine.

Dans les tentatives précédentes, l'émulateur PDC étant disponible, il a donc traité les opérations de verrouillages de compte.

J'ai vu quelques articles, expliquant que pour rechercher les verrouillages de comptes il suffit de lire le journal du serveur possédant le rôle d'émulateur.

Dans le principe c'est vrai, sauf si l'émulateur PDC a été indisponible pendant un certain temps, ou si le rôle FSMO a été déplacé sur un autre contrôleur de domaine.

 

Theme: 

Systeme: 

Annee: