Sujet du jour : comment instaurer une politique des mots de passe commune à OpenLDAP et Samba ?

LDAP.png

La politique c'est pas fait pour les politiciens

Rappelons d'abord qu'une politique des mots de passe est un ensemble de règles permettant :

  • de contrôler les authentifications (blocage de compte après plusieurs tentatives infructueuses)
  • de contrôler les changements de mot de passe (expiration, force du mot de passe, réinitalisation à la prochaine connexion, présence dans un historique, etc.)



Samba et OpenLDAP sont sur un bateau

Pour ceux qui ont pratiqué Samba, il est assez simple de gérer la politique des mots de passe Samba (à l'aide des outils Samba ou des Samba LDAP tools). Cependant cette politique ne s'applique qu'à Samba, et ses mots de passes spécifiques (sambaLMPassword et sambaNTPassword).

Pour ceux qui ont pratiqué OpenLDAP, il est aussi assez simple de gérer la politique des mots de passe, en activant l'overlay ppolicy. Cependant cette politique ne s'applique qu'au mot de passe LDAP (userPassword).

Je ne veux voir qu'une politique !

C'est donc bien joli tout ça, mais il me faut une solution pour gérer de manière unique ces contraintes suivantes :

  • Taille du mot de passe au moins de 8 caractères
  • Stockage des 4 derniers mots de passe dans un historique

Bien entendu cela devra être appliqué pour une modification du mot de passe à travers Samba (donc potentiellement à travers la GINA Windows) et à travers une interface Web de changement de mot de passe LDAP.

Et on est bien d'accord que si je change le mot de passe LDAP par l'interface Web, les mots de passe Samba sont aussi mis à jour.

Et plus vite que ça !

Samba

Configurons Samba pour qu'il ne modifie que le mot de passe LDAP. En effet, on va déléguer le reste du travail à OpenLDAP :

# vi /etc/samba/smb.conf

---8<---
ldap passwd sync = only
---8<---

Cela va en fait indiquer à Samba de ne changer que le champ 'userPassword', et ne de pas toucher aux champs 'sambaLMPassword' et 'sambaNTPassword'.

À noter que Samba utilise l'opération étendue password modify pour changer le mot de passe.

OpenLDAP

Il faut activer deux overlays :

  • ppolicy : politique des mots de passe OpenLDAP (contrôle des authentifications et des changements de mot de passe)
  • smbk5pwd : modification des mots de passe Samba et Kerberos en parallèle du mot de passe LDAP, uniquement sur l'opération étendue de changement de mot de passe

L'overlay smbk5pwd n'est pas un overlay officiel, il se trouve dans le répertoire contribs/slapd-modules/smbk5pwd. Certains distributions l'incluent toutefois dans leurs paquetages OpenLDAP (par exemple CentOS), sinon il faut compiler l'overlay à la main.

# vi /etc/openldap/slapd.conf

---8<---
modulepath /usr/lib/openldap/
moduleload ppolicy.la
moduleload smbk5pwd.la

database bdb
overlay ppolicy
ppolicy_default ou=default,ou=ppolicy,dc=example,dc=com

overlay smbk5pwd
smbk5pwd-enable samba
---8<---

Et on configure par exemple la politique des mots de passe avec cette entrée :

dn: ou=default,ou=ppolicy,dc=example,dc=com
objectClass: organizationalUnit
objectClass: pwdPolicy
objectClass: top
ou: default
pwdAttribute: userPassword
pwdCheckQuality: 2
pwdInHistory: 4
pwdMinLength: 10

Croisons les doigts

Changement de mot de passe d'un utilisateur par Samba :

  • Mot de passe valide :
# smbpasswd coudot
New SMB password:
Retype new SMB password:
  • Mot de passe invalide (trop court ou dans l'historique) :
# smbpasswd coudot
New SMB password:
Retype new SMB password:
ldapsam_modify_entry: LDAP Password could not be changed for user coudot: Constraint violation
        Password fails quality checking policy
Failed to modify entry for user coudot.
Failed to modify password entry for user coudot

L'erreur LDAP remontée est bien celle de la politique des mots de passe OpenLDAP.

Ça ira pour cette fois

Cette solution a le mérite de fonctionner, mais on s'aperçoit vite qu'il est impossible par exemple d'avoir un seul compteur d'authentification erronées (car Samba ne fait pas de BIND LDAP), ou encore d'avoir une seule information pour forcer la réinitialisation à la prochaine connexion.

Reste à espérer que les travaux sur Samba 4 amélioreront l'interopérabilité des deux politiques.

Vus : 2143
Publié par Clément OUDOT : 36