Active Directory : sécuriser les mots de passe avec Lithnet Password Protection for Active Directory


Windows Server 2012R2 Windows Server 2016 Windows Server 2019 Windows Server 2022

Dans ce tutoriel, je vais vous expliquer comment durcir la sécurité des mots de passe avec Lithnet Password Protection for Active Directory.

Lithnet Password Protection for Active Directory est un utilitaire gratuit qui s’installe sur les contrôleurs de domaine, qui va nous permettre d’augmenter la sécurité des mots de passe avec :

  • Créer un dictionnaire de mot de passe interdit, prenant également en compte le remplacement de caractères, par exemple si on interdit password, le mot de passe [email protected]! sera également interdit.
  • Empêcher l’utilisation de mot de passe compromis en se basant sur la base du site haveibeenpwned.com.
  • Empêcher l’utilisation du nom et prénom dans le mot de passe en utilisant également le remplacement de caractère.
  • Gestion avancée de la complexité des mots de passe
  • Utilisation de Regex pour les mots de passe

Maintenant que vous savez l’eau à la bouche, on va voir son installation, sa configuration et son utilisation.

Installation de Lithnet Password Protection for Active Directory

Commencer par télécharger la dernière version disponible : Releases · lithnet/ad-password-protection et déposer le sur un contrôleur de domaine.

Lancer l’exécutable à l’aide d’un double clic.

Au lancement de l’assistant d’installation, cliquer sur Next 1.

Accepter la licence 1 et cliquer sur Next 2.

Laisser les composant par défaut, cliquer sur Next 1.

Si nécessaire, changer l’emplacement des fichiers, cliquer sur Next 1.

Confirmer l’installation en cliquant sur le bouton Install 1.

Patienter pendant l’installation …

Fermer l’assistant en cliquant sur Finish 1.

L’installation est terminée.

Même si cela n’est pas demander, j’ai redémarré le serveur pour la prise en compte de l’installation

Configuration « simple » de Lithnet Password Protection for Active Directory

Pour la configuration de Lithnet Password Protection for Active Directory, je vais le faire en deux étapes, je vais d’abord faire une configuration « simple » afin de vous présenter l’outil et ensuite on verra comment avoir une configuration plus complète.

La configuration se fait en PowerShell, il faut donc importer le module à l’aide la Cmdlet ci-après :

Import-Module LithnetPasswordProtection

Pour illustrer le tutoriel, on va ajouter le mot de passe : password au mot banni. Pour cela entrer la commande ci-dessous :

Add-BannedWord -Value "password"

Avant d’aller plus loin, on va utiliser la Cmdlet Test‐IsBannedWord pour tester si le mot de passe [email protected] est banni.

Entrer la commande :

Test-IsBannedWord -value [email protected]

On peut voir que la commande retourne True, indiquant que le mot de passe est banni

Dans le dossier : C:\Program Files\Lithnet\Active Directory Password Protection\Store\v3\w on retrouve les « bases de données » contenant les mots de passe.

Configuration de la stratégie de groupe pour utiliser Lithnet Password Protection for Active Directory

Pour fonctionner, il faut configurer une stratégie de groupe afin que les paramètres de Lithnet Password Protection for Active Directory soient appliqués.

Ouvrir la console Gestion de stratégie de groupe.

Faire un clic droit sur le conteneur Objets de stratégie de groupe 1 et cliquer sur Nouveau 2.

Nommer la stratégie 1 puis cliquer sur OK 2.

Faire un clic droit sur la stratégie de groupe 1 et cliquer sur Modifier 2.

Aller à l’emplacement suivant pour accéder aux paramètres : Configuration ordinateur / Stratégies / Modèles d’administration / Lithnet / Password protection for Active Directory / Default Policy.

Pour le moment, on va seulement activer 3 paramètres qui vont interdire l’utilisation de l’identifiant, le nom et prénom de l’utilisateur et les mots de passes bannis.

Ouvrir les paramètres Reject password that contain the user’s account name et Reject password that contain the user’s display name. Pour chacun, activer le paramètres 1 puis cliquer sur Appliquer 2 et OK 3.

Ouvrir le paramètre Reject normalized passwords found in the banned word store 1.

Activer le paramètre 1 puis cocher les cases Enable for password set operation 2 et Enable for password change operations 3 si cela n’est pas fait. Cliquer ensuite sur Appliquer 4 et OK 5.

Les deux cases à cocher permettent d’activer l’option lors de la création du compte et lors du changement de mot de passe.

La stratégie de groupe est configurée.

Lier la stratégie de groupe à l’OU Domain Controllers 1, faire un clic droit dessus et cliquer sur Lier un objet de stratégie de groupe existant 2.

Sélectionner la stratégie de groupe 1 et cliquer sur OK 2.

La stratégie est liée à l’OU.

Sur le contrôleur de domaine, forcer la mise à jour des stratégies de groupe avec la commande gpupdate /force.

Tester Lithnet Password Protection for Active Directory

Pour tester Lithnet Password Protection for Active Directory, on va le faire de manière :

  • Depuis le contrôleur de domaine
  • Depuis un ordinateur client

Voici la stratégie de mot de passe (PSO) appliquée à l’utilisateur Batman.

Depuis le contrôleur de domaine avec la console Utilisateurs et ordinateurs Active Directory

Faire un clic droit sur l’utilisateur 1 et cliquer sur Réinitialiser le mot de passe 2.

Entrer un mot de passe présent dans la liste des mots de passe banni, pour password, vous pouvez essayer password et [email protected]

Un message d’erreur s’affiche indiquant que le mot de passe n’est pas valide.

Test depuis un ordinateur

Maintenant, on va tester depuis un ordinateur client, comme si l’utilisateur change lui-même son mot de passe où que celui-ci doit changer le mot de passe à l’ouverture de session.

Comment on peut le voir sur la capture, j’entre le mot de passe [email protected]

Comme on peut le voir, le mot de passe n’est valide.

Les événements de Lithnet Password Protection for Active Directory

Sur le contrôleur de domaine, ouvrir l’observateur d’événement, puis aller voir le journal Application qui se trouve dans Journaux Windows.

Comme on peut le voir sur la capture ci-dessous, il y a différentes entrées de l’application LithnetPasswordProtection.

Toujours sur cette même capture, la ligne sélectionnée, correspond à la tentative de changement du mot de passe sur le client Windows 10. On peut lire dans la description, qu’il a été refusé, car le mot de passe est présent dans la base de données des mots de passe bannis.

Pour plus d’informations sur les différents événements : Event logging and reporting · lithnet/ad-password-protection Wiki

Configuration « avancée » de Lithnet Password Protection for Active Directory

Maintenant, on va voir la configuration « avancé ».

Utiliser la base de mot de passe Have I Been Pwned

Importer la base Have I Been Pwned

L’importation de la base de donnée, nécessite d’avoir 40 Go de disponible sur le serveur.

Le but est d’importer le hash ntlm des mots de passe compromis, au moment de la rédaction de ce tutoriel, le fichier fait 20 Go décompressé.

Sur cette page : Have I Been Pwned: Pwned Passwords télécharger la liste des mots de passe au format NTML trier par hash.

Une fois télécharger, décompresser l’archive, puis ouvrir une fenêtre PowerShell et entrer les commandes pour importer le fichiers :

Import-Module LithnetPasswordProtection
Import-CompromisedPasswordHashes -Filename "C:\tmp\pwned-passwords-ntlm-ordered-by-hash-v7\pwned-passwords-ntlm-ordered-by-hash-v7"

Adapter le chemin à votre configuration

Patienter pendant l’import qui peut prendre en 20 et 45 minutes en fonction du serveur.

Tester si un mot de passe est compromis

Il est possible de tester si un mot de passe est compromis à l’aide de la Cmdlet : Test-IsCompromisedPassword.

Test-IsCompromisedPassword -value iloveyou

On peut voir que le mot de passe iloveyou est compromis, la commande retour True.

Tester si le mot de passe d’un utilisateur est compromis

Il est aussi possible de tester si le hash d’un mot de passe d’utilisateur est compromis avec la Cmdlet : Test‐IsADUserPasswordCompromised.

Test-IsADUserPasswordCompromised -upn [email protected]

Ici, on peut voir que le hash du mot de passe [email protected] est connu.

Petite précision, ce n’est pas parce que le hash du mot de passe est dans la base Have I Been Pwned , que le couple identifiant / mot de passe est compromis, par contre si on récupère le hash du mot de passe lors d’une identification NTML, on pourra en déduire son mot de passe.

Il existe un script qui permet de tester l’ensemble des utilisateurs de l’Active Directory ici : Audit existing passwords · lithnet/ad-password-protection Wiki (github.com)

Empêcher l’utilisation de mot de passe compromis

Il est possible d’empêcher l’utilisation de mot de passe compromis en activant le paramètre : Reject normalized passwords found in the compromised password store.

Le paramètre fonctionne de la même manière que pour les mots de passe bannis.

Configurer la complexité du mot de passe en fonction de sa longueur

Lithnet Password Protection for Active Directory permet aussi de configurer la complexité du mot de passe en fonction de sa longueur.

Par exemple : si le mot de passe fait moins de 8 caractères, il doit comporter lettre + chiffre + symbole, si le mot de passe fait moins de 15 caractères, c’est-à-dire entre 8 et 15, il pourra être composé de lettre + chiffre (pas de symbole) et si le mot de passe fait plus de 15 caractères pas de complexité particulière.

La paramètre de stratégie de groupe à configurer est Enable length-based complexity rules.


Lithnet Password Protection for Active Directory est une solution intéressante pour durcir la politique de mot de passe qui permet de créer un dictionnaire de mot de passe interdit.

À travers cet article, je tiens également à remercier l’auteur Ryan Newington pour la mise à disposition gratuite de cet outil.

Je vous invite également à regarder son Github où il partage d’autre programme.



Notable Replies

Continue the discussion at community.rdr-it.io

Participants