LemonLDAP : Installation avec un LDAP et FusionDirectory

LemonLDAP : Installation avec un LDAP et FusionDirectory

Table of Contents

Introduction

LemonLDAP::NG est un logiciel open source, créé en 2004 par la Gendarmerie nationale française. Il fournit une solution d' authentification unique distribuée avec gestion centralisée des droits sous licence GPL.

Le logiciel LemonLDAP::NG est issu d'un logiciel créé par Eric German suivant le protocole de gestion d'annuaire LDAP sous TCP/IP pour le Ministère des finances français. La Gendarmerie nationale reprend ce logiciel pour l'élargir et le conformer à ses besoins.

Le logiciel fonctionne avec les serveurs web Apache ou Nginx mais un mode reverse proxy permet de l'utiliser avec des applications exécutées sur un autre serveur (IIS, Tomcat, etc.)3,4.

Il peut gérer plus de 200000 utilisateurs de différentes organisations, il implémente à la fois5 :

  • les services de fournisseur d'identité et de service SAML, OpenID, CAS et OpenID Connect6 ;
  • peut-être utilisé comme Proxy protocolaire en fédération des identités ;
  • l'authentification basée sur LDAP, Kerberos, SQL, Twitter et d'autres protocoles ;
  • l'authentification à double facteur (U2F, TOTP, Yubikey, REST ou externe tels SMS ou mails)7
  • un système d'authentification unique basé sur des cookies sécurisés ;
  • un menu dynamique des applications ;
  • un module de réinitialisation de mots de passe ;
  • un module d'auto-création de compte ;
  • un dispositif de notification ;
  • un explorateur de sessions.

Depuis la version 1.9, il propose un connecteur FranceConnect, lui permettant d'être simplement soit fournisseur d'identités, soit fournisseur de services8.

La version 2.0.6 apporte, entre autres évolutions, les nouvelles fonctionnalités suivantes :

  • la sur-charge des seconds facteurs et la prise en charge du protocole RADIUS ;
  • la possibilité de définir une politique locale des mots de passe ;
  • un module de simulation d'identités pour des environnements de formation ;
  • un module d'endossement d'identité pouvant être activé à des fins de diagnostic ;
  • un module permettant de consulter le profil SSO d'un utilisateur et de vérifier ses droits d'accès ainsi que les en-têtes transmis ;
  • un module pour éditer la configuration en lecture seule.

La version 2.0.7 permet un meilleur support du protocole OpenId Connect et apporte de nombreuses améliorations ou correctifs.

La version 2.0.8 offre de nombreuses API et améliorations.

La version 2.0.9 apporte un outil de gestion des sessions, ameliore la gestion des mots de passe, une documentation intégrée au code source et des correctifs.

Source : LemonLDAP::NG — Wikipédia (wikipedia.org)

Pré-requis

  • Un serveur OpenLDAP installé et fonctionnel
  • FusionDirectory déployé sur le serveur LDAP
  • Un nom de domaine avec la gestion de sa zone DNS

Installation LemonLDAP

  • Utiliser le dépôt officiel :

    sudo cat > /etc/apt/sources.list.d/lemonldap-ng.list << 'EOL'
    # LemonLDAP::NG repository
    deb     https://lemonldap-ng.org/deb 2.0 main
    deb-src https://lemonldap-ng.org/deb 2.0 main
    EOL
  • Récupérer la clef GPG :

    wget -O - https://lemonldap-ng.org/_media/rpm-gpg-key-ow2 | sudo apt-key add -
  • Mise à jour du cache apt :

    sudo apt update
  • Installer le package principal et le module Perl pour Apache2 :

    sudo apt install libapache2-mod-perl2 lemonldap-ng

    LemonLDAP est également compatible avec Nginx mais cela ne sera pas abordé dans cet article.

  • Installer le module FCGID pour Apache :

    sudo apt install libapache2-mod-fcgid
  • Activer les modules et les configurations :

    sudo a2ensite manager-apache2.conf
    sudo a2ensite portal-apache2.conf
    sudo a2ensite handler-apache2.conf
    sudo a2enmod fcgid perl alias rewrite headers
  • Tester la configuration d'Apache2 :

    sudo apachectl configtest
  • Redémarrer Apache2 :

    sudo systemctl restart apache2

Par défaut, le domaine est example.com. Celui-ci peut être changé.

  • Pour changer le nom de domaine par défaut :

    sed -i 's/example\.com/mondomaine.local/g' /etc/lemonldap-ng/* /var/lib/lemonldap-ng/conf/lmConf-1.json

    Adapter la suite des instructions avec le domaine utilisé en lieu et place d'example.com.

Accès Web UI

  • Pour accéder à la Web UI et effectuer les tests nécessaires, il y a 4 enregistrements A à réaliser dans la zone DNS du domaine :

    • auth.example.com
    • manager.example.com
    • test1.example.com
    • test2.example.com

    C'est 4 URLs sont à rediriger vers le même serveur. test1 et test2 sont là pour simuler 2 applications différentes.

  • Avec un navigateur web, accéder à http://auth.example.com :

Dans un 1er temps, utiliser le login dwho avec le mot de passe dwho. Ce compte est local à LemonLDAP et à des droits administrateur sur la plateforme.

  • La configuration qui va être appliqué peut se faire intégralement par cette Web UI :

  • Afin de pouvoir automatiser tout ce processus plus tard, la configuration sera réalisée en ligne de commande à l'aide de l'outil :

    /usr/share/lemonldap-ng/bin/lemonldap-ng-cli help

Activer les applications de démonstration

  • LemonLDAP est fournit avec 2 applications de démonstration qui permettent de lire les en-têtes HTTP. Pour les activer :

    sudo a2ensite test-apache2.conf
    sudo systemctl reload apache2
  • C'est un vhost standard d'Apache2 :

    sudo cat /etc/apache2/sites-enabled/test-apache2.conf
  • Remarquer la ligne qui à été ajoutée concernant le SSO :

      # SSO protection
      PerlHeaderParserHandler Lemonldap::NG::Handler::ApacheMP2
  • Vérifier l'accès aux applications de démonstration en se rendant sur :

  • Pas besoin de s'authentifier car cela a été fait l'autre de l'accès à la plateforme LemonLDAP :

  • Il est possible de se déconnecter de cette application test1, en bas de la page :

  • Lors de la prochaine tentative d'accès, une demande d'authentification de LemonLDAP sera demandée.

Configuration avec OpenLDAP / FusionDirectory

Pour le moment LemonLDAP est en mode démo et utilise une base de compte interne. La configuration de LemonLDAP va consister à utiliser l'annuaire OpenLDAP préalablement déployé avec FusionDirectory. Une chose à savoir est que l'accès au manager est réservé exclusivement à l'utilisateur dwho de la base de compte interne à LemonLDAP. Lors de la jonction de l'annuaire LDAP à LemonLDAP, la base de compte interne ne sera plus exploitable. Par conséquence, l'accès au WebSSO Manager ne se fera plus. Il y a plusieurs méthodes possibles pour retrouver cet accès. En voici une qui consiste à n'autoriser que l'utilisateur fd-admin de l'annuaire LDAP :

  • Avec l'utilisateur dwho se rendre dans le Manager. Puis Hôtes virtuels, manager.example.com, Règles d'accès :

  • Modifier la partie Règles à droite comme ci-dessus. Puis Sauver la configuration.

  • Paramétrer la liaison à l'annuaire LDAP :

    sudo /usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
      set \
          authentication LDAP \
          userDB LDAP \
          passwordDB LDAP \
          registerDB LDAP \
          ldapServer 'ldap://localhost' \
          managerDn 'cn=admin,dc=example,dc=com' \
          managerPassword 'MonSuperPassword' \
          ldapBase 'ou=people,dc=example,dc=com' \
    • Pour des raisons de praticité, le managerDn utilisé est le compte admin de l'annuaire. Dans un contexte de production un autre compte sera utilisé.
  • Afin d'avoir une vue synthétique de l'annuaire et obtenir les chemins complets pour la précédente commande, utiliser :

    sudo slapcat | grep "dn:"
  • Exporter les attributs souhaités :

    sudo /usr/share/lemonldap-ng/bin/lemonldap-ng-cli -force 1 -yes 1 \
      addKey \
          ldapExportedVars uid uid \
          ldapExportedVars cn cn \
          ldapExportedVars sn sn \
          ldapExportedVars mail mail \
          ldapExportedVars givenName givenName
  • Voici le retour attendu :

    Status  : [
            {
              'localhost' => 'OK'
            }
          ];
  • Redémarrer Apache2 :

    sudo systemctl restart apache2
  • L'utilisateur fd-admin peut maintenant s'authentifier, avec accès au manager, sur la plateforme : http://auth.example.com.

Les commentaires sont fermés.

Les commentaires sont fermés.