LDAP : Installation d'un serveur 389 DS

De Adadov.net wiki
Ecrit Par : Adadov

Introduction

J'ai choisi de migrer mon serveur LDAP depuis OpenLDAP vers un serveur un peu plus récent et standard. Pour ça j'ai choisi 389 DS, anciennement Fedora DS. Il a pour avantage d'être proche de tous les autres systèmes LDAP et de gérer la réplication Multi-Maitres.

Je précise quand même que j'ai été dégouté d'OpenLDAP quand ils ont changé leur méthode de fonctionnement en tentant d'utiliser un cn=config pour la configuration. Changement qui fut très douloureux au début vu qu'on ne pouvait pas supprimer de données de la configuration à moins de la regénérée entièrement.

Mais revenons en à nos moutons.

Installation du Directory Server

Pour faire mes tests j'ai utilisé une Fedora 18 fraichement installé et j'ai installé le serveur depuis les RPM comme ceci Modèle:LinuxTerminal

Puis on passe à la configuration, ils ont étés très sympa pour ça, il existe un utilitaire.

Warning.png Warning : Par contre la configuration de la console fonctionne, uniquement si on choisi l'option d'installation avancée (3)
Warning.png Warning : Si on installe avec l'option 3 les ACI ne sont pas implémentées par l'installation ...

Alors on utilise simplement setup-ds-admin.pl. Modèle:LinuxTerminal

Le mieux est simplement, dans le cas d'une première installation, de laisser par défaut les options.

Pour ma part, je change le nom du "Directory Manager", je prends quelque chose de plus simple à écrire et au moins on évite le nom d'utilisateur standard.

Ajout des extensions de schémas

Si vous avez déjà une version au format LDIF de vos extensions de schémas, alors là il n'y a presque rien à faire. Il vous suffit de placer les fichiers dans le dossier /etc/dirsrv/slapd-{instance}/schema/. Puis recharger dynamiquement le schéma de votre annuaire via

/usr/lib64/dirsrv/slapd-{instance}/schema-reload.pl

Migration depuis OpenLDAP

Pour migrer les données il n'y a rien de plus simple, il vous suffit d'exporter les données via un simple ldapsearch. Modèle:LinuxTerminal

Ensuite on retire de ce fichier la première entrée, c'est celle qui concerne la base du serveur LDAP, vu que l'installation en a déjà créé une, il ne faut pas la recréer.

Si le nom a changé, un petit coup de sed fera l'affaire. Modèle:LinuxTerminal

Puis on importe les données dans notre nouveau LDAP. Modèle:LinuxTerminal

Si vous n'avez aucune erreur lors de l'import, vous voilà avec un nouveau LDAP tout neuf et complet.

Retirer l'accès anonyme

Par défaut, l'accès anonyme aux données est autorisé ce qui n'est pas forcément une bonne chose pour la sécurité des données. Donc on va retirer l'accès anonyme et on forcera donc l'utilisation de comptes pour accéder aux données. Voilà le fichier LDIF qui nous permettra de le faire <file> dn: dc=newbase,dc=ext changetype: modify delete: aci aci: (targetattr!="userPassword")(version 3.0; acl "Enable anonymous access"; allow (read, search, compare) userdn="ldap:///anyone";) </file>

Ensuite on l'applique Modèle:LinuxTerminal

Créer des comptes pour accéder au LDAP

D'abord on va créer des groupes afin de se simplifier la gestion, un pour les utilisateurs qui auront un accès en lecture seule, l'autre pour les admins qui auront un accès complet.

Voilà un LDIF qui va ajouter les bonnes ACI et créer les groupes nécessaires. <file> dn: dc=newbase,dc=ext changetype: modify add: aci aci: (targetattr ="*")(version 3.0;acl "LDAP Readers Group";allow (read) (groupdn = "ldap:///cn=ldapusers,ou=special_users,dc=newbase,dc=ext");) - delete: aci aci: (targetattr ="*")(version 3.0;acl "Directory Administrators Group";allow (all) (groupdn = "ldap:///cn=Directory Admins,dc=newbase,dc=ext");) - add: aci aci: (targetattr ="*")(version 3.0;acl "LDAP Admins Group";allow (all) (groupdn = "ldap:///cn=ldapadmins,ou=special_users,dc=newbase,dc=ext");)

dn: cn=ldapusers,ou=special_users,dc=newbase,dc=ext changetype: add objectclass: top objectclass: groupofuniquenames cn: ldapusers

dn: cn=ldapadmins,ou=special_users,dc=newbase,dc=ext changetype: add objectclass: top objectclass: groupofuniquenames cn: ldapadmins </file>

Une fois qu'on a tout ça, il ne reste plus qu'à créer des comptes et les référencer dans un de ces deux groupes pour qu'ils puissent lire les données du LDAP.