Project

General

Profile

Scénario #29695

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

Added by Joël Cuissinat over 3 years ago. Updated over 3 years ago.

Status:
Terminé (Sprint)
Priority:
Normal
Assigned To:
Start date:
04/14/2020
Due date:
04/30/2020
% Done:

100%

Story points:
7.0
Remaining (hours):
0.00 hour
Velocity based estimate:
Release:
Release relationship:
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"

Subtasks

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


Related issues

Related to eole-saslauthd - Scénario #28777: Étudier la délégation d'authentification OpenLDAP (Pass-Trough) avec SASL Terminé (Sprint) 10/10/2019 10/11/2019
Related to 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é 04/16/2020
Related to eole-saslauthd - Scénario #30106: Implémenter la délégation d'authentification sur Scribe 2.8.0 avec un AD distant Terminé (Sprint) 10/19/2020 11/06/2020
Related to Distribution EOLE - Scénario #30168: Gérer les comptes de service samba et leurs mots de passe Automatiquement Terminé (Sprint) 05/25/2020 06/12/2020
Related to Distribution EOLE - Scénario #31221: Implémenter le changement de mot de passe dans LemonLDAP::NG Partiellement Réalisé 12/21/2020 12/21/2020
Precedes eole-saslauthd - Scénario #30079: Affiner la mise en place de la délégation d'authentification sur Scribe 2.8.0 Terminé (Sprint) 05/01/2020 05/01/2020

Associated revisions

Revision d31bf701 (diff)
Added by Joël Cuissinat over 3 years ago

Skeletorisation du dépôt eole-saslauthd

Ref: #29695

Revision 278620ab (diff)
Added by Joël Cuissinat over 3 years ago

Packaging for eole-saslauthd

Ref: #29695

Revision f9ac7205 (diff)
Added by Joël Cuissinat over 3 years ago

Don't re-ask admin password at instance

Ref: #29695

History

#1 Updated by Joël Cuissinat over 3 years ago

#2 Updated by Joël Cuissinat over 3 years ago

#3 Updated by Joël Cuissinat over 3 years ago

  • Related to Scénario #28777: Étudier la délégation d'authentification OpenLDAP (Pass-Trough) avec SASL added

#4 Updated by Joël Cuissinat over 3 years ago

  • Description updated (diff)
  • Due date set to 04/30/2020
  • Target version set to Prestation Cadoles MEN 16-18
  • Start date set to 04/14/2020

#5 Updated by Joël Cuissinat over 3 years ago

  • Description updated (diff)

#6 Updated by Joël Cuissinat over 3 years ago

  • Description updated (diff)

#7 Updated by Joël Cuissinat over 3 years ago

  • Project changed from Distribution EOLE to eole-saslauthd

#8 Updated by Joël Cuissinat over 3 years ago

  • Description updated (diff)

#9 Updated by Joël Cuissinat over 3 years ago

  • Story points changed from 8.0 to 7.0

#10 Updated by Joël Cuissinat over 3 years ago

  • Description updated (diff)

#11 Updated by Benjamin Bohard over 3 years ago

  • Assigned To set to Benjamin Bohard

#12 Updated by Joël Cuissinat over 3 years ago

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

#13 Updated by Benjamin Bohard over 3 years ago

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 Updated by Daniel Dehennin over 3 years ago

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 Updated by Joël Cuissinat over 3 years ago

  • Precedes Scénario #30079: Affiner la mise en place de la délégation d'authentification sur Scribe 2.8.0 added

#16 Updated by Joël Cuissinat over 3 years ago

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

#17 Updated by Joël Cuissinat over 3 years ago

  • Related to Scénario #30106: Implémenter la délégation d'authentification sur Scribe 2.8.0 avec un AD distant added

#18 Updated by Joël Cuissinat over 3 years ago

  • Status changed from Nouveau to Terminé (Sprint)

#19 Updated by Daniel Dehennin over 3 years ago

  • Related to Scénario #30168: Gérer les comptes de service samba et leurs mots de passe Automatiquement added

#20 Updated by Daniel Dehennin almost 3 years ago

  • Related to Scénario #31221: Implémenter le changement de mot de passe dans LemonLDAP::NG added

Also available in: Atom PDF