IBM Directory Server : gestion des mots de passe

L'installation par défaut de l'annuaire ISDS ne semble pas "terminée" en ce qui concerne la gestion des mots de passe : pas de politique de mot de passe par défaut, pas d'activation non plus. Et une modification par ldapmodify stocke le mot de passe en clair (tout au moins, il ressort en clair dans un ldapsearch).

Autoriser le changement de mot de passe par l'utilisateur

Par défaut, l'utilisateur ne peut pas modifier lui-même son mot de passe. Par exemple, en utilisant la commande ldapchangepwd renvoie une erreur :

/opt/ibm/ldap/V6.3/bin/ldapchangepwd -D uid=jdoe,ou=people,o=example.com -w secret -n SuperSecret
ldap_simple_bind:  Error, Password must be changed after reset
changing password for entry uid=jdoe,ou=people,o=example.com
Insufficient access --- Error, Password may not be modified

Pour résoudre ce problème, il faut :

  • ajouter une ACL permettant le changement de mot de passe en mode "Self"
  • permettre le changement de mot de passe par l'utilisateur lui-même dans la politique de mot de passe (qu'il faut créer)

Ajout d'une politique de mot de passe par défaut

On va créer un fichier LDIF qui contient la définition de la politique globale :

dn: cn=pwdpolicy,cn=ibmpolicies
objectclass: container
objectclass: pwdPolicy
objectclass: ibm-pwdPolicyExt
objectclass: ibm-pwdGroupAndIndividualPolicies
objectclass: top
cn: pwdPolicy
pwdAttribute: userPassword
pwdGraceLoginLimit: 0
pwdLockoutDuration: 0
pwdFailureCountInterval: 0
passwordMaxRepeatedChars: 0
passwordMaxConsecutiveRepeatedChars: 0
pwdMaxAge: 0
pwdMinAge: 0
pwdExpireWarning: 0
passwordMinAlphaChars: 0
passwordMinOtherChars: 0
passwordMinDiffChars: 0
pwdLockout: false
pwdAllowUserChange: true
pwdMustChange: true
pwdSafeModify: false
ibm-pwdGroupAndIndividualEnabled: false
ibm-pwdPolicy: true
pwdCheckSyntax: 1
pwdInHistory: 5
pwdMaxFailure: 3
pwdMinLength: 6

 

Le fichier sera ensuite ajouté à l'annuaire via ldapadd avec un compte administrateur.

Ajout d'une ACL permettant le changement

On va également ajouter une ACL sur l'arborescence qui contient les comptes

dn: ou=people,o=example.com
changetype: modify
add: aclentry
aclentry: access-id:CN=THIS:at.userPassword:rwsc:normal:rsc

Et on l'ajoute avec un ldapmodify

Suite à cela, la modification du mot de passe fonctionne correctement, par l'utilisateur lui-même.

/opt/ibm/ldap/V6.3/bin/ldapchangepwd -D uid=jdoe,ou=people,o=example.com -w secret -n SuperSecret
changing password for entry uid=jdoe,ou=people,o=example.com

Par contre, si on récupère avec un ldapsearch, la valeur est renvoyée en clair...

/opt/ibm/ldap/V6.3/bin/ldapsearch -D uid=jdoe,ou=people,o=example.com -w SuperSecret -b o=example.com uid=jdoe userpassword
uid=jdoe,ou=people,o=example.com
userpassword=SuperSecret

Modifier l'algorithme d'encryption

Par défaut, les mots de passe sont chiffrées avec l'algorithme AES256, qui est symétrique. Du coup, le mot de passe est décodé par le moteur de l'annuaire avant d'être affiché.

Il vaut mieux donc utiliser un algorithme asymétrique type SSHA ou SHA2-x.

dn: cn=configuration
changetype: modify
replace: ibm-slapdPwEncryption
ibm-slapdPwEncryption: ssha

Si on redémarre l'annuaire (ou si on utilise la commande idsldapexop), on voit que le mot de passe est alors stocké de manière irréversible.

/opt/ibm/ldap/V6.3/bin/ldapchangepwd -D uid=jdoe,ou=people,o=example.com -w SuperSecret-n Pa55word
changing password for entry uid=jdoe,ou=people,o=example.com

/opt/ibm/ldap/V6.3/bin/ldapsearch -D uid=jdoe,ou=people,o=example.com -w SuperSecret -b o=example.com uid=jdoe userpassword uid=jdoe,ou=people,o=example.com
userpassword={SSHA}4EqpfNQFq1aWqT+ouD5bEKFPyrIiFSd7AEQORENiet0xYiqgJLi73Q==

Import de mots de passe hachés

Si on migre les données d'un autre annuaire, via un fichier LDIF par exempe, avec un mot de passe chiffré dans un autre algorithme, ITDS utilise alors cet algorithme, et pas celui défini par défaut.

Attention, si on a activé l'option pwdMustChange, dans la politique de mot de passe, l'utilisateur sera obligé de modifier son mot de passe à la première connexion.

Ce paramètre est dynamique, on peut donc le repasser à False si nécessaire.

 

 

 

 

 

Catégorie
Tag

Ajouter un commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.