L'homme, comme on le sait, est une créature paresseuse.
Surtout quand il s'agit de choisir un mot de passe solide.
Je pense que chaque administrateur a déjà été confronté à la problématique de l'utilisation de mots de passe simples et standards. Ce phénomène est souvent observé parmi les hauts dirigeants d'une entreprise. Oui, précisément parmi ceux qui ont accès à des informations secrètes ou commerciales, et il serait extrêmement indésirable d'éliminer les conséquences d'une fuite/de la compromission de mot de passe et des incidents qui en découlent.
Dans ma pratique, il y a eu un cas où, dans un domaine Active Directory avec une politique de mot de passe activée, des comptables ont eux-mêmes eu l'idée que des mots de passe comme « Pas$w0rd1234 » répondaient parfaitement aux exigences de la politique. Cela a conduit à une utilisation généralisée de ce mot de passe partout. Il se distinguait parfois seulement par un ensemble de chiffres.
J'ai vraiment eu envie de pouvoir non seulement activer la politique de mot de passe et de définir un ensemble de caractères, mais aussi de filtrer un dictionnaire. Pour exclure la possibilité d'utiliser des mots de passe de ce type.
La société Microsoft nous informe gentiment via un lien que quiconque sait manier correctement un compilateur, un IDE, et sait prononcer correctement C++, peut lui-même compiler et utiliser la bibliothèque nécessaire à sa guise. Je ne suis pas capable de faire cela, j'ai donc dû chercher une solution prête à l'emploi.
Après une longue heure de recherche, deux options de solutions au problème m'ont été révélées. Je parle bien sûr d'une solution OpenSource. Car il existe également des options payantes — de toutes sortes.
Option n°1.
Il n'y a pas eu de commits depuis environ 2 ans. L'installateur d'origine fonctionne de manière aléatoire, il faut le modifier à la main. Crée son propre service distinct. Lors de la mise à jour du fichier de mots de passe, la DLL ne prend automatiquement pas en compte le contenu modifié, il faut arrêter le service, attendre un timeout, éditer le fichier, puis redémarrer le service.
Pas terrible !
Option n°2.
Le projet est actif, vivant et il n'est même pas nécessaire de le secouer pour le faire fonctionner.
L'installation du filtre consiste à copier deux fichiers et à créer plusieurs entrées dans le registre. Le fichier des mots de passe n'est pas en lecture seule, c'est-à-dire qu'il est accessible pour modification et, selon l'intention de l'auteur du projet, il est simplement lu toutes les minutes. De plus, grâce à des entrées supplémentaires dans le registre, il est possible d'effectuer des réglages supplémentaires tant du filtre que des subtilités de la politique de mot de passe.
Donc.
Donné : domaine Active Directory test.local
station de travail Windows 8.1 (pour le cas étudié, cela n'est pas essentiel)
filtre de mots de passe PassFiltEx
- Téléchargez la dernière version via le lien
- Copier PassFiltEx.dll dans C:\Windows\System32 ou %SystemRoot%\System32).
Copier PassFiltExBlacklist.txt dans C:\Windows\System32 ou %SystemRoot%\System32). Si nécessaire, complétez-le avec vos propres modèles
- Modifiez la clé du registre : HKLM\SYSTEM\CurrentControlSet\Control\Lsa => Packages de notification
Ajoutez PassFiltEx à la fin de la liste. (Pas besoin d'indiquer l'extension.) La liste complète des packages utilisés pour la vérification ressemblera à ceci : «rassfm scecli PassFiltEx«.
- Redémarrez le contrôleur de domaine.
- Répétez la procédure ci-dessus pour tous les contrôleurs de domaine.
Vous pouvez également ajouter les entrées de registre suivantes, ce qui offre une plus grande flexibilité dans l'utilisation de ce filtre :
Section : HKLM\SOFTWARE\PassFiltEx — créé automatiquement.
- HKLM\SOFTWARE\PassFiltExBlacklistFileName, REG_SZ, Par défaut : PassFiltExBlacklist.txt
BlacklistFileName — permet d'indiquer un chemin personnalisé vers le fichier contenant les modèles de mots de passe. Si cette entrée du registre a une valeur vide ou n'existe pas, le chemin par défaut est utilisé, à savoir — %SystemRoot%\System32. Il est possible d'indiquer même un chemin réseau, MAIS il faut se rappeler que le fichier de modèles doit avoir des autorisations claires pour la lecture, l'écriture, la suppression et la modification.
- HKLM\SOFTWARE\PassFiltExTokenPercentageOfPassword, REG_DWORD, Par défaut : 60
TokenPercentageOfPassword — permet d'indiquer le pourcentage d'occurrence du masque dans le nouveau mot de passe. Par défaut, la valeur est de 60 %. Par exemple, si un pourcentage d'occurrence de 60 est indiqué et qu'une ligne starwars figure dans le fichier de modèles, alors le mot de passe Starwars1! sera rejeté, tandis que le mot de passe starwars1!DarthVader88 sera accepté, car le pourcentage d'occurrence de la chaîne dans le mot de passe est inférieur à 60 %
- HKLM\SOFTWARE\PassFiltExRequireCharClasses, REG_DWORD, Par défaut : 0
RequireCharClasses — permet d'étendre les exigences en matière de mots de passe par rapport aux exigences de complexité standard d'Active Directory. Les exigences de complexité intégrées nécessitent 3 des 5 types de caractères différents possibles : Majuscules, Minuscules, Chiffres, Spécial et Unicode. Grâce à ce paramètre de registre, vous pouvez définir vos propres exigences de complexité pour les mots de passe. La valeur que vous pouvez spécifier est un ensemble de bits, chacune représentant une puissance de 2.
C'est-à-dire — 1 = minuscule, 2 = majuscule, 4 = chiffre, 8 = caractère spécial, et 16 = caractère Unicode.
Ainsi, avec une valeur de 7, les exigences seront “Majuscules AND minuscules AND chiffres”, et avec une valeur de 31 — “Majuscules AND minuscules AND chiffres AND caractère spécial AND caractère Unicode”.
Vous pouvez même combiner — 19 = “Majuscules AND minuscules AND caractère Unicode”.
Une série de règles pour la création du fichier de modèles :
- Les modèles ne tiennent pas compte de la casse. Par conséquent, l'entrée dans le fichier starwars et StarWarS sera considérée comme une même valeur.
- Le fichier de liste noire est relu toutes les 60 secondes, vous pouvez donc le modifier tranquillement ; après une minute, les nouvelles données seront déjà utilisées par le filtre.
- À ce jour, il n’y a pas de prise en charge de l'Unicode pour la vérification par modèle. Cela signifie que l'utilisation de caractères Unicode dans les mots de passe est possible, mais le filtre ne fonctionnera pas. Ce n'est pas critique, car je n'ai pas vu d'utilisateurs utilisant des mots de passe en Unicode.
- Il est préférable de ne pas autoriser les lignes vides dans le fichier de modèles. On voit ensuite une erreur dans le débogage lors du chargement des données à partir du fichier. Le filtre fonctionne, mais pourquoi avoir des exceptions inutiles ?
Pour le débogage, des scripts batch sont inclus dans l'archive, permettant de créer un journal et de le analyser ensuite à l'aide de, par exemple,
Ce filtre de mots de passe utilise l'Event Tracing for Windows.
Le fournisseur ETW pour ce filtre de mots de passe — 07d83223-7594-4852-babc-784803fdf6c5. Par exemple, vous pouvez configurer le traçage des événements après le prochain redémarrage :
logman créer trace autosessionPassFiltEx -o %SystemRootbugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets
Le traçage sera lancé après le prochain redémarrage du système. Pour arrêter :
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
Toutes ces commandes sont indiquées dans les scripts StartTracingAtBoot.cmd et StopTracingAtBoot.cmd.
Pour un contrôle ponctuel du fonctionnement du filtre, vous pouvez utiliser StartTracing.cmd et StopTracing.cmd.
Pour lire confortablement les sorties de débogage de ce filtre dans Microsoft Message Analyzer il est recommandé d'utiliser les paramètres suivants :


Lors de l'arrêt du journal et de l'analyse dans Microsoft Message Analyzer tout apparaît à peu près de cette manière :

Ici, on voit qu'il y a eu une tentative de définir un mot de passe pour l'utilisateur — c'est le mot magique SET dans le débogage. Le mot de passe a été rejeté en raison de sa présence dans le fichier de modèles et d'une correspondance de plus de 30 % avec le texte saisi.
Lors d'une tentative réussie de changement de mot de passe, nous voyons ce qui suit :

Il y a un certain inconvénient pour l'utilisateur final. Lors d'une tentative de changement de mot de passe qui figure sur la liste du fichier de modèles, le message à l'écran n'est pas très intelligent et réfléchi par rapport au message standard lors de l'échec de la politique des mots de passe.

Donc, préparez-vous à des appels et à des cris : « J'ai saisi le mot de passe comme il faut, mais ça ne fonctionne pas. »
Conclusion.
Cette bibliothèque permet d'interdire l'utilisation de mots de passe simples ou standards dans le domaine Active Directory. Dites « Non ! » aux mots de passe tels que : « P@ssw0rd », « Qwerty123 », « ADm1n098 ».
Oui, sans aucun doute, les utilisateurs vous aimeront encore plus pour cette préoccupation pour leur sécurité et la nécessité de créer des mots de passe complexes. Et, peut-être, le nombre d'appels et de demandes d'aide concernant les mots de passe augmentera. Mais la sécurité a un prix.
Liens vers les ressources utilisées :
Article de Microsoft sur la bibliothèque personnalisée de filtrage de mots de passe :
PassFiltEx :
Lien vers la version :
Listes de mots de passe :
DanielMiessler lists :
Liste de mots de passe de weakpass.com :
Liste de mots de passe du dépôt berzerk0 :
Microsoft Message Analyzer :
Source : habr.com
