Au menu, un petit problème qui m'a embêté aujourd'hui. Ça pourra paraître bateau à pas mal de gens, mais j'ai bien dû chercher une heure avant de trouver la solution par moi-même, car Google ne m'aidait pas trop. J'espère que ça servira donc à quelqu'un.

Le problème

J'avais une vieille installation de OpenLDAP sur une machine, installé et configuré automatiquement par les outils Debian.

Si je ne me trompe pas, ces outils installent une base sécurisée, dans le sens où le mot de passe admin n'est stocké en clair nulle part. Ils le demandent à l'installation (avec le Bind DN associé), l'insèrent dans le référentiel, et configurent le fichier slapd.conf pour autoriser ce Bind DN à écrire partout.

Me voilà bien embêté, 2 ans après, pour accéder à ce Bind DN ! Les mots de passe par défaut habituels y sont tous passés: password, secret, admin... Rien n'y fait.

La manière brute

Le premier essai, naïf, a consisté à accéder au référentiel directement. Un ptit coup de slapcat permet de récupérer l'intégralité du contenu du référentiel. Là, on a, pour notre DN, un champ userPassword, qui ressemble à ça :

userPassword:: e01ENX1BjhU4KiFacVhpaT0oKYDeRTNuQ3p3PT0=

(Note: je l'ai modifié, ce n'est sans doute plus quelque chose qui veut dire quelque chose).

Ce champ est encodé en Base64, pour le décoder j'ai utilisé l'outil base64 de la manière suivante :

echo 'e01ENX1BjhU4KiFacVhpaT0oKYDeRTNuQ3p3PT0=' | base64 -d

Cela a retourné la chaîne {crypt}AT35SkUje86dKL7KE3nCzw== (ou quelque chose approchant, j'avoue que je triche).

Zut, une chaîne hashée... J'aurais dû m'y attendre ! Je me suis donc fait un petit fichier passwd-like contenant une ligne :

admin:AT35SkUje86dKL7KE3nCzw

Et j'ai lancé l'excellent logiciel de crackage de mot de passesécurité john :

john passwd

Après quelques minutes de crackage intensif, john ne m'a rien trouvé. J'avais utilisé un mot de passe à peu près sécurisé. J'ai donc utilisé mon cerveau pour changer directement le mot de passe.

La manière douce

C'est en fait beaucoup plus simple. On peut définir un DN root avec un mot de passe associé dans le fichier de configuration du serveur OpenLDAP. C'est d'ailleurs ce qui est indiqué souvent dans les divers HOWTO.

C'est donc ce que j'ai fait; j'ai ajouté les lignes suivantes à l'endroit opportun de mon fichier /etc/ldap/slapd.conf:

rootdn "cn=root,dc=monbeaudomaine,dc=fr"
rootpw monbeausapin

Puis j'ai redémarré slapd, je me suis connecté sur le référentiel en utilisant ces informations, et j'ai pu changer le mot de passe de mon DN admin précédent. Je me suis ensuite empressé de commenter ces deux lignes puis de redémarrer à nouveau slapd.