J’ai récemment fait un audit de l’Active Directory avec pingcastle. J’ai remarqué que certains comptes dans l’Active Directory étaient actifs, mais avait un mot de passe vide . Cela ne devrait pas être possible si il y a une politique de mot de passe en place. Tout au moins, c’est que je pensais …
Pourquoi y a-t-il des mots de passe vide dans l’Active Directory?
Les comptes actifs avec des mots de passe vides sont une faille de sécurité à mes yeux et ne devraient tout simplement pas être possibles.
Pour répondre à la question à laquelle cela se produit et comment l’éviter, nous devons jeter un coup d’œil à l’attribut UserAccountControl.
Attribut : « UserAccountControl »
J’ai découvert que la raison d’un mot de passe vide dans Active Directory peut être trouvé ici – dans l’attribut UserAccountControl.
Dans cet attribut, l’indicateur « PASSWD_NOTREQD » peut être défini. Si cet indicateur est défini, un administrateur de domaine peut émettre un mot de passe vide, contournant la stratégie de mot de passe. L’utilisateur ne peut pas faire cela.
Dans Active Directory, vous pouvez rechercher les comptes avec les indicateurs définis.
Le filtre LDAP suivant recherchera les comptes qui sont actifs mais dont l’indicateur «PASSWD_NOTREQD » est défini.
(&(objectClass=user)(objectCategory=person)(userAccountControl=544)(pwdLastSet=0)) |
Pour les comptes avec l’indicateur « PASSWD_NOTREQD » à l’attribut « UserAccountControl« , la valeur est 544 .
La valeur standard de l’attribut « UserAccountControl« (lors de la configuration du compte) est 512 . L’indicateur « PASSWD_NOTREQD » a pour valeur 32 et augmente la valeur de 32 à 544.
Comment est définit l’indicateur « PASSWD_NOTREQD »
L’indicateur « PASSWD_NOTREQD » peut être défini
- lors de la migration depuis NT4.
- Si vous utilisez IADsContainer.Create, IADs.Put ou IADs.SetInfo
- Si l’utilisateur est créé avec ADSIEDIT.MSC
En suivant le lien suivant, vous trouverez une description de la manière dont on peut le supprimer de l’attribut « UserAccountControl » : http://technet.microsoft.com/en-us/library/ee617249.aspx
$usersWithNoPwdRequired = Get-ADUser -LDAPFilter "(&(objectClass=user) (objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=544))" foreach($user in $usersWithNoPwdRequired ){ Set-ADAccountControl $user -PasswordNotRequired $false } |
Une description de l’attribut « UserAccountControl » est disponible sous:
http://support.microsoft.com/kb/305144 .