Ldap-services » Historique » Version 1
Pierre-Arnaud Poudret, 05/06/2013 15:48
| 1 | 1 | Pierre-Arnaud Poudret | h1. Interfaçage des services avec LDAP |
|---|---|---|---|
| 2 | |||
| 3 | Liste rapide des méthodes possibles pour interfacer des services avec LDAP. Certaines ne sont applicables que lorsque les services et le ldap tournent sur la même machine. |
||
| 4 | * utilisation de sockets (ldapi://) |
||
| 5 | * connexion à localhost |
||
| 6 | * utiliser nss-ldap [et pam-ldap] pour que les comptes ldap soient connus en tant que comptes systèmes de la machine qui exécute les services. Cela permet d'intégrer des services qui n'implémentent pas le protocole LDAP. |
||
| 7 | * selon le type de réseau emprunté, connexion sans chiffrement sur le port tcp 389, ssl (ldaps://) sur le port tcp 686, ou StartTLS sur le port tcp 389. Si ssl ou tls, authentification forte par certificats côté serveur seulement, ou bien côté serveur et client. |
||
| 8 | |||
| 9 | h1. Redmine |
||
| 10 | |||
| 11 | Pour pouvoir créer de nouveaux utilisateurs, Redmine a besoin de droits en écriture sur la branche ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR du LDAP. |
||
| 12 | |||
| 13 | On ajoute donc, sous ou=services, un nouvel utilisateur pour redmine. On modifie ensuite les ACL d'OpenLDAP pour accorder à cet utilisateur les droits nécessaires. |
||
| 14 | |||
| 15 | *Utilisateur cn=redmine,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR* |
||
| 16 | |||
| 17 | LDIF |
||
| 18 | <pre> |
||
| 19 | dn: cn=redmine,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR |
||
| 20 | objectClass: inetOrgPerson |
||
| 21 | objectClass: organizationalPerson |
||
| 22 | objectClass: person |
||
| 23 | objectClass: top |
||
| 24 | cn: redmine |
||
| 25 | sn: redmine |
||
| 26 | userPassword:: [SOMME SSHA] |
||
| 27 | </pre> |
||
| 28 | |||
| 29 | Note: mdp stocké par JFM dans Revelation. |
||
| 30 | |||
| 31 | *Modification des ACL dans les attributs de olcDatabase={1}hdb,cn=config* |
||
| 32 | |||
| 33 | On ajoute un attribut _olcAccess_ avec la valeur _to dn.subtree="ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" by ssf=128 dn="cn=redmine,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read_. (Signifie: le user cn=redmine peut lire le sous arbre de racine ou=users) |
||
| 34 | |||
| 35 | Pour permettre la réplication, il est nécessaire de donner également des droits en lecture à ldaprep1: _by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read_. |
||
| 36 | |||
| 37 | Par ailleurs les droits habituels s'appliquent. Aucun accès pour les utilisateurs et les connexions anonymes: _by users none by * none_. |
||
| 38 | |||
| 39 | LDIF des nouvelles ACL d'openldap |
||
| 40 | <pre> |
||
| 41 | olcAccess: {0}to attrs=userPassword,shadowLastChange by ssf=128 self write b |
||
| 42 | y anonymous auth by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurb |
||
| 43 | anne,st=RHA,c=FR" read by users none by * none |
||
| 44 | olcAccess: {1}to dn.subtree="ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" b |
||
| 45 | y ssf=128 dn="cn=redmine,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" r |
||
| 46 | ead by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c |
||
| 47 | =FR" read by users none by * none |
||
| 48 | olcAccess: {3}to dn.base="" by * read |
||
| 49 | olcAccess: {4}to * by ssf=128 self write by ssf=128 dn="cn=ldaprep1,ou=servi |
||
| 50 | ces,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read by users none by * none |
||
| 51 | </pre> |
||
| 52 | |||
| 53 | *Page d'administration de Redmine* |
||
| 54 | |||
| 55 | http://www.illyse.org/admin / Authentification LDAP |
||
| 56 | |||
| 57 | Ajout d'un nouveau mode d'authentification. |
||
| 58 | * Nom: LDAP |
||
| 59 | * Hôte: ldap.illyse.org |
||
| 60 | * Port: 636 |
||
| 61 | * LDAPS: oui |
||
| 62 | * Compte: cn=redmine,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR |
||
| 63 | * Mdp: mdp-de-cn=redmine |
||
| 64 | * Base DN: ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR |
||
| 65 | * Création des utilisateurs à la volée: oui |
||
| 66 | * Identifiant: cn |
||
| 67 | * Prénom: givenName |
||
| 68 | * Nom: sn |
||
| 69 | * Email: mail |
||
| 70 | |||
| 71 | Redmine crée automatiquement en base les users trouvés sur le LDAP. |
||
| 72 | |||
| 73 | |||
| 74 | h1. Bind 9 (DNS) |
||
| 75 | |||
| 76 | Voir [[bind-dlz]] pour l'installation et la configuration de bind9 avec backend ldap. |
||
| 77 | |||
| 78 | Pour lire les zones DNS, bind a besoin de droits en lecture sur la branche ou=dns,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR du LDAP. |
||
| 79 | |||
| 80 | On considère que bind dispose d'une réplique de l'annuaire, complète ou partielle, hébergée sur le même système. |
||
| 81 | => on autorise les connexions anonymes depuis localhost à lire dans ou=dns |
||
| 82 | |||
| 83 | *Modification des ACL dans les attributs de olcDatabase={1}hdb,cn=config* |
||
| 84 | |||
| 85 | On ajoute un attribut _olcAccess_ avec la valeur _to dn.subtree="ou=dns,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" by peername.ip=127.0.0.1 read_. (Signifie: toute connexion depuis 127.0.0.1 peut lire le sous arbre de racine ou=dns) |
||
| 86 | |||
| 87 | Pour permettre la réplication, il est nécessaire de donner également des droits en lecture à ldaprep1: _by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read_. |
||
| 88 | |||
| 89 | Par ailleurs les droits habituels s'appliquent. Aucun accès pour les utilisateurs et les connexions anonymes: _by users none by * none_. |
||
| 90 | |||
| 91 | |||
| 92 | LDIF des nouvelles ACL d'openldap |
||
| 93 | <pre> |
||
| 94 | olcAccess: {0}to attrs=userPassword,shadowLastChange by ssf=128 self write b |
||
| 95 | y anonymous auth by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurb |
||
| 96 | anne,st=RHA,c=FR" read by users none by * none |
||
| 97 | olcAccess: {1}to dn.subtree="ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" b |
||
| 98 | y ssf=128 dn="cn=redmine,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" r |
||
| 99 | ead by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c |
||
| 100 | =FR" read by users none by * none |
||
| 101 | olcAccess: {2}to dn.subtree="ou=dns,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" by |
||
| 102 | peername.ip=127.0.0.1 read by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE, |
||
| 103 | l=Villeurbanne,st=RHA,c=FR" read by users none by * none |
||
| 104 | olcAccess: {3}to dn.base="" by * read |
||
| 105 | olcAccess: {4}to * by ssf=128 self write by ssf=128 dn="cn=ldaprep1,ou=servi |
||
| 106 | ces,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read by users none by * none |
||
| 107 | </pre> |