Skip to content

OpenLDAP

Inspiré de divers guides :

  • https://tylersguides.com/guides/openldap-memberof-overlay/
  • https://www.server-world.info/en/note?os=Debian_9&p=openldap&f=3
  • https://wiki.lereset.org/ateliers:serveurmail:ldap-ssh
  • https://blog.debugo.fr/openldap-overlays/

Installation

On commence par installer les paquets nécessaires et à répondre aux questions :

apt install slapd ldap-utils ldapscripts
dpkg-reconfigure -plow slapd

On configure ensuite les accès et les index (LDIF de la doc Debian) :

vim lcDbIndex.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcDbIndex.ldif

vim olcAccess.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcAccess.ldif

Attention, avant de créer les différents groupes et utilisateurs il faut s'assurer que les schémas et overlay sont bien présents.

Chargement du schéma misc

Pour avoir l'attribut xxxx nous avons besoin du schéma misc :

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldif

Chargement des modules

On commence par vérifier quels modules sont chargés :

root@titane:~# slapcat -n 0 | grep olcModuleLoad
olcModuleLoad: {0}back_mdb

Si on a un retour à la commande précédente, on peut alors charger l'overlay :

root@titane:~# ldapmodify -Q -Y EXTERNAL -H ldapi:///
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof.la

modifying entry "cn=module{0},cn=config"

root@titane:~# ldapadd -Y EXTERNAL -H ldapi:///
dn: olcOverlay=memberof,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: memberof
olcMemberOfRefint: TRUE

On peut maintenant vérifier que tout est pris en compte :

root@titane:~# slapcat -n 0 | grep olcModuleLoad
olcModuleLoad: {0}back_mdb
olcModuleLoad: {1}memberof.la

Ajout d'un schéma

Configuration minimale

root@titane:/etc/ldap# cat base.ldif
# create new
# change to your own suffix for the field [dc=ipv5,dc=fr]

dn: ou=users,dc=ipv5,dc=fr
objectClass: organizationalUnit
ou: users

dn: ou=groups,dc=ipv5,dc=fr
objectClass: organizationalUnit
ou: groups

Que l'on charge ensuite via la commande :

$ slapadd -x -D cn=admin,dc=ipv5,dc=fr -W -f base.ldif

Création d'un nouvel utilisateur

Pour créer un nouvel utilisateur, il se connecter sur titane et exécuter en tant que root :

root@titane:~# create_ldap_user.sh john snow jsnow@winterfell.org
========= /tmp/john.snow.ldif =========
dn: uid=john.snow,ou=users,dc=ipv5,dc=fr
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetLocalMailRecipient
cn: john
gn: John
sn: Snow
mail: jsnow@winterfell.org
mailLocalAddress: john.snow@ipv5.fr
displayName: John Snow
userPassword: {SSHA}HVdKGIR2fbyZQGjFLII6xC7yftGyNkF9
loginShell: /bin/bash
uidNumber: 2002
gidNumber: 2002
homeDirectory: /home/ldap/john.snow

dn: cn=john.snow,ou=groups,dc=ipv5,dc=fr
objectClass: posixGroup
cn: john.snow
gidNumber: 2002
memberUid: john.snow


========= MANUAL STEP =========
In order to import, please run:
$ ldapadd -x -D cn=admin,dc=ipv5,dc=fr -W -f /tmp/john.snow.ldif