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> |