Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| openldap-server [Le 11/11/2010, 03:13] – Cyclick | openldap-server [Le 30/07/2017, 14:13] (Version actuelle) – Suppression. Voir http://guide.ubuntu-fr.org/server/openldap-server.html fabux | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | ||
| - | ------ | ||
| - | ====== Serveur OpenLDAP ====== | ||
| - | |||
| - | Ce document est la traduction de la documentation officiel [[https:// | ||
| - | |||
| - | Il a été traduit et mis en page par [[utilisateurs: | ||
| - | |||
| - | ===== Introduction ===== | ||
| - | LDAP et l' | ||
| - | |||
| - | La configuration mis en oeuvre dans ce document permettra l' | ||
| - | |||
| - | Néanmoins, LDAP peut être utilisé de plusieurs façons: l' | ||
| - | |||
| - | Pour décrire rapidement LDAP, toutes les informations sont stockées dans une structure en arborescence. Avec OpenLDAP vous avez la liberté de déterminer le répertoire de l' | ||
| - | |||
| - | * Le nœud " | ||
| - | * Le nœud " | ||
| - | | ||
| - | Avant de commencer, vous devez déterminer ce que la racine de votre répertoire LDAP sera. Par défaut, votre arbre sera déterminée par votre nom de domaine pleinement qualifié (FQDN). | ||
| - | |||
| - | Si votre domaine est **example.com** (que nous utiliserons dans cet exemple), votre nœud racine sera **dc=exemple, | ||
| - | |||
| - | ===== Installation ===== | ||
| - | Tout d' | ||
| - | < | ||
| - | sudo apt-get install slapd ldap-utils | ||
| - | </ | ||
| - | |||
| - | Par défaut **slapd** est configuré avec des options minimales nécessaires pour exécuter le démon **slapd**. | ||
| - | |||
| - | Dans l' | ||
| - | |||
| - | ===== Peuplement LDAP ===== | ||
| - | |||
| - | OpenLDAP utilise un répertoire distinct qui contient le répertoire **cn=config** qui est le répertoire de l' | ||
| - | |||
| - | Le dorsal **cn=config** a seulement une configuration minimale par défaut et a besoin d' | ||
| - | |||
| - | < | ||
| - | Pour s' | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | N' | ||
| - | </ | ||
| - | |||
| - | Tout d' | ||
| - | < | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f / | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f / | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f / | ||
| - | </ | ||
| - | |||
| - | Ensuite, copiez le fichier exemple LDIF suivant, en le nommant **backend.example.com.ldif**, | ||
| - | |||
| - | < | ||
| - | # Load dynamic backend modules | ||
| - | dn: cn=module, | ||
| - | objectClass: | ||
| - | cn: module | ||
| - | olcModulepath: | ||
| - | olcModuleload: | ||
| - | |||
| - | # Database settings | ||
| - | dn: olcDatabase=hdb, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | olcDatabase: | ||
| - | olcSuffix: dc=example, | ||
| - | olcDbDirectory: | ||
| - | olcRootDN: cn=admin, | ||
| - | olcRootPW: secret | ||
| - | olcDbConfig: | ||
| - | olcDbConfig: | ||
| - | olcDbConfig: | ||
| - | olcDbConfig: | ||
| - | olcDbIndex: objectClass eq | ||
| - | olcLastMod: TRUE | ||
| - | olcDbCheckpoint: | ||
| - | olcAccess: to attrs=userPassword by dn=" | ||
| - | olcAccess: to attrs=shadowLastChange by self write by * read | ||
| - | olcAccess: to dn.base="" | ||
| - | olcAccess: to * by dn=" | ||
| - | </ | ||
| - | |||
| - | Changer **secret** dans **olcRootPW: | ||
| - | Il est possible aussi de générer un mot de passe chiffré avec la commande suivante: | ||
| - | < | ||
| - | sudo slappasswd -s secret | ||
| - | |||
| - | {SSHA}aobrpti5d0rnoT48U+XfZT9XecpYXyVA | ||
| - | </ | ||
| - | Changer **secret** par un mot de passe de votre choix, mettre le résultat, pour l' | ||
| - | |||
| - | Maintenant, ajoutez le LDIF dans le répertoire: | ||
| - | < | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldif | ||
| - | </ | ||
| - | |||
| - | Le répertoire frontal est maintenant prêt à être rempli. Créer un fichier **frontend.example.com.ldif** avec le contenu suivant: | ||
| - | |||
| - | < | ||
| - | # Create top-level object in domain | ||
| - | dn: dc=example, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | objectclass: | ||
| - | o: Example Organization | ||
| - | dc: Example | ||
| - | description: | ||
| - | |||
| - | # Admin user. | ||
| - | dn: cn=admin, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | cn: admin | ||
| - | description: | ||
| - | userPassword: | ||
| - | |||
| - | dn: ou=people, | ||
| - | objectClass: | ||
| - | ou: people | ||
| - | |||
| - | dn: ou=groups, | ||
| - | objectClass: | ||
| - | ou: groups | ||
| - | |||
| - | dn: uid=john, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | uid: john | ||
| - | sn: Doe | ||
| - | givenName: John | ||
| - | cn: John Doe | ||
| - | displayName: | ||
| - | uidNumber: 1000 | ||
| - | gidNumber: 10000 | ||
| - | userPassword: | ||
| - | gecos: John Doe | ||
| - | loginShell: /bin/bash | ||
| - | homeDirectory: | ||
| - | shadowExpire: | ||
| - | shadowFlag: 0 | ||
| - | shadowWarning: | ||
| - | shadowMin: 8 | ||
| - | shadowMax: 999999 | ||
| - | shadowLastChange: | ||
| - | mail: john.doe@example.com | ||
| - | postalCode: 31000 | ||
| - | l: Toulouse | ||
| - | o: Example | ||
| - | mobile: +33 (0)6 xx xx xx xx | ||
| - | homePhone: +33 (0)5 xx xx xx xx | ||
| - | title: System Administrator | ||
| - | postalAddress: | ||
| - | initials: JD | ||
| - | |||
| - | dn: cn=example, | ||
| - | objectClass: | ||
| - | cn: example | ||
| - | gidNumber: 10000 | ||
| - | </ | ||
| - | |||
| - | Dans cet exemple, une structure de répertoire avec un utilisateur et un groupe sera insérer. Dans d' | ||
| - | |||
| - | Ajoutez les entrées à l' | ||
| - | < | ||
| - | sudo ldapadd -x -D cn=admin, | ||
| - | </ | ||
| - | |||
| - | On peut vérifier que le contenu a été correctement ajouté avec l' | ||
| - | < | ||
| - | ldapsearch -xLLL -b " | ||
| - | |||
| - | dn: uid=john, | ||
| - | cn: John Doe | ||
| - | sn: Doe | ||
| - | givenName: John | ||
| - | </ | ||
| - | |||
| - | Juste une petite explication: | ||
| - | |||
| - | * -x: ne pas utiliser la méthode d' | ||
| - | * -LLL: désactiver l' | ||
| - | |||
| - | === Autre configuration === | ||
| - | |||
| - | L' | ||
| - | |||
| - | Utilisez **ldapsearch** pour afficher l' | ||
| - | < | ||
| - | sudo ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn | ||
| - | |||
| - | SASL/ | ||
| - | SASL username: gidNumber=0+uidNumber=0, | ||
| - | SASL SSF: 0 | ||
| - | dn: cn=config | ||
| - | |||
| - | dn: cn=module{0}, | ||
| - | |||
| - | dn: cn=schema, | ||
| - | |||
| - | dn: cn={0}core, | ||
| - | |||
| - | dn: cn={1}cosine, | ||
| - | |||
| - | dn: cn={2}nis, | ||
| - | |||
| - | dn: cn={3}inetorgperson, | ||
| - | |||
| - | dn: olcDatabase={-1}frontend, | ||
| - | |||
| - | dn: olcDatabase={0}config, | ||
| - | |||
| - | dn: olcDatabase={1}hdb, | ||
| - | </ | ||
| - | |||
| - | La sortie ci-dessus est le résultat des options de configuration actuelle pour le dorsal de la base de donnée **cn=config**. Votre sortie est peut être différente. | ||
| - | |||
| - | Un exemple de modification de l' | ||
| - | < | ||
| - | sudo ldapmodify -Y EXTERNAL -H ldapi:/// | ||
| - | |||
| - | SASL/ | ||
| - | SASL username: gidNumber=0+uidNumber=0, | ||
| - | SASL SSF: 0 | ||
| - | dn: olcDatabase={1}hdb, | ||
| - | add: olcDbIndex | ||
| - | olcDbIndex: uidNumber eq | ||
| - | </ | ||
| - | Modifier l' | ||
| - | |||
| - | Une fois la modification terminée, appuyez sur Ctrl + D pour quitter l' | ||
| - | L' | ||
| - | < | ||
| - | dn: olcDatabase={1}hdb, | ||
| - | add: olcDbIndex | ||
| - | olcDbIndex: uid eq,pres,sub | ||
| - | </ | ||
| - | |||
| - | Ensuite, exécutez **ldapmodify**: | ||
| - | < | ||
| - | sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f uid_index.ldif | ||
| - | |||
| - | SASL/ | ||
| - | SASL username: gidNumber=0+uidNumber=0, | ||
| - | SASL SSF: 0 | ||
| - | </ | ||
| - | Modifier l' | ||
| - | |||
| - | La méthode du fichier est très utile pour de grands changements. | ||
| - | |||
| - | L' | ||
| - | |||
| - | -- D' | ||
| - | < | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | include / | ||
| - | </ | ||
| - | |||
| - | -- Ensuite, créez un répertoire temporaire pour stocker la sortie: | ||
| - | < | ||
| - | mkdir / | ||
| - | </ | ||
| - | |||
| - | -- Maintenant, en utilisant slapcat il faut convertir les fichiers LDIF schéma: | ||
| - | < | ||
| - | slapcat -f schema_convert.conf -F / | ||
| - | </ | ||
| - | Ajuster le nom du fichier de configuration et les noms de répertoire temporaire si les vôtres sont différents. En outre, il peut être utile de garder le répertoire ldif_output de coté au cas où vous souhaitez ajouter d' | ||
| - | |||
| - | -- Modifier le fichier **/ | ||
| - | < | ||
| - | dn: cn=dyngroup, | ||
| - | ... | ||
| - | cn: dyngroup | ||
| - | </ | ||
| - | |||
| - | Et supprimer les lignes suivantes à partir du bas du fichier: | ||
| - | |||
| - | < | ||
| - | structuralObjectClass: | ||
| - | entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757 | ||
| - | creatorsName: | ||
| - | createTimestamp: | ||
| - | entryCSN: 20080826021140.791425Z# | ||
| - | modifiersName: | ||
| - | modifyTimestamp: | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | Les valeurs d' | ||
| - | </ | ||
| - | |||
| - | -- Enfin, en utilisant l' | ||
| - | < | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f / | ||
| - | </ | ||
| - | |||
| - | Il devrait maintenant y avoir un **dn: cn={4}dyngroup, | ||
| - | |||
| - | === Ancienne configuration === | ||
| - | Il est possible de migrer un fichier slapd.conf vers un DIT **cn=config**. | ||
| - | Copiez le fichier **slapd.conf** dans **/ | ||
| - | < | ||
| - | sudo / | ||
| - | cd /etc/ldap | ||
| - | sudo mv slapd.d slapd.d.old | ||
| - | sudo mkdir slapd.d | ||
| - | sudo slaptest -f slapd.conf -F slapd.d | ||
| - | sudo chown -R openldap: | ||
| - | / | ||
| - | </ | ||
| - | |||
| - | Il est aussi possible d' | ||
| - | Copiez le fichier **slapd.conf** dans **/ | ||
| - | < | ||
| - | sudo / | ||
| - | cd /etc/ldap | ||
| - | sudo mv slapd.d slapd.d.old | ||
| - | sudo mrdir -Rf slapd.d | ||
| - | sudo chown -R openldap: | ||
| - | </ | ||
| - | Puis editez le fichier / | ||
| - | < | ||
| - | SLAPD_CONF=/ | ||
| - | </ | ||
| - | Puis dans un terminal: | ||
| - | < | ||
| - | sudo / | ||
| - | </ | ||
| - | |||
| - | === Reconfiguration === | ||
| - | Reconfiguration du serveur LDAP. Dans un terminal: | ||
| - | < | ||
| - | sudo / | ||
| - | cd /etc/ldap | ||
| - | sudo cp slapd.d slapd.d.old | ||
| - | sudo cp slapd.conf slapd.conf.old | ||
| - | sudo dpkg-reconfigure slapd | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | 1.Passer la configuration d' | ||
| - | 2.Voulez-vous que la base de donnée soit effacée lorsque slapd est purgé ? oui | ||
| - | 3.Authoriser le protocol LDAPv2 ? non | ||
| - | </ | ||
| - | |||
| - | ===== Réplication LDAP ===== | ||
| - | LDAP souvent devient rapidement un service hautement critique pour le réseau. De multiples systèmes peuvent dépendre de LDAP pour l' | ||
| - | |||
| - | La réplication est réalisée en utilisant le moteur de **syncrepl**. **Syncrepl** permet de synchroniser les changements en utilisant un modèle de fournisseur(maître) par client(esclave). Un fournisseur envoie les modifications de répertoire aux clients. | ||
| - | |||
| - | === configuration === | ||
| - | Ce qui suit est un exemple de configuration simple maître/ | ||
| - | |||
| - | == Configuration du fournisseur(maître) == | ||
| - | -- Tout d' | ||
| - | < | ||
| - | # Add indexes to the frontend db. | ||
| - | dn: olcDatabase={1}hdb, | ||
| - | changetype: modify | ||
| - | add: olcDbIndex | ||
| - | olcDbIndex: entryCSN eq | ||
| - | - | ||
| - | add: olcDbIndex | ||
| - | olcDbIndex: entryUUID eq | ||
| - | |||
| - | #Load the syncprov and accesslog modules. | ||
| - | dn: cn=module{0}, | ||
| - | changetype: modify | ||
| - | add: olcModuleLoad | ||
| - | olcModuleLoad: | ||
| - | - | ||
| - | add: olcModuleLoad | ||
| - | olcModuleLoad: | ||
| - | |||
| - | # Accesslog database definitions | ||
| - | dn: olcDatabase={2}hdb, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | olcDatabase: | ||
| - | olcDbDirectory: | ||
| - | olcSuffix: cn=accesslog | ||
| - | olcRootDN: cn=admin, | ||
| - | olcDbIndex: default eq | ||
| - | olcDbIndex: entryCSN, | ||
| - | |||
| - | # Accesslog db syncprov. | ||
| - | dn: olcOverlay=syncprov, | ||
| - | changetype: add | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | olcOverlay: syncprov | ||
| - | olcSpNoPresent: | ||
| - | olcSpReloadHint: | ||
| - | |||
| - | # syncrepl Provider for primary db | ||
| - | dn: olcOverlay=syncprov, | ||
| - | changetype: add | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | olcOverlay: syncprov | ||
| - | olcSpNoPresent: | ||
| - | |||
| - | # accesslog overlay definitions for primary db | ||
| - | dn: olcOverlay=accesslog, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | olcOverlay: accesslog | ||
| - | olcAccessLogDB: | ||
| - | olcAccessLogOps: | ||
| - | olcAccessLogSuccess: | ||
| - | # scan the accesslog DB every day, and purge entries older than 7 days | ||
| - | olcAccessLogPurge: | ||
| - | </ | ||
| - | |||
| - | -- Le profil **AppArmor** pour **slapd** devra être ajusté pour l' | ||
| - | < | ||
| - | / | ||
| - | / | ||
| - | </ | ||
| - | Ensuite, créez le répertoire, | ||
| - | < | ||
| - | sudo -u openldap mkdir / | ||
| - | sudo -u openldap cp / | ||
| - | sudo / | ||
| - | {{icons: | ||
| - | >En utilisant l' | ||
| - | |||
| - | -- Modifiez le fichier et changer le **olcRootDN** pour le faire correspondre à votre répertoire: | ||
| - | < | ||
| - | olcRootDN: cn=admin, | ||
| - | </ | ||
| - | |||
| - | -- Ensuite, ajoutez le fichier LDIF aide de l' | ||
| - | < | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f provider_sync.ldif | ||
| - | </ | ||
| - | |||
| - | -- Redémarrez **slapd**: | ||
| - | < | ||
| - | sudo / | ||
| - | </ | ||
| - | |||
| - | Le serveur est maintenant configuré comme fournisseur, | ||
| - | |||
| - | == Configuration du client(esclave) == | ||
| - | -- Sur le serveur client appliquer la même configuration que celle du fournisseur, | ||
| - | Ajoutez les fichiers de schéma supplémentaires: | ||
| - | < | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f / | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f / | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f / | ||
| - | </ | ||
| - | En outre, créer un fichier, ou faites une copie de celui du serveur fournisseur, | ||
| - | < | ||
| - | # Load dynamic backend modules | ||
| - | dn: cn=module, | ||
| - | objectClass: | ||
| - | cn: module | ||
| - | olcModulepath: | ||
| - | olcModuleload: | ||
| - | |||
| - | # Database settings | ||
| - | dn: olcDatabase=hdb, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | olcDatabase: | ||
| - | olcSuffix: dc=example, | ||
| - | olcDbDirectory: | ||
| - | olcRootDN: cn=admin, | ||
| - | olcRootPW: secret | ||
| - | olcDbConfig: | ||
| - | olcDbConfig: | ||
| - | olcDbConfig: | ||
| - | olcDbConfig: | ||
| - | olcDbIndex: objectClass eq | ||
| - | olcLastMod: TRUE | ||
| - | olcDbCheckpoint: | ||
| - | olcAccess: to attrs=userPassword by dn=" | ||
| - | olcAccess: to attrs=shadowLastChange by self write by * read | ||
| - | olcAccess: to dn.base="" | ||
| - | olcAccess: to * by dn=" | ||
| - | </ | ||
| - | Et ajouter le LDIF en entrant: | ||
| - | < | ||
| - | sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldif | ||
| - | </ | ||
| - | |||
| - | -- Faites de même avec le fichier frontend.example.com.ldif énumérés ci-dessus, et l' | ||
| - | < | ||
| - | sudo ldapadd -x -D cn=admin, | ||
| - | </ | ||
| - | Les deux serveurs doivent maintenant avoir la même configuration à l' | ||
| - | |||
| - | -- Maintenant, créez un fichier nommé consumer_sync.ldif contenant: | ||
| - | < | ||
| - | #Load the syncprov module. | ||
| - | dn: cn=module{0}, | ||
| - | changetype: modify | ||
| - | add: olcModuleLoad | ||
| - | olcModuleLoad: | ||
| - | |||
| - | # syncrepl specific indices | ||
| - | dn: olcDatabase={1}hdb, | ||
| - | changetype: modify | ||
| - | add: olcDbIndex | ||
| - | olcDbIndex: entryUUID eq | ||
| - | - | ||
| - | add: olcSyncRepl | ||
| - | olcSyncRepl: | ||
| - | credentials=secret searchbase=" | ||
| - | logfilter=" | ||
| - | type=refreshAndPersist retry=" | ||
| - | - | ||
| - | add: olcUpdateRef | ||
| - | olcUpdateRef: | ||
| - | </ | ||
| - | Vous voudrez probablement modifier les attributs suivants: | ||
| - | * ldap01.example.com nom d' | ||
| - | * binddn | ||
| - | * credentials | ||
| - | * searchbase | ||
| - | * olcUpdateRef: | ||
| - | |||
| - | -- Ajoutez le fichier LDIF à l' | ||
| - | < | ||
| - | sudo ldapadd -c -Y EXTERNAL -H ldapi:/// -f consumer_sync.ldif | ||
| - | </ | ||
| - | |||
| - | La base de données client devrait désormais se synchroniser entre les serveurs. Vous pouvez ajouter des serveurs supplémentaires en suivant les étapes ci-dessus si le besoin s'en fait sentir. | ||
| - | |||
| - | < | ||
| - | Le démon **slapd** enverra les informations du journal dans **/ | ||
| - | </ | ||
| - | |||
| - | ===== Mise en place d'ACL ===== | ||
| - | L' | ||
| - | |||
| - | Pour afficher la liste de contrôle d' | ||
| - | < | ||
| - | ldapsearch -xLLL -b cn=config -D cn=admin, | ||
| - | |||
| - | Enter LDAP Password: | ||
| - | dn: olcDatabase={1}hdb, | ||
| - | olcAccess: {0}to attrs=userPassword, | ||
| - | olcAccess: {1}to dn.base="" | ||
| - | olcAccess: {2}to * by dn=" | ||
| - | </ | ||
| - | |||
| - | ===== TLS et SSL ===== | ||
| - | Lors de l' | ||
| - | |||
| - | Ceci peut être accompli en utilisant le mode Transport Layer Security (TLS) et/ou le mode Secure Sockets Layer (SSL). | ||
| - | |||
| - | La première étape du processus est d' | ||
| - | |||
| - | -- Tout d' | ||
| - | < | ||
| - | sudo apt-get install gnutls-bin | ||
| - | </ | ||
| - | |||
| - | -- Ensuite, créez une clé privée pour l' | ||
| - | < | ||
| - | sudo sh -c " | ||
| - | </ | ||
| - | |||
| - | -- Créer un fichier **/ | ||
| - | < | ||
| - | cn = Example Company | ||
| - | ca | ||
| - | cert_signing_key | ||
| - | </ | ||
| - | |||
| - | -- Maintenant, créez le certificat auto-signé CA: | ||
| - | < | ||
| - | sudo certtool --generate-self-signed --load-privkey / | ||
| - | </ | ||
| - | |||
| - | -- Faite une clé privée pour le serveur: | ||
| - | < | ||
| - | sudo sh -c " | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | Remplacer **ldap01** dans le nom des fichiers avec le nom de votre serveur. Ajuster le certificat et la clé de l' | ||
| - | </ | ||
| - | |||
| - | -- Pour signer le certificat du serveur avec le CA, créer le fichier d' | ||
| - | < | ||
| - | organization = Example Company | ||
| - | cn = ldap01.example.com | ||
| - | tls_www_server | ||
| - | encryption_key | ||
| - | signing_key | ||
| - | </ | ||
| - | |||
| - | -- Créer le certificat du serveur: | ||
| - | < | ||
| - | sudo certtool --generate-certificate --load-privkey / | ||
| - | --load-ca-certificate / | ||
| - | --template / | ||
| - | </ | ||
| - | |||
| - | Une fois que vous avez un certificat, une clé et CA cert installé, utilisez **ldapmodify** d' | ||
| - | < | ||
| - | sudo ldapmodify -Y EXTERNAL -H ldapi:/// | ||
| - | |||
| - | Enter LDAP Password: | ||
| - | dn: cn=config | ||
| - | add: olcTLSCACertificateFile | ||
| - | olcTLSCACertificateFile: | ||
| - | - | ||
| - | add: olcTLSCertificateFile | ||
| - | olcTLSCertificateFile: | ||
| - | - | ||
| - | add: olcTLSCertificateKeyFile | ||
| - | olcTLSCertificateKeyFile: | ||
| - | </ | ||
| - | Modifier l' | ||
| - | |||
| - | Appuyez sur Ctrl + D pour quitter l' | ||
| - | |||
| - | Utilisé ldapsearch dans un terminal pour faire une vérification des modifications: | ||
| - | < | ||
| - | sudo ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config|grep Certificate | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | Ajuster les noms **ldap01_slapd_cert.pem**, | ||
| - | </ | ||
| - | |||
| - | Ensuite, éditez le fichier **/ | ||
| - | |||
| - | < | ||
| - | SLAPD_SERVICES=" | ||
| - | </ | ||
| - | |||
| - | Maintenant, l' | ||
| - | |||
| - | < | ||
| - | sudo adduser openldap ssl-cert | ||
| - | sudo chgrp ssl-cert / | ||
| - | sudo chmod g+r / | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | Si les fichiers **/ | ||
| - | </ | ||
| - | |||
| - | Enfin, redémarrez **slapd**: | ||
| - | < | ||
| - | sudo / | ||
| - | </ | ||
| - | |||
| - | Le démon **slapd** doit maintenant être à l' | ||
| - | |||
| - | Vous pouvez utilisez la commande suivante dans un terminal pour vérifié si **slapd** écoute bien les port TCP:389 et TCP:636 pour le SSL. | ||
| - | < | ||
| - | sudo netstat -natup | grep LISTEN | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | Si vous avez un soucis avec le serveur et qu'il ne démarre pas, vérifiez le répertoire / | ||
| - | </ | ||
| - | |||
| - | ===== Réplication TLS ===== | ||
| - | Si vous avez configuré **syncrepl** entre les serveurs, il est prudent de chiffrer le trafic de réplication en utilisant le mode **Transport Layer Security (TLS)**. Pour plus de détails sur la configuration de la réplication voir la section intitulée **Réplication LDAP**. | ||
| - | En supposant que vous avez suivi les instructions ci-dessus et créér un certificat CA et un serveur de certificat sur le serveur du fournisseur. Suivez les instructions suivantes pour créer un certificat et une clé pour le serveur client. | ||
| - | |||
| - | -- Créez une nouvelle clé pour le serveur client: | ||
| - | < | ||
| - | mkdir ldap02-ssl | ||
| - | cd ldap02-ssl | ||
| - | certtool --generate-privkey > ldap02_slapd_key.pem | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | Créer un nouveau répertoire n'est pas strictement nécessaire, | ||
| - | </ | ||
| - | |||
| - | -- Ensuite, créez un fichier d' | ||
| - | < | ||
| - | country = US | ||
| - | state = North Carolina | ||
| - | locality = Winston-Salem | ||
| - | organization = Example Company | ||
| - | cn = ldap02.salem.edu | ||
| - | tls_www_client | ||
| - | encryption_key | ||
| - | signing_key | ||
| - | </ | ||
| - | |||
| - | -- Créez le certificat: | ||
| - | < | ||
| - | sudo certtool --generate-certificate --load-privkey ldap02_slapd_key.pem \ | ||
| - | --load-ca-certificate / | ||
| - | --template ldap02.info --outfile ldap02_slapd_cert.pem | ||
| - | </ | ||
| - | |||
| - | -- Copiez le fichier **cacert.pem** dans le répertoire: | ||
| - | < | ||
| - | cp / | ||
| - | </ | ||
| - | |||
| - | -- La seule chose qui reste à faire est de copier le répertoire ldap02-ssl pour le serveur client, puis de copiez ldap02_slapd_cert.pem et cacert.pem dans / | ||
| - | |||
| - | -- Une fois les fichiers en place ajuster le **cn=config** de l' | ||
| - | < | ||
| - | sudo ldapmodify -Y EXTERNAL -H ldapi:/// | ||
| - | |||
| - | Enter LDAP Password: | ||
| - | dn: cn=config | ||
| - | add: olcTLSCACertificateFile | ||
| - | olcTLSCACertificateFile: | ||
| - | - | ||
| - | add: olcTLSCertificateFile | ||
| - | olcTLSCertificateFile: | ||
| - | - | ||
| - | add: olcTLSCertificateKeyFile | ||
| - | olcTLSCertificateKeyFile: | ||
| - | </ | ||
| - | Modifier l' | ||
| - | |||
| - | -- Comme avec le fournisseur, | ||
| - | |||
| - | < | ||
| - | SLAPD_SERVICES=" | ||
| - | </ | ||
| - | |||
| - | Maintenant que TLS a été mis en place sur chaque serveur, une fois de plus modifier l' | ||
| - | < | ||
| - | sudo ldapmodify -Y EXTERNAL -H ldapi:/// | ||
| - | |||
| - | SASL/ | ||
| - | SASL username: gidNumber=0+uidNumber=0, | ||
| - | SASL SSF: 0 | ||
| - | |||
| - | dn: olcDatabase={1}hdb, | ||
| - | replace: olcSyncrepl | ||
| - | olcSyncrepl: | ||
| - | | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | Modifier l' | ||
| - | |||
| - | Si le nom du serveur LDAP ne correspond pas un nom de domaine pleinement qualifié (FQDN) dans le certificat, vous pouvez avoir à éditer le fichier **/ | ||
| - | < | ||
| - | TLS_CERT / | ||
| - | TLS_KEY / | ||
| - | TLS_CACERT / | ||
| - | </ | ||
| - | |||
| - | Enfin, redémarrez **slapd** sur chacun des serveurs: | ||
| - | < | ||
| - | sudo / | ||
| - | </ | ||
| - | |||
| - | ===== Authentification LDAP ===== | ||
| - | Une fois que vous avez un serveur LDAP de travail, les paquets **auth-client-config** et **llibnss-ldap** installé, nous allons faire la configuration d'un client Ubuntu et s' | ||
| - | < | ||
| - | sudo apt-get install libnss-ldap | ||
| - | </ | ||
| - | |||
| - | Au cours de l' | ||
| - | |||
| - | Si vous faites une erreur en entrant vos informations, | ||
| - | < | ||
| - | sudo dpkg-reconfigure ldap-auth-config | ||
| - | </ | ||
| - | |||
| - | Les résultats de la boîte de dialogue peut être vu dans **/ | ||
| - | Maintenant que libnss-ldap est configuré il faut activé auth-client-config dans le profile LDAP en entrant: | ||
| - | < | ||
| - | sudo auth-client-config -t nss -p lac_ldap | ||
| - | </ | ||
| - | * -t: ne modifie que le fichier **/ | ||
| - | * -p: le nom du profil à activer, désactiver, | ||
| - | |||
| - | lac_ldap: le profil **auth-client-config** qui fait partie du paquet **ldap-auth-config**. | ||
| - | |||
| - | L' | ||
| - | < | ||
| - | sudo pam-auth-update | ||
| - | </ | ||
| - | |||
| - | Dans le menu **pam-auth-update**, | ||
| - | |||
| - | Vous devriez maintenant être capable de vous connecter en utilisant les identifiants d' | ||
| - | |||
| - | Si vous compter utiliser LDAP pour stocker des utilisateurs Samba, vous devrez configurer le serveur pour s' | ||
| - | |||
| - | ===== Gestion des utilisateurs et groupes ===== | ||
| - | Le paquet **ldap-utils** est livré avec plusieurs utilitaires pour gérer le répertoire LDAP, mais la longue chaîne d' | ||
| - | Pour installer le paquet, à partir d'un terminal tapez: | ||
| - | < | ||
| - | sudo apt-get install ldapscripts | ||
| - | </ | ||
| - | Ensuite, éditez le fichier de configuration / | ||
| - | < | ||
| - | SERVER=localhost | ||
| - | BINDDN=' | ||
| - | BINDPWDFILE="/ | ||
| - | SUFFIX=' | ||
| - | GSUFFIX=' | ||
| - | USUFFIX=' | ||
| - | MSUFFIX=' | ||
| - | GIDSTART=10000 | ||
| - | UIDSTART=10000 | ||
| - | MIDSTART=10000 | ||
| - | </ | ||
| - | Maintenant, créez le fichier ldapscripts.passwd pour permettre un accès authentifié à l' | ||
| - | < | ||
| - | sudo sh -c "echo -n ' | ||
| - | sudo chmod 400 / | ||
| - | </ | ||
| - | < | ||
| - | Remplacer **secret** avec le mot de passe réel pour votre utilisateur admin LDAP. | ||
| - | </ | ||
| - | |||
| - | Le paquet **ldapscripts** est maintenant prêt à vous aider à gérer votre annuaire. Ce qui suit sont quelques exemples sur la façon d' | ||
| - | |||
| - | -- Créer un nouvel utilisateur: | ||
| - | < | ||
| - | sudo ldapadduser george example | ||
| - | </ | ||
| - | Cela va créer un utilisateur George avec comme uid george et définir le groupe primaire de l' | ||
| - | -- Changer mot de passe d'un utilisateur: | ||
| - | < | ||
| - | sudo ldapsetpasswd george | ||
| - | Changing password for user uid=george, | ||
| - | New Password: | ||
| - | New Password (verify): | ||
| - | </ | ||
| - | -- Supprimer un utilisateur: | ||
| - | < | ||
| - | sudo ldapdeleteuser george | ||
| - | </ | ||
| - | -- Ajouter un groupe: | ||
| - | < | ||
| - | sudo ldapaddgroup qa | ||
| - | </ | ||
| - | -- Supprimer un groupe: | ||
| - | < | ||
| - | sudo ldapdeletegroup qa | ||
| - | </ | ||
| - | -- Ajouter un utilisateur à un groupe: | ||
| - | < | ||
| - | sudo ldapaddusertogroup george qa | ||
| - | </ | ||
| - | Vous devriez maintenant voir un attribut memberUid pour le groupe qa une valeur de george. | ||
| - | -- Supprimer un utilisateur d'un groupe: | ||
| - | < | ||
| - | sudo ldapdeleteuserfromgroup george qa | ||
| - | </ | ||
| - | L' | ||
| - | -- Le script **ldapmodifyuser** vous permet d' | ||
| - | < | ||
| - | sudo ldapmodifyuser george | ||
| - | # Modifier l' | ||
| - | dn: uid=george, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | cn: george | ||
| - | uid: george | ||
| - | uidNumber: 1001 | ||
| - | gidNumber: 1001 | ||
| - | homeDirectory: | ||
| - | loginShell: /bin/bash | ||
| - | gecos: george | ||
| - | description: | ||
| - | userPassword:: | ||
| - | |||
| - | # Entrz les modifications ici, finissez avec CTRL-D. | ||
| - | dn: uid=george, | ||
| - | replace: gecos | ||
| - | gecos: George Carlin | ||
| - | </ | ||
| - | L' | ||
| - | -- Une autre grande caractéristique de ldapscripts, | ||
| - | < | ||
| - | UTEMPLATE="/ | ||
| - | </ | ||
| - | Il ya des exemples de modèles dans le répertoire / | ||
| - | < | ||
| - | sudo cp / | ||
| - | </ | ||
| - | Modifier le modèle de nouveau et ajouter les attributs souhaités. Ce qui suit devrait créer un nouvel utilisateur comme avec un objectClass de inetOrgPerson: | ||
| - | < | ||
| - | dn: uid=< | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | cn: < | ||
| - | sn: <ask> | ||
| - | uid: < | ||
| - | uidNumber: <uid> | ||
| - | gidNumber: <gid> | ||
| - | homeDirectory: | ||
| - | loginShell: < | ||
| - | gecos: < | ||
| - | description: | ||
| - | title: Employee | ||
| - | |||
| - | <note important> | ||
| - | L' | ||
| - | </ | ||
| - | |||
| - | Il ya des scripts plus utile dans le paquet, pour voir une liste complète entrez: | ||
| - | |||
| - | < | ||
| - | dpkg -L ldapscripts | grep bin | ||
| - | </ | ||
| - | |||
| - | ===== Ressources ===== | ||
| - | * [[https:// | ||
| - | * Le wiki Ubuntu [[https:// | ||
| - | * La documentation Ubuntu-fr [[http:// | ||
| - | * Pour plus d' | ||
| - | * Bien qu'il commence à montrer son âge, il est une grande source d' | ||
| - | * Packt [[http:// | ||
| - | * Pour plus d' | ||
| - | * Pour plus de détails concernant le paquet **ldapscripts** voir les pages man: **man ldapscripts**, | ||
