5 votes

Définir le hachage du mot de passe Active Directory à une valeur SHA1 ?

Je synchronise les utilisateurs d'un système externe avec le nôtre. Je dois définir le mot de passe de l'utilisateur dans notre Active Directory.

On ne me fournit que les SHA1 des mots de passe des utilisateurs externes, et setPassword va hacher tout ce que je vais saisir.

  • Est-ce que la mise en place de l'utilisateur unicodePwd le champ de hachage réel ?
    • Si c'est le cas, puis-je simplement le définir comme le hachage fourni ?
    • Sinon, comment puis-je définir le hachage stocké par Active-Directory ?

2voto

AD ne stocke pas qu'un seul type de hachage. Lorsque vous changez votre mot de passe, AD reçoit la version en clair du mot de passe, vérifie sa complexité, puis génère et stocke les hachages MD4, MD5, PBKDF2 (4096 * SHA1) et plusieurs autres types de hachages. C'est parce que chaque mécanisme d'authentification (NTLM, Kerberos, Digest,...) utilise une fonction de hachage différente et AD doit les supporter tous.

Les hachages de mots de passe sont stockés dans ces attributs AD : unicodePwd, dBCSPwd, lmPwdHistory, ntPwdHistory et supplementalCredentials. Pour des raisons de sécurité, vous ne pouvez pas les lire via LDAP ou ADSI. Mais j'ai récemment trouvé un moyen de les récupérer et j'ai créé un fichier cmdlet PowerShell qui peuvent le faire :

Get-ADReplAccount -SamAccountName John -Domain Contoso -Server LON-DC1

Il existe également un moyen peu documenté de pousser des hachages MD4 (alias hachages NT) vers une station de travail ou AD par le biais de l'ancien système de gestion des données. Protocole SAMR . Comme il n'y a pas de commandes intégrées qui exposent cette fonctionnalité, j'ai créé Les cmdlets PowerShell pour faire ça, aussi.

Pour générer un hachage NT, vous pouvez utiliser cette commande PowerShell :

$hash = ConvertTo-NTHash (Read-Host -AsSecureString)

Et enfin, cette commande pousse le hachage NT vers AD :

Set-SamAccountPasswordHash -SamAccountName john -Domain ADATUM -NTHash $hash -Server dc1.adatum.com

Ces commandes peuvent être utilisées pour migrer les mots de passe entre les comptes locaux et les comptes de domaine ou entre AD et Samba. Mais attention, l'authentification Kerberos-AES et WDigest ne fonctionnera pas avec ce compte, seulement NTLM et Kerberos-RC4.

0voto

JPBlanc Points 26156

D'après ce que j'ai compris, vous ne pouvez pas définir unicodePwd au champ de hachage réel. Vous pouvez utiliser le userPasswd comme vous le souhaitez pour votre propre contrôle mais il n'est pas utilisé par Active-Directory.

0voto

ShaMan-H_Fel Points 1146

Pour autant que je sache, ce que vous voulez n'est pas possible. Vous pouvez modifier/définir les mots de passe dans AD en utilisant au moins trois protocoles différents :

Je suis sûr à 100% que LDAP ne peut pas être utilisé, mais vous pouvez vérifier les deux autres, car il y a peut-être un moyen de le faire avec eux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X