Sujet du jour : comment instaurer une politique des mots de passe commune à OpenLDAP et Samba ?
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.