LemonLDAP::NG : Configuration du backend LLDAP

Authentification SSO Open source LemonLDAP::NG LL::NG lldap

Dans cet article, nous utiliserons LLDAP comme premier backend d'authentification LDAP sur LemonLDAP::NG.

J'ai monté une autre VM sous Debian 12 pour faire tourner le conteneur docker LLDAP. Le FQDN est srv-auth-lldap.domain.lan. Il vous faudra déclarer celui-ci dans le fichier /etc/hosts du serveur LL::NG.

L'installation et la configuration de LLDAP sont expliquées dans cet article.

Sur votre PKI, il faut générer un certificat serveur afin de chiffrer la connexion LDAP entre LLNG et LLDAP. Le CN sera le FQDN déclaré plus haut.

Il faut ensuite importer le certificat et la clé privée sur le serveur faisant tourner le docker LLDAP dans le répertoire lldap_data/ssl :

user01@SVR-AUTH-LLDAP:/srv/lldap$ tree
.
├── docker-compose.yml
├── lldap_data
│   ├── lldap_config.toml
│   ├── private_key
│   └── ssl
│       ├── certfile.crt
│       └── keyfile.key
(...)

Configurez les chemins :

user01@SVR-AUTH-LLDAP:/srv/lldap$ cat lldap-vars.env 
LLDAP_LDAP_BASE_DN=dc=domain,dc=lan

TZ=Europe/Paris
UID=1002                                           
GID=1002                                           

# If using LDAPS, set enabled true and configure cert and key path
LLDAP_LDAPS_OPTIONS__ENABLED=true
LLDAP_LDAPS_OPTIONS__CERT_FILE=/data/ssl/certfile.crt
LLDAP_LDAPS_OPTIONS__KEY_FILE=/data/ssl/keyfile.key

(...)

Pour finir, configurez le docker-compose pour activer le LDAPS :

user01@SVR-AUTH-LLDAP:/srv/lldap$ cat docker-compose.yml 
version: "3"

services:
  mariadblldap:
    image: "mariadb"
    container_name: "mariadlldap"
    (...)

  lldap:
    image: lldap/lldap:stable
    container_name: "lldap"
    depends_on:
      - mariadblldap
    ports:
      # For LDAP
      - "3890:3890"
      # For LDAPS (LDAP Over SSL), enable port if LLDAP_LDAPS_OPTIONS__ENABLED set true, look env below
      - "6360:6360"
      # For the web front-end
      - "17170:17170"
    (...)

Rappel : Si ce n'est pas déjà fait, il faut importer le certificat du CA ayant permis de générer le certificat pour LLDAP sur le serveur LL::NG dans /usr/local/share/ca-certificates/ puis lancer la commande "update-ca-certificates".

Important : la configuration se faisant ici en utilisant la console web de management de LL:NG, sauvegardez vos paramètres uniquement quand cela sera indiqué dans cette documentation. Si vous faites tourner le serveur SSO dans une VM, un snapshot ou sauvegarde sont les bienvenues ;)

Rendez-vous sur https://manager.domain.tld/manager.html puis Paramètres généraux > Paramètres d'authentification > Module d'authentification et choisir le module LDAP. De même pour les modules "Modules d'utilisateurs" et "Module de mot de passe".

Rendez-vous ensuite sur Paramètres généraux > Paramètres d'authentification > Paramètres LDAP.

ldap01

Vous pouvez laisser par défaut les paramètres Niveau d'authentification, Variables exportées et Filtres.

Cliquez sur Connexion et entrez les paramètres suivants :

  • Hôte : ldaps://srv-auth-lldap.domain.lan
  • Port : 6360
  • Base de recherche des utilisateurs : dc=domain,dc=lan
  • Compte de connexion LDAP : uid=admin,ou=people,dc=domain,dc=lan
  • Mot de passe LDAP : VotreSuperMotDePasse

ldap02

Cliquez sur Paramètres généraux > Paramètres d'authentification > Paramètres LDAP > Groupes et renseignez le champs :

  • Base de recherche : ou=groups,dc=domain,dc=lan
  • Classe d'objet : groupOfUniqueNames
  • Attribut cible : member
  • Attribut source utilisateur : dn
  • Attributs recherchés : cn
  • Attribut source groupe : dn

ldap03

Cliquez sur Paramètres généraux > Paramètres d'authentification > Paramètres LDAP > Mot de passe (LLDAP ne permet pas encore de prendre en charge le contrôle de la politique des mot de passe mais nous verrons plus tard comment mettre une politique des mots de passe) :

ldap04

Ne sauvegardez pas encore.

Par défaut l'accès au manager est réservé à l'admin de demo dwho. Nous allons paramétrer l'accès restreint pour le compte admin de LLDAP.

Rendez-vous sur Hôtes virtuels > manager.domain.tld > Règles d'accès et configurez les accès comme ceci :

(Commentaires) (Expressions régulières) (Règles)
Configuration ^/(.*?\.(fcgi|psgi)/)?(manager\.html|confs|prx/|$) $uid eq "admin"
Notifications /(.*?\.(fcgi|psgi)/)?notifications $uid eq "admin"
Sessions /(.*?\.(fcgi|psgi)/)?sessions $uid eq "admin"

Vous pouvez maintenant sauvegarder. Une fois la sauvegarde OK, vous devez relancer Apache2 pour être sur que la nouvelle config est bien prise en compte.

Tentez la connexion avec le user admin de LLDAP. Une fois authentifié avec ce compte

Désactivez le module d'auto-enregistrement si vous n'en avez pas l'utilité :

sso01

Limitez le module "Changement de mot de passe" aux utilisateurs enregistrés dans l'annuaire LLDAP :

sso02

LLDAP impose un minimum de 8 caractères sans complexité. C'est pas très "secure" tout ça. De plus il est possible de contourner cette règle en changeant le mot de passe depuis LL::NG. En activant la politique des mots de passe dans LL::NG et en ne rendant pas LLDAP directement accessible, les utilisateurs LLDAP seront obligés de respecter celle-ci.

Ici la règle est :

  • 14 caractères
  • Au moins une minuscule
  • Au moins une majuscule
  • Au moins un caractère spécial

pass01

Article précédent Article suivant