Project

General

Profile

Actions

Intégration des comptes LDAP au système

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

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.

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.

libnss-ldapd et libpam-ldapd

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

apt-get install libnss-ldapd libpam-ldapd nscd
Debconf:
  • ldap://127.0.0.1
  • base de recherche ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR
  • gérer passwd, group et shadow

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.
=> autoriser la lecture de shadowLastChange

Tests: les commandes suivantes doivent retourner les données du ldap et des bases d'authentification locales.

getent passwd
getent shadow
getent group

FIXME: getent shadow ne retourne pas les données du ldap, mais c'est peut être normal.

Création automatique des home

Modifier manuellement /etc/pam.d/common-session pour ajouter la ligne suivante.

session     required      pam_mkhomedir.so skel=/etc/skel umask=0022

Les home des users seront maintenant créés automatiquement au premier login.

Note: lors des mises à jour, accepter l'installation des versions standard des fichiers de pam.d, et ajouter cette ligne à la main.

Restriction d'accès par hôte: pam_authz_search

Ajouter la ligne suivante dans /etc/nslcd.conf.

pam_authz_search (&(objectClass=posixGroup)(memberUid=$username)(|(cn=login$hostname)(cn=sudo$hostname)(cn=loginall)(cn=sudoall)))

service nslcd restart

Pour pouvoir se logger, il faut appartenir au groupe login[HOSTNAME], au groupe loginall, au groupe sudo[HOSTNAME] ou au groupe sudoall.

Sudoers dans des groupes LDAP

Utiliser visudo pour ajouter des groupes ldap aux sudoers:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
%sudorigel ALL=(ALL:ALL) ALL
%sudoall ALL=(ALL:ALL) ALL

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.

Exemples d'utilisateurs et de groupes

ldif:

version: 1

dn: cn=papoudret,ou=users,ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
objectClass: posixAccount
objectClass: ldapPublicKey
cn: papoudret
gidNumber: 2000
homeDirectory: /home/papoudret
sn: Poudret
uid: papoudret
uidNumber: 2000
displayName: Pierre-Arnaud Poudret
gecos: papoudret
givenName: Pierre-Arnaud
loginShell: /bin/bash
mail: papoudret@illyse.org
sshPublicKey:: c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBQkl3QUFBUUVBMEt5bWxqSUFqc
 Eh6Vk5mU2tOTlZNSEc5OStKenRNeDBTZm0vUlBKTm1pUys5ZXJDdnpYK216Uk96THdUMzFZRzZP
 MTEwOVhhazBVTGdVbEZnSWlld2czOXJuamxIa0Z3eFB6eVJBMk03TXlxOTNRcW9FUXRud3VxaEt
 oN2RPbEFrWmtiTDg5M2RhSFF4aTJodDkxNVpLeTFvUmgyM2ltRDcrS1RKZnFUM2IzQXlhOFVQc2
 9HRXU0ckpkbEVmUjBHZnVxWDNBei9pNDdRM0NyYnlrUkVYY3dOR25VZ3BPdU01L3NuME9taGYzT
 G0xZ3c1OHBYSnNWVWg1QUc3UjBBU1ljd0JVWTBqLzY2b0RSZ3hBbXRkSWR0OFBlL2JFWGp6dHdH
 bm4xWFZTWHdwSDY5NlBWWHRGRHExSmFlcEZHanBGMTJrclZJcTBjVXVFM3ZOVWFPQStRPT0gc2F
 tbG93cnlAdmFsaXM=
userPassword:: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx

Updated by Pierre-Arnaud Poudret over 7 years ago · 1 revisions