Projet

Général

Profil

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>