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 P@ssw0rd! 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
- Configuration "simple" de Lithnet Password Protection for Active Directory
- Configuration de la stratégie de groupe pour utiliser Lithnet Password Protection for Active Directory
- Tester Lithnet Password Protection for Active Directory
- Les événements de Lithnet Password Protection for Active Directory
- Configuration "avancée" de Lithnet Password Protection for Active Directory
- Configurer la complexité du mot de passe en fonction de sa longueur
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 P@ssw0rd est banni.
Entrer la commande :
Test-IsBannedWord -value P@ssw0rd
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 P@ssw0rd.
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 P@ssw0rd.
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 batman@rdr-it.lab
Ici, on peut voir que le hash du mot de passe batman@rdr-it.lab 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.