Ldap-pam-nss » Historique » Version 1
Pierre-Arnaud Poudret, 05/06/2013 15:52
| 1 | 1 | Pierre-Arnaud Poudret | h1. Intégration des comptes LDAP au système |
|---|---|---|---|
| 2 | |||
| 3 | {{>toc}} |
||
| 4 | |||
| 5 | * provisionnement de passwd, shadow et group depuis le LDAP: installation des nouveaux paquets libpam-ldapd et libnss-ldapd. Les comptes du LDAP viennent s'ajouter aux comptes locaux, avec une plage d'uid/gid à réserver (Note: j'ai pris 2000-2999). Les hachages de shadow ne sont pas exposés. Leur vérification de fait par un bind ldap. |
||
| 6 | |||
| 7 | * restriction d'accès par hôte: pour chaque machine, un groupe (loginrigel, loginkim, etc) contient les users autorisés à se connecter. Un groupe loginall permet de se connecter à toutes les machines. |
||
| 8 | |||
| 9 | * sudoers: pour chaque machine, un groupe (sudorigel, sudokim, etc) contient les users autorisés à utiliser sudo. Un groupe sudoall permet d'utiliser sudo sur toutes les machines. |
||
| 10 | |||
| 11 | |||
| 12 | Les mécanismes d'authentification classiques sont préservés: en cas de défaillance du LDAP, il reste toujours possible de se logger avec un compte local. |
||
| 13 | |||
| 14 | Ces notes concernent debian wheezy et ont été prises dans le cas d'une installation sur un système hébergeant une copie locale du ldap (=> ldap://127.0.0.1/). Si ce n'est pas le cas, il faut ajouter authentification et chiffrement (avec starttls) entre la machine et le serveur ldap. |
||
| 15 | |||
| 16 | h1. libnss-ldapd et libpam-ldapd |
||
| 17 | |||
| 18 | Ces paquets remplacent les anciens libnss-ldap et libpam-ldap, et sont plus faciles à configurer (pas - ou presque - de configuration manuelle des fichiers de pam.d). |
||
| 19 | |||
| 20 | <pre> |
||
| 21 | apt-get install libnss-ldapd libpam-ldapd nscd |
||
| 22 | </pre> |
||
| 23 | |||
| 24 | |||
| 25 | |||
| 26 | Debconf: |
||
| 27 | * ldap://127.0.0.1 |
||
| 28 | * base de recherche ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR |
||
| 29 | * gérer passwd, group et shadow |
||
| 30 | |||
| 31 | Note sur les ACL LDAP: les installations par défaut d'openldap restreignent l'accès à l'attribut shadowLastChange. Le système voit alors tous les comptes comme expirés. |
||
| 32 | => autoriser la lecture de shadowLastChange |
||
| 33 | |||
| 34 | +Tests+: les commandes suivantes doivent retourner les données du ldap et des bases d'authentification locales. |
||
| 35 | <pre> |
||
| 36 | getent passwd |
||
| 37 | getent shadow |
||
| 38 | getent group |
||
| 39 | </pre> |
||
| 40 | FIXME: getent shadow ne retourne pas les données du ldap, mais c'est peut être normal. |
||
| 41 | |||
| 42 | |||
| 43 | h1. Création automatique des home |
||
| 44 | |||
| 45 | Modifier manuellement /etc/pam.d/common-session pour ajouter la ligne suivante. |
||
| 46 | <pre> |
||
| 47 | session required pam_mkhomedir.so skel=/etc/skel umask=0022 |
||
| 48 | </pre> |
||
| 49 | |||
| 50 | Les home des users seront maintenant créés automatiquement au premier login. |
||
| 51 | |||
| 52 | Note: lors des mises à jour, accepter l'installation des versions standard des fichiers de pam.d, et ajouter cette ligne à la main. |
||
| 53 | |||
| 54 | h1. Restriction d'accès par hôte: pam_authz_search |
||
| 55 | |||
| 56 | Ajouter la ligne suivante dans /etc/nslcd.conf. |
||
| 57 | <pre> |
||
| 58 | pam_authz_search (&(objectClass=posixGroup)(memberUid=$username)(|(cn=login$hostname)(cn=sudo$hostname)(cn=loginall)(cn=sudoall))) |
||
| 59 | </pre> |
||
| 60 | |||
| 61 | <pre> |
||
| 62 | service nslcd restart |
||
| 63 | </pre> |
||
| 64 | |||
| 65 | Pour pouvoir se logger, il faut appartenir au groupe login[HOSTNAME], au groupe loginall, au groupe sudo[HOSTNAME] ou au groupe sudoall. |
||
| 66 | |||
| 67 | h1. Sudoers dans des groupes LDAP |
||
| 68 | |||
| 69 | Utiliser visudo pour ajouter des groupes ldap aux sudoers: |
||
| 70 | |||
| 71 | <pre> |
||
| 72 | # Allow members of group sudo to execute any command |
||
| 73 | %sudo ALL=(ALL:ALL) ALL |
||
| 74 | %sudorigel ALL=(ALL:ALL) ALL |
||
| 75 | %sudoall ALL=(ALL:ALL) ALL |
||
| 76 | </pre> |
||
| 77 | |||
| 78 | Ici, _sudorigel_ et _sudoall_ sont des groupes définis sur le LDAP. Une fois l'intégration nss/pam/ldap effectuée, ça ne fait aucune différence pour sudo. |
||
| 79 | |||
| 80 | |||
| 81 | h1. Exemples d'utilisateurs et de groupes |
||
| 82 | |||
| 83 | ldif: |
||
| 84 | <pre> |
||
| 85 | version: 1 |
||
| 86 | |||
| 87 | dn: cn=papoudret,ou=users,ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR |
||
| 88 | objectClass: inetOrgPerson |
||
| 89 | objectClass: organizationalPerson |
||
| 90 | objectClass: person |
||
| 91 | objectClass: top |
||
| 92 | objectClass: posixAccount |
||
| 93 | objectClass: ldapPublicKey |
||
| 94 | cn: papoudret |
||
| 95 | gidNumber: 2000 |
||
| 96 | homeDirectory: /home/papoudret |
||
| 97 | sn: Poudret |
||
| 98 | uid: papoudret |
||
| 99 | uidNumber: 2000 |
||
| 100 | displayName: Pierre-Arnaud Poudret |
||
| 101 | gecos: papoudret |
||
| 102 | givenName: Pierre-Arnaud |
||
| 103 | loginShell: /bin/bash |
||
| 104 | mail: papoudret@illyse.org |
||
| 105 | sshPublicKey:: c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBQkl3QUFBUUVBMEt5bWxqSUFqc |
||
| 106 | Eh6Vk5mU2tOTlZNSEc5OStKenRNeDBTZm0vUlBKTm1pUys5ZXJDdnpYK216Uk96THdUMzFZRzZP |
||
| 107 | MTEwOVhhazBVTGdVbEZnSWlld2czOXJuamxIa0Z3eFB6eVJBMk03TXlxOTNRcW9FUXRud3VxaEt |
||
| 108 | oN2RPbEFrWmtiTDg5M2RhSFF4aTJodDkxNVpLeTFvUmgyM2ltRDcrS1RKZnFUM2IzQXlhOFVQc2 |
||
| 109 | 9HRXU0ckpkbEVmUjBHZnVxWDNBei9pNDdRM0NyYnlrUkVYY3dOR25VZ3BPdU01L3NuME9taGYzT |
||
| 110 | G0xZ3c1OHBYSnNWVWg1QUc3UjBBU1ljd0JVWTBqLzY2b0RSZ3hBbXRkSWR0OFBlL2JFWGp6dHdH |
||
| 111 | bm4xWFZTWHdwSDY5NlBWWHRGRHExSmFlcEZHanBGMTJrclZJcTBjVXVFM3ZOVWFPQStRPT0gc2F |
||
| 112 | tbG93cnlAdmFsaXM= |
||
| 113 | userPassword:: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx |
||
| 114 | </pre> |