LDAP : Installation d'un serveur 389 DS
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-ds | dblclick 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.pl | dblclick 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
{{path|/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.ldif | dblclick 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.ldif | dblclick 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 -c | dblclick 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.ldif | dblclick 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.