Projet

Général

Profil

Scénario #29695

Scribe 2.8 devrait proposer nativement la délégation d'authentification OpenLDAP avec SASL

Ajouté par Joël Cuissinat il y a environ 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
Début:
14/04/2020
Echéance:
30/04/2020
% réalisé:

100%

Points de scénarios:
7.0
Restant à faire (heures):
0.00 heure
Estimation basée sur la vélocité:
Release:
Liens avec la release:
Auto

Description

Solutions à mettre en œuvre

  • valider le fonctionnement de SASL en 2.8 (cf. #28777#note-5 et/ou #29092#note-1)
  • intégrer les modifications nécessaires
  • modifier le script changepasswordeole.pl en conséquence
  • réfléchir aux possibilités de migration depuis EOLE 2.7

Critères d'acceptation

  • l'annuaire AD est bien la référence pour les mots de passe
  • tests Jenkins Scribe 2.8.0 passants

Points d'attention

  • dans les tests (Jenkins/Squash), le mot de passe "admin" n'est plus "eole" mais "Eole&12345"

Sous-tâches

Tâche #29952: finaliser le paquet eole-saslauthFerméBenjamin Bohard

Tâche #29953: Modifier les scripts interagissant avec les mots de passe.FerméBenjamin Bohard

Tâche #29960: Modifier le projet eole-annuaire pour permettre l’utilisation de saslauthdFerméBenjamin Bohard

Tâche #30002: Modifier changepassword.eole.plFerméBenjamin Bohard


Demandes liées

Lié à eole-saslauthd - Scénario #28777: Étudier la délégation d'authentification OpenLDAP (Pass-Trough) avec SASL Terminé (Sprint) 10/10/2019 11/10/2019
Lié à Distribution EOLE - Tâche #29930: Validation du scénario Scribe 2.8 devrait proposer nativement la délégation d'authentification OpenLDAP avec SASL Fermé 16/04/2020
Lié à eole-saslauthd - Scénario #30106: Implémenter la délégation d'authentification sur Scribe 2.8.0 avec un AD distant Terminé (Sprint) 19/10/2020 06/11/2020
Lié à Distribution EOLE - Scénario #30168: Gérer les comptes de service samba et leurs mots de passe Automatiquement Terminé (Sprint) 25/05/2020 12/06/2020
Lié à Distribution EOLE - Scénario #31221: Implémenter le changement de mot de passe dans LemonLDAP::NG Partiellement Réalisé 21/12/2020 21/12/2020
Précède eole-saslauthd - Scénario #30079: Affiner la mise en place de la délégation d'authentification sur Scribe 2.8.0 Terminé (Sprint) 01/05/2020 01/05/2020

Révisions associées

Révision d31bf701 (diff)
Ajouté par Joël Cuissinat il y a environ 4 ans

Skeletorisation du dépôt eole-saslauthd

Ref: #29695

Révision 278620ab (diff)
Ajouté par Joël Cuissinat il y a environ 4 ans

Packaging for eole-saslauthd

Ref: #29695

Révision f9ac7205 (diff)
Ajouté par Joël Cuissinat il y a presque 4 ans

Don't re-ask admin password at instance

Ref: #29695

Historique

#1 Mis à jour par Joël Cuissinat il y a environ 4 ans

#2 Mis à jour par Joël Cuissinat il y a environ 4 ans

#3 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Lié à Scénario #28777: Étudier la délégation d'authentification OpenLDAP (Pass-Trough) avec SASL ajouté

#4 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Description mis à jour (diff)
  • Echéance mis à 30/04/2020
  • Version cible mis à Prestation Cadoles MEN 16-18
  • Début mis à 14/04/2020

#5 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Description mis à jour (diff)

#6 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Description mis à jour (diff)

#7 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Projet changé de Distribution EOLE à eole-saslauthd

#8 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Description mis à jour (diff)

#9 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Points de scénarios changé de 8.0 à 7.0

#10 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Description mis à jour (diff)

#11 Mis à jour par Benjamin Bohard il y a environ 4 ans

  • Assigné à mis à Benjamin Bohard

#12 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Lié à Tâche #29930: Validation du scénario Scribe 2.8 devrait proposer nativement la délégation d'authentification OpenLDAP avec SASL ajouté

#13 Mis à jour par Benjamin Bohard il y a environ 4 ans

Parmi les éléments de configuration apportés dans le scénario https://dev-eole.ac-dijon.fr/issues/28777#note-5, certains impliquent des choix d’implémentation.

Configuration apparmor

Le paquet slapd créé, en postinst, le fichier vide /etc/apparmor.d/local/usr.sbin.slapd. Ce fichier doit être modifié, écrasé, par creole. Le contenu de ce fichier dépendra des options activées. Je vois deux options d’implémentation.

Inclusion au moment du templating

Le template apporté par eole-annuaire servirait à inclure les fragments apportés par d’autres paquets (en l’occurrence eole-saslauthd) :

# local usr.sbin.slapd apparmor configuration generated by creole.
%import os
%import re
%set %%slapd_re = re.compile(r'.*usr\.sbin\.slapd.*')
%set %%confdir = '/etc/eole/apparmor.local.d/'
%set %%files = [f for f in %%os.listdir(%%confdir) if %%slapd_re.match(f)]
%%files.sort()
%for file in %%files
%include raw %%confdir + file
%end for
Cela suppose deux choses :
  • création du répertoire accueillant les fragments (vraisemblablement dans le packaging d’eole-server, en ajoutant ce répertoire à eole-server.dirs) ;
  • chaque paquet apportant un fragment doit se conformer un un nom de fichier spécifique.

Conditions d’inclusion dans le template

À chaque ajout de composant, il faut ajouter une condition dans le template apporté par le projet eole-annuaire.

Compte utilisé pour la recherche de DN dans l’annuaire

Le compte indiqué dans la configuration de saslauthd n’est utilisé que pour faire l’équivalent d’un ldapsearch. Il ne semble pas judicieux d’utiliser le compte Administrator pour cela étant donné la problématique du mot de passe accessible.

Un compte dédié peut être créé et un système de renouvellement automatisé de son mot de passe, à l’instar de ce qui se fait pour les bases de données, pourrait être un plus (le compte est uniquement utilisé localement et on n’a pas d’impératif de propagation comme ça peut être le cas pour les comptes utilisés par veyon et autres utilitaires sur les clients).

#14 Mis à jour par Daniel Dehennin il y a environ 4 ans

Gestion du compte d’authentification

Dans le cadre d’utilisation de saslauthd avec LDAP, il serait très intéressant d’avoir un compte dédié.

Une autre option est de configurer saslauthd pour faire une authentification kerberos5 et non pas LDAP, dans ce cas, il ne faut que le keytab de la machine.

J’ai testé sur un etb1.scribe

  1. Installation du paquet
    apt install sasl2-bin
    
  2. Configuration du service (contrairement à la méthode LDAP il n’y a pas l’option -r)
    sed -i -e 's,^START=.*,START=yes,' \
           -e 's,^MECHANISMS=.*,MECHANISMS="kerberos5",' \
           /etc/default/saslauthd
    
  3. Forcer la route vers addc.dompedago.etb1.lan car la communication scribeaddc ne fonctionne pas directement
    ip route add $(CreoleGet ad_public_address) via $(CreoleGet ad_address)
    
  4. Configurer les méthodes kerberos pour Samba
    sed -i '/security = ADS/a \\tkerberos method = secrets and keytab' /etc/samba/smb.conf
    
  5. Extraire le ketab machine
    KRB5_KTNAME=FILE:/etc/krb5.keytab net ads keytab create -P
    
  6. Démarrer le service saslauthd
    systemctl start saslauthd.service
    
  7. Tester l’authentification avec testsaslauthd
    testsaslauthd -u admin@DOMPEDAGO.ETB1.LAN -p eole
    0: OK "Success." 
    
  8. Adapter la configuration OpenLDAP
    1. Configuration SASL
      cat > /etc/ldap/sasl2/slapd.conf <<EOF
      pwcheck_method: saslauthd
      saslauthd_path: /var/run/saslauthd/mux
      EOF
      
    2. L’utilisateur openldap doit faire partie du groupe sasl
      adduser openldap sasl
      
    3. Configurer apparmor pour l’accès slapd au socket saslauthd
      cat > /etc/apparmor.d/local/usr.sbin.slapd <<EOF
      /{,var/}run/saslauthd/mux rw,
      EOF
      
    4. Redémarrer le service apparmor
      systemctl restart apparmor.service
      
    5. Redémarrer le service slapd
      systemctl restart slapd.service
      
    6. Modifier le mot de passe du compte admin (attention, les majuscules pour le REALM sont indispensables)
      cat > admin.ldif <<EOF
      dn: uid=admin,ou=local,ou=personnels,ou=utilisateurs,ou=00000001,ou=ac-test,ou=education,o=gouv,c=fr
      changetype: modify
      replace: userPassword
      userPassword: {SASL}admin@DOMPEDAGO.ETB1.LAN
      -
      EOF
      
    7. Tester l’authentification en affichant le champs mot de passe
      ldapsearch -LLL -x -D uid=admin,ou=local,ou=personnels,ou=utilisateurs,ou=00000001,ou=ac-test,ou=education,o=gouv,c=fr -w eole '(uid=admin)' userPassword | awk '/^userPassword/ {print $2}' | base64 -d; echo
      

Conclusion personnelle

  • La délégation SASL par kerberos me semble plus facile à gérer pour les machines membres du domaine Active Directory grâce à l’utilisation du keytab de la machine
  • Il faut ajouter un script postservice pour tenir le fichier /etc/krb5.keytab à jour
  • Pour Scribe, en plus de la configuration spécifique SASL, il faut :
    • Forcer la route vers le conteneur addc pour passer par le bridge (la commande net ads keytab create fait une résolution DNS et ne tient pas compte de /etc/hosts)

#15 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Précède Scénario #30079: Affiner la mise en place de la délégation d'authentification sur Scribe 2.8.0 ajouté

#16 Mis à jour par Joël Cuissinat il y a presque 4 ans

=> les éléments laissés en suspend sont repris dans le nouveau scénario : #30106

#17 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Lié à Scénario #30106: Implémenter la délégation d'authentification sur Scribe 2.8.0 avec un AD distant ajouté

#18 Mis à jour par Joël Cuissinat il y a presque 4 ans

  • Statut changé de Nouveau à Terminé (Sprint)

#19 Mis à jour par Daniel Dehennin il y a presque 4 ans

  • Lié à Scénario #30168: Gérer les comptes de service samba et leurs mots de passe Automatiquement ajouté

#20 Mis à jour par Daniel Dehennin il y a plus de 3 ans

  • Lié à Scénario #31221: Implémenter le changement de mot de passe dans LemonLDAP::NG ajouté

Formats disponibles : Atom PDF