annuaire_de_connexion
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| annuaire_de_connexion [2023/02/07 18:03] – admin | annuaire_de_connexion [2023/02/07 18:58] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| ===== Packages ===== | ===== 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 // | ||
| + | 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: Sleto | ||
| + | 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.1675789387.txt.gz · Dernière modification : 2023/02/07 18:03 de admin
