LDAP : Installation d'un serveur 389 DS

De Adadov.net wiki
Ecrit Par : Adadov

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

[root@linux] # sudo yum install 389-dsdblclick to copy

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

J'ai choisi de ne pas implémenter la console et j'utiliserais Apache Directory Editor par la suite pour gérer les entrées de mon Annuaire.

Alors on utilise simplement setup-ds.pl.

[root@linux] # sudo setup-ds.pldblclick to copy

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 {{path|/etc/dirsrv/slapd-{instance}/schema/}}.
Puis recharger dynamiquement le schéma de votre annuaire via {{cmd|/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.

[root@linux] # ldapsearch -h oldldap.example.com -x -LLL > backup_ldap.ldifdblclick to copy

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.

[root@linux] # sed -i 's/dc=oldbase,dc=ext/dc=newbase,dc=ext/' backup_ldap.ldifdblclick to copy

Puis on importe les données dans notre nouveau LDAP.

[root@linux] # ldapadd -D "cn=Directory Manager" -W -x -f backup_ldap.ldif -cdblclick to copy

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

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";)

Ensuite on l'applique

[root@linux] # ldapmodifiy -D "cn=Directory Manager" -W -x -f anonymousaci.ldifdblclick to copy

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.

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

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.