annuaire_de_connexion
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
annuaire_de_connexion [2023/02/07 18:01] – créée admin | annuaire_de_connexion [2023/02/07 18:58] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Annuaire de connexion | + | ====== |
+ | |||
+ | Présentation d' | ||
+ | |||
+ | ===== Packages ===== | ||
+ | |||
+ | Installation des outils: | ||
+ | |||
+ | < | ||
+ | DEBIAN_FRONTEND=noninteractive apt-get install -yqq slapd ldap-utils</ | ||
+ | |||
+ | ===== Configuration de base ===== | ||
+ | |||
+ | Dans la suite de la configuration, | ||
+ | |||
+ | ==== Réglage OpenLDAP ==== | ||
+ | |||
+ | Créer et modifier le fichier /// | ||
+ | < | ||
+ | service slapd stop | ||
+ | cd / | ||
+ | rm -rf * | ||
+ | echo "# | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | service slapd start | ||
+ | </ | ||
+ | |||
+ | ==== Initialisation ==== | ||
+ | |||
+ | Définir l' | ||
+ | < | ||
+ | rootpass=$(slappasswd -s ROOT_PASSWORD_SECRET | base64) | ||
+ | echo "dn: olcDatabase={1}mdb, | ||
+ | changeType: modify | ||
+ | replace: olcSuffix | ||
+ | olcSuffix: dc=sleto, | ||
+ | - | ||
+ | replace: olcRootDN | ||
+ | olcRootDN: cn=root, | ||
+ | - | ||
+ | replace: olcRootPW | ||
+ | olcRootPW: $rootpass" | ||
+ | ldapmodify -Y EXTERNAL -H ldapi:/// -f / | ||
+ | </ | ||
+ | |||
+ | ==== Desactivation anonyme ==== | ||
+ | |||
+ | Script pour désactiver l' | ||
+ | < | ||
+ | ldapadd -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: cn=config | ||
+ | changetype: modify | ||
+ | add: olcDisallows | ||
+ | olcDisallows: | ||
+ | |||
+ | dn: cn=config | ||
+ | changetype: modify | ||
+ | add: olcRequires | ||
+ | olcRequires: | ||
+ | |||
+ | dn: olcDatabase={-1}frontend, | ||
+ | changetype: modify | ||
+ | add: olcRequires | ||
+ | olcRequires: | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | ==== Ajout d' | ||
+ | |||
+ | Les //overlay// sont des sortes d' | ||
+ | |||
+ | Ajout pour utiliser correctement la fonction // | ||
+ | < | ||
+ | ldapadd -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: cn=module{0}, | ||
+ | changetype: modify | ||
+ | add: olcModuleLoad | ||
+ | olcModuleLoad: | ||
+ | EOF | ||
+ | |||
+ | ldapadd -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: cn=module, | ||
+ | cn: module | ||
+ | objectClass: | ||
+ | olcModuleLoad: | ||
+ | olcModulePath: | ||
+ | EOF | ||
+ | |||
+ | ldapadd -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: cn=module{0}, | ||
+ | changetype: modify | ||
+ | add: olcModuleLoad | ||
+ | olcModuleLoad: | ||
+ | EOF | ||
+ | |||
+ | ldapadd -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: olcOverlay=memberof, | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | olcOverlay: memberof | ||
+ | olcMemberOfDangling: | ||
+ | olcMemberOfRefInt: | ||
+ | olcMemberOfGroupOC: | ||
+ | olcMemberOfMemberAD: | ||
+ | olcMemberOfMemberOfAD: | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | ===== Configuration avancée ===== | ||
+ | |||
+ | D' | ||
+ | |||
+ | ==== SLL ==== | ||
+ | |||
+ | Afin que la communication deviens chiffré. | ||
+ | |||
+ | Copier les clefs | ||
+ | < | ||
+ | cp / | ||
+ | cp / | ||
+ | cp / | ||
+ | chown -R openldap. / | ||
+ | </ | ||
+ | Voir l' | ||
+ | |||
+ | Et activer le SSL ainsi: | ||
+ | < | ||
+ | ldapmodify -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: cn=config | ||
+ | changetype: modify | ||
+ | add: olcTLSCACertificateFile | ||
+ | olcTLSCACertificateFile: | ||
+ | - | ||
+ | replace: olcTLSCertificateFile | ||
+ | olcTLSCertificateFile: | ||
+ | - | ||
+ | replace: olcTLSCertificateKeyFile | ||
+ | olcTLSCertificateKeyFile: | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | ==== Gestion d' | ||
+ | |||
+ | Pour gérer plus de sécurité, les modifications de l' | ||
+ | afin de ne pas utiliser //root//.\\ | ||
+ | J' | ||
+ | Cet utilisateur ne pourra que créer des comptes dans le dossier // | ||
+ | |||
+ | Pour cela, on commence par supprimer les accès par défaut (il y en a normalement 3): | ||
+ | < | ||
+ | ldapmodify -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: olcDatabase={1}mdb, | ||
+ | changetype: modify | ||
+ | delete: olcAccess | ||
+ | olcAccess: {0} | ||
+ | olcAccess: {1} | ||
+ | olcAccess: {2} | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | Et ensuite, on ajoute les 5 droits suivants: | ||
+ | < | ||
+ | ldapmodify -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: olcDatabase={1}mdb, | ||
+ | changetype: modify | ||
+ | add: olcAccess | ||
+ | olcAccess: {0}to attrs=userPassword | ||
+ | by self write by anonymous auth | ||
+ | by * none | ||
+ | - | ||
+ | add: olcAccess | ||
+ | olcAccess: {1}to attrs=shadowLastChange | ||
+ | by self write | ||
+ | by * read | ||
+ | - | ||
+ | add: olcAccess | ||
+ | olcAccess: {2}to attrs=member | ||
+ | by dn=" | ||
+ | by * read | ||
+ | - | ||
+ | add: olcAccess | ||
+ | olcAccess: {3}to dn.subtree=" | ||
+ | by dn=" | ||
+ | by * read | ||
+ | - | ||
+ | add: olcAccess | ||
+ | olcAccess: {4}to * by * read | ||
+ | EOF | ||
+ | </ | ||
+ | On notera que les olcAccess {0},{1} et {4} était les droits par défaut que l'on viens de supprimer.\\ | ||
+ | Il est important de les remettre dans cette ordre: en effet, si le dernier droit était en 3ème position, il empecherait d' | ||
+ | |||
+ | ==== Réplication ==== | ||
+ | |||
+ | Utiliser une authentification centralisée pourrait fragiliser l' | ||
+ | En effet, cela peux devenir le maillon faible : si le serveur OpenLDAP tombe, plus aucune authentification n'est possible, même sur d' | ||
+ | |||
+ | Pour palier cela, il est possible de configurer plusieurs serveurs OpenLDAP en réplication mutuel : à chaque modification de l'un d'eux, les autres sont automatiquement mis à jour. | ||
+ | |||
+ | //Séquence réalisée d' | ||
+ | |||
+ | Cette configuration est a effectué sur chaque serveur OpenLDAP.\\ | ||
+ | Dans l' | ||
+ | |||
+ | Pour commencer, ajouter l' | ||
+ | < | ||
+ | ldapadd -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: cn=module, | ||
+ | objectClass: | ||
+ | cn: module | ||
+ | olcModulePath: | ||
+ | olcModuleLoad: | ||
+ | EOF | ||
+ | |||
+ | ldapadd -Y EXTERNAL -H ldapi:/// << EOF | ||
+ | dn: olcOverlay=syncprov, | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | olcOverlay: syncprov | ||
+ | olcSpSessionLog: | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | Pour le serveur // | ||
+ | < | ||
+ | dn: cn=config | ||
+ | changetype: modify | ||
+ | replace: olcServerID | ||
+ | olcServerID: | ||
+ | |||
+ | dn: olcDatabase={1}mdb, | ||
+ | changetype: modify | ||
+ | add: olcSyncRepl | ||
+ | olcSyncRepl: | ||
+ | provider=ldap:// | ||
+ | bindmethod=simple | ||
+ | binddn=" | ||
+ | credentials=< | ||
+ | searchbase=" | ||
+ | scope=sub | ||
+ | schemachecking=on | ||
+ | type=refreshAndPersist | ||
+ | retry=" | ||
+ | interval=00: | ||
+ | olcSyncRepl: | ||
+ | provider=ldap:// | ||
+ | bindmethod=simple | ||
+ | binddn=" | ||
+ | credentials=< | ||
+ | searchbase=" | ||
+ | scope=sub | ||
+ | schemachecking=on | ||
+ | type=refreshAndPersist | ||
+ | retry=" | ||
+ | interval=00: | ||
+ | - | ||
+ | add: olcMirrorMode | ||
+ | olcMirrorMode: | ||
+ | |||
+ | dn: olcOverlay=syncprov, | ||
+ | changetype: add | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | olcOverlay: syncprov | ||
+ | </ | ||
+ | |||
+ | Pour les serveurs // | ||
+ | |||
+ | ===== Insertion de données ===== | ||
+ | |||
+ | Pour finir la configuration, | ||
+ | //Noter:// avec la replication, | ||
+ | |||
+ | Voilà un exemple d' | ||
+ | Le but ici est d' | ||
+ | Les variables // | ||
+ | < | ||
+ | echo " | ||
+ | description: | ||
+ | dc: sleto | ||
+ | o: | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | structuralObjectClass: | ||
+ | |||
+ | # administrator | ||
+ | dn: cn=root, | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | cn: admin | ||
+ | description: | ||
+ | userPassword: | ||
+ | structuralObjectClass: | ||
+ | |||
+ | # reader | ||
+ | dn: cn=reader, | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | cn: reader | ||
+ | description: | ||
+ | userPassword: | ||
+ | structuralObjectClass: | ||
+ | |||
+ | # modifier | ||
+ | dn: cn=writer, | ||
+ | objectClass: | ||
+ | objectClass: | ||
+ | cn: modifier | ||
+ | description: | ||
+ | userPassword: | ||
+ | structuralObjectClass: | ||
+ | |||
+ | # groups | ||
+ | dn: ou=groups, | ||
+ | objectclass: | ||
+ | objectclass: | ||
+ | ou: groups | ||
+ | |||
+ | # users | ||
+ | dn: ou=users, | ||
+ | objectclass: | ||
+ | objectclass: | ||
+ | ou: users" > / | ||
+ | |||
+ | slapadd -b " | ||
+ | </ |
annuaire_de_connexion.1675789267.txt.gz · Dernière modification : 2023/02/07 18:01 de admin