informatique:reseau:ldap:delegation_auth_ad_via_sasl

Délégation d'authentification vers un AD via SASL

Il est possible, utilisateur par utilisateur, de déléguer son authentification à un AD (ou un autre annuaire LDAP) via SASL en utilisant un mot de passe au format {SASL}username@domain.

Dans ce cas, en cas de tentative de connexion de l'utilisateur, OpenLDAP interrogera le service SASL pour valider que le mot de passe fourni par l'utilisateur pour ce connecter correspond bien au compte SASL spécifié dans son attribut mot de passe (username@domain dans l'exemple fourni).

Dans OpenLDAP 2.5 (>=2.5.2), une overlay remoteauth a été ajoutez et implémente cette fonctionnalité sans composant externe. Celle-ci ajoute également la possibilité de stocker le mot de passe localement après une authentification réussie.
  • Installer le service saslauthd et son module LDAP :
    apt install sasl2-bin libsasl2-modules-ldap
  • Éditez le fichier /etc/default/saslauthd et ajuster les variables suivantes :
    • START=yes
    • MECHANISMS=“ldap”
  • Faite recharger ces modifications par systemd puis activer par défaut et lancer le service :
    systemctl daemon-reload
    systemctl enable saslauthd.service
    systemctl start saslauthd.service
  • Créer le fichier /etc/saslauthd.conf en ajustant les paramètre de connexion à l'AD :
    ldap_servers: ldaps://dc1.ad.int:636 ldaps://dc2.ad.int:636
    ldap_search_base: dc=ad,dc=int
    ldap_timeout: 10
    ldap_filter: sAMAccountName=%u
    ldap_bind_dn: [Bind DN]
    ldap_password: [Bind Password]
    ldap_deref: never
    ldap_restart: yes
    ldap_scope: sub
    ldap_use_sasl: no
    ldap_start_tls: no
    ldap_version: 3
    ldap_auth_method: bind
  • Ajuster les droits du fichier nouvellement créé :
    chmod 600 /etc/saslauthd.conf
Dans cette exemple, la connexion à l'annuaire AD se fait via LDAPS. Assurez-vous que le certificat SSL présenté par le service LDAPS de l'AD est considéré comme valide. En cas de certificat générez par l'autorité de certification de l'AD, installer le certificat de celle-ci.

Dans cette exemple, nous partons du principe que vous avez déjà un annuaire LDAP en place et fonctionnel.

  • Ajouter l'utilisateur openldap au groupe sasl pour qu'il est accès à la socket UNIX sur service saslauthd :
    adduser openldap sasl
  • Créer le fichier de configuration SASL client d'OpenLDAP /usr/lib/sasl2/slapd.conf :
    pwcheck_method: saslauthd
    saslauthd_path: /var/run/saslauthd/mux
  • Créer le fichier /tmp/config-sasl.ldif :
    dn: cn=config
    changetype: modify
    add: olcSaslHost
    olcSaslHost: localhost
    -
    add: olcSaslSecProps
    olcSaslSecProps: none
  • importer cette configuration à l'aide de la commande suivante :
    ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/config-sasl.ldif
  • redémarer le service pour prise en compte :
    service slapd stop
    service slapd start

Pour vérifier que l'authentification SASL fonctionne correctement, commencer par utiliser la commande suivante à l'aide d'identifiant de tests :

testsaslauthd -u user -p password

Si l'authentification échoue, vous pouvez en savoir plus sur le problème à l'aide de la commande suivante :

service saslauthd status

Une fois l'authentification fonctionnelle via la commande testsaslauthd, tenter une authentification via OpenLDAP. Pour cela, modifier le mot de passe d'un utilisateur au format {SASL}username@domain.

Tester ensuite une connexion LDAP avec le compte utilisateur correspondant :

ldapsearch -x -H ldaps://ldap.example.fr -D uid=username,ou=people,o=example -W -b uid=username,ou=people,o=example
  • informatique/reseau/ldap/delegation_auth_ad_via_sasl.txt
  • Dernière modification : 2022/04/21 18:14
  • de bn8