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