Comment changer les mots de passe d’un compte sur un serveur OpenLDAP

introduction

Les systèmes LDAP sont souvent utilisés pour stocker les informations de compte d’utilisateur. En fait, certaines des méthodes les plus courantes d’authentification sur LDAP impliquent des informations de compte stockées dans des entrées LDAP.

Que vos entrées LDAP soient utilisées par des services externes pour les informations de compte ou simplement pour des liaisons d’autorisation spécifiques à LDAP, il est important de comprendre la gestion des mots de passe. Dans ce guide, nous expliquerons comment modifier le mot de passe d’une entrée LDAP.

Changer votre propre mot de passe utilisateur

La possibilité de changer les mots de passe est gérée par les contrôles d’accès du serveur LDAP. LDAP est généralement configuré pour permettre aux comptes de modifier leurs propres mots de passe. Cela fonctionne bien si, en tant qu’utilisateur, vous connaissez votre mot de passe précédent.

Nous pouvons utiliser l’outil + ldappasswd + pour modifier les mots de passe des comptes d’utilisateurs. Pour changer votre mot de passe, vous devez vous connecter à une entrée utilisateur LDAP et vous authentifier avec le mot de passe actuel. Ceci suit la même syntaxe générale que les autres outils OpenLDAP.

Au-delà des arguments de liaison classiques, nous devrons fournir plusieurs arguments pour changer le mot de passe. Vous devez spécifier l’ancien mot de passe en utilisant l’une des options suivantes:

  • * + -a [oldpassword] + *: le drapeau + -a + vous permet de fournir l’ancien mot de passe dans le cadre de la requête sur la ligne de commande.

  • * + -A + *: Cet indicateur est une alternative à l’indicateur + -a + qui vous demandera l’ancien mot de passe lors de la saisie de la commande.

  • * + -t [oldpasswordfile] + *: Cet indicateur peut être utilisé à la place de celui ci-dessus pour lire l’ancien mot de passe à partir d’un fichier.

Vous devez également spécifier le nouveau mot de passe en utilisant l’une des options suivantes:

  • * + -s [newpassword] + *: L’indicateur + -s + est utilisé pour fournir le nouveau mot de passe sur la ligne de commande.

  • * + -S + *: Cette variante de l’indicateur + -s + vous demandera le nouveau mot de passe lors de la saisie de la commande.

  • * + -T [newpasswordfile] + *: Cet indicateur peut être utilisé à la place de ci-dessus pour lire le nouveau mot de passe à partir d’un fichier.

En utilisant une option de chaque groupe, ainsi que les options habituelles pour spécifier l’emplacement du serveur, l’entrée de liaison et le mot de passe, vous pouvez modifier votre mot de passe LDAP. Techniquement, OpenLDAP n’a pas toujours besoin de l’ancien mot de passe puisqu’il est utilisé pour se lier à l’entrée, mais d’autres implémentations LDAP l’exigent, il est donc préférable de le définir de toute façon.

Typiquement, la commande ressemblera à quelque chose comme ceci:

ldappasswd -H ldap:// -x -D "" -W -A -S

Cela permettra de se connecter au serveur LDAP spécifié, de s’authentifier avec l’entrée du nom distinctif de l’utilisateur, puis d’envoyer une série d’invites. Il vous sera demandé de fournir et de confirmer l’ancien mot de passe, le nouveau mot de passe, puis vous devrez fournir à nouveau l’ancien mot de passe pour que la liaison réelle ait lieu. Ensuite, votre mot de passe changera.

Puisque vous allez de toute façon changer votre mot de passe, il pourrait être plus facile de donner votre ancien mot de passe sur la ligne de commande plutôt que par le biais d’invites. Vous pouvez faire ça comme ça:

ldappasswd -H ldap:// -x -D "" -w  -a  -S

Modification du mot de passe d’un utilisateur à l’aide de la liaison RDNDN

L’outil + ldappasswd + vous permet également de modifier le mot de passe d’un autre utilisateur si nécessaire en tant qu’administrateur LDAP. Techniquement, vous pouvez vous connecter à n’importe quel compte disposant d’un accès en écriture au mot de passe du compte, mais cet accès est généralement limité à l’entrée rootDN (administrative) et au compte lui-même.

Pour modifier le mot de passe d’un autre utilisateur, vous devez vous connecter à une entrée avec des privilèges élevés, puis spécifier l’entrée que vous souhaitez modifier. En règle générale, vous liez le nom de domaine rootDN (consultez la section suivante pour savoir comment trouver ce compte).

La commande de base + ldappasswd + sera très similaire, la seule différence étant que vous devez spécifier l’entrée à modifier à la fin de la commande. Vous pouvez utiliser les options + -a + ou + -A + si l’ancien mot de passe est disponible, mais ce n’est souvent pas le cas lorsque vous modifiez le mot de passe d’un utilisateur. Si vous n’avez pas l’ancien mot de passe, laissez-le simplement.

Par exemple, si le nom de domaine de votre serveur LDAP est + cn = admin, dc = exemple, dc = com + et que le mot de passe que vous souhaitez modifier concerne le `+ uid = bob, ou = personnes, dc = exemple, dc = com + `entry, vous pouvez taper ceci:

ldappasswd -H ldap:// -x -D "" -W -S "uid=bob,ou=people,dc=example,dc=com"

Le nouveau mot de passe de Bob vous sera demandé, puis le mot de passe nécessaire pour vous connecter à l’entrée admin afin d’apporter la modification.

Changer le mot de passe RDNDN

Si vous avez oublié votre mot de passe administratif LDAP, vous devez disposer d’un accès root ou d’un accès «+ sudo +» sur le serveur du système LDAP pour le réinitialiser. Connectez-vous à votre serveur pour commencer.

Recherche des informations rootDN actuelles

Tout d’abord, vous devrez trouver le compte RootDN et le hachage de mot de passe RootDN actuel. Ceci est disponible dans la configuration spéciale + cn = config + DIT. Nous pouvons trouver les informations que nous recherchons en tapant:

sudo ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif

Cela devrait renvoyer le compte rootDN et le mot de passe de votre DIT. Il vous indiquera également la base de données de configuration où cela est défini. Nous avons également écrit ces informations dans un fichier de notre répertoire personnel afin que nous puissions le modifier une fois que nous avons le nouveau hachage du mot de passe:

RootDN et RootPW pour DIT

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

Hachage d’un nouveau mot de passe

Ensuite, nous pouvons utiliser l’utilitaire + slappasswd + pour hacher un nouveau mot de passe. Nous voulons utiliser le même hash qui était dans la ligne + olcRootPW + que nous avons interrogée, indiqué par la valeur préfixée par des accolades. Dans notre cas, c’est + {SSHA} +.

Utilisez l’utilitaire + slappasswd + pour générer un hachage correct pour le mot de passe que vous souhaitez utiliser. Nous allons ajouter notre nouveau hash à la fin du fichier que nous avons créé avec la dernière commande. Vous devrez spécifier le chemin d’accès complet à la commande si vous utilisez un compte non root:

/usr/sbin/slappasswd -h  >> ~/newpasswd.ldif

Vous serez invité à entrer et à confirmer le nouveau mot de passe que vous souhaitez utiliser. La valeur hachée sera ajoutée à la fin de notre fichier.

Changer le mot de passe dans Config DIT

Maintenant, nous pouvons éditer le fichier pour construire une commande LDIF valide pour changer le mot de passe. Ouvrez le fichier que nous avons écrit:

nano ~/newpasswd.ldif

Ça devrait ressembler a quelque chose comme ca:

~ / newpasswd.ldif

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

Vous pouvez éventuellement avoir plusieurs valeurs selon que votre serveur LDAP possède plusieurs DIT. Si tel est le cas, utilisez la valeur + olcRootDN + pour trouver le compte correct que vous souhaitez modifier. Supprimez les autres triplets + dn +, + olcRootDN +, + olcRootPW + s’il en existe.

Une fois que vous avez confirmé que la ligne + olcRootDN + correspond au compte que vous essayez de modifier, commentez-la. En dessous, nous ajouterons deux lignes. La première doit spécifier + changetype: modify +, et la deuxième ligne doit indiquer à LDAP que vous essayez de + replace: olcRootPW +. Il ressemblera à ceci:

~ / newpasswd.ldif

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com


olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

Supprimez maintenant le hachage figurant dans la ligne + olcRootPW + et remplacez-le par celui que vous avez généré ci-dessous. Supprimez toutes les lignes superflues. Cela devrait maintenant ressembler à ceci:

~ / newpasswd.ldif

dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW
olcRootPW:

Enregistrez et fermez le fichier lorsque vous avez terminé.

Maintenant, nous pouvons appliquer le changement en tapant:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f ~/newpasswd.ldif

Cela modifiera le mot de passe administrateur dans le répertoire + cn = config.

Changer le mot de passe dans le DIT normal

Cela a changé le mot de passe pour l’entrée dans le DIT administratif. Cependant, nous devons toujours modifier l’entrée dans le DIT normal. Actuellement, l’ancien et le nouveau mots de passe sont valides. Nous pouvons résoudre ce problème en modifiant l’entrée DIT normale à l’aide de nos nouvelles informations d’identification.

Ouvrez à nouveau le fichier LDIF:

nano ~/newpasswd.ldif

Remplacez la valeur de la ligne + dn: + par la valeur RDNDN que vous avez commentée précédemment. Cette entrée est notre nouvelle cible pour le changement de mot de passe. Nous devrons également changer * les * occurrences de + olcRootPW + avec + userPassword + afin de modifier la valeur correcte. Lorsque vous avez terminé, le fichier LDIF devrait ressembler à ceci:

[output ~/newpasswd.ldif]
dn:
changetype: modify
replace:
: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

Enregistrez et fermez le fichier.

Nous pouvons maintenant modifier le mot de passe de cette entrée en le liant à l’aide du nouveau mot de passe que nous avons défini dans le fichier DIT de configuration. Vous devrez vous connecter à l’entrée RootDN pour effectuer l’opération:

ldapmodify -H ldap:// -x -D "" -W -f ~/newpasswd.ldif

Vous serez invité à entrer le nouveau mot de passe que vous avez défini dans le fichier DIT de configuration. Une fois authentifié, le mot de passe sera modifié, ne laissant que le nouveau mot de passe à des fins d’authentification.

Conclusion

LDAP est souvent utilisé pour stocker les informations de compte. Il est donc important de savoir comment gérer correctement les mots de passe. La plupart du temps, le processus est relativement simple, mais pour les opérations plus intensives, vous devriez toujours pouvoir modifier les mots de passe avec un peu de travail.