Comptes ldap (4)

Niveau : Star Star Star Star Empty
Résumé :

Suite de la for­mi­da­ble série :

Et après les comp­tes ?

Il est aussi pos­si­ble d’uti­li­ser libnss-ldap pour autre chose que pour les comp­tes uti­li­sa­teurs. La biblio­thè­que NSS étant une biblio­thè­que géné­ri­que de réso­lu­tion de nom, il est pos­si­ble d’uti­li­ser le ldap pour :

  • les grou­pes (atten­tion pas de login pour newrp à tra­vers pam de prévu)
  • les noms de machine
  • et d’autres qui ne pas très inté­res­sants pour l’ins­tant …

Pour cela, rien de plus facile, tout est déjà fait, il suf­fit de modi­fier la ligne cor­res­pon­dante dans /etc/nss­witch.conf et de com­men­cer à peu­pler le LDAP.

Un groupe est défi­nit comme suit :

objectClass: posixGroup
cn: mongroupe
description: goupe a moi
gidNumber: 1000
memberUid: peck
memberUid: amiami

Notez que la des­crip­tion est option­nelle et que les mem­bres sont décrits par uid. Le user­Pass­word est aussi dis­po­ni­ble mais n’est pas uti­li­sa­ble actuel­le­ment pour les grou­pes du sys­tème.

Exem­ple de machine (plus besoin de DNS local ;-) :

objectClass: ipHost
cn: mamachine
ipNetworkNumber: 1.2.3.4

S’adap­ter à l’exis­tant

Il est pos­si­ble que vous ayez à gérer un ser­veur ldap exis­tant avec ses comp­tes et son pro­pre schéma (active direc­tory ?). C’est pour­quoi il existe des options de map­ping dans la con­fi­gu­ra­tion de pam_ldap et nss_ldap.

Ces options sont assez sim­ples, il s’agit de repar­cou­rir votre schéma et pour cha­que entrée néces­saire pour le sys­tème, expli­quer au fichier de con­fi­gu­ra­tion quel est le nom de l’attri­but ou de la classe que vous uti­li­sez sur le ldap. Ceci est à faire une fois pour nss et une fois pour pam.

Les com­man­des sont :

  • nss_map_object­class : chan­ger une classe uti­li­sée par libnss-ldap
  • nss_map_attri­bute : chan­ger un attri­but uti­lisé par libnss-ldap
  • nss_default_attri­bute_value : don­ner une valeur par défaut à un attri­but (pra­ti­que pour le shell par exem­ple)
  • pam_login_attri­bute : change l’attri­but ser­vant à mat­cher le login pen­dant l’authen­ti­fi­ca­tion
  • Il n’est pas pos­si­ble de chan­ger l’attri­but uti­lisé par pam pour le mot de passe (nor­mal c’est le ser­veur ldap qui gère).

Les clas­ses modi­fia­bles (en res­tant dals le domaine uti­li­sa­teur/groupe) sont

  • posixAc­count : uti­li­sa­teur ayant un compte unix
  • sha­do­wAc­count : uti­li­sa­teur ayant un sys­tème avancé de ges­tion de mot de passe
  • posix­Group: groupe unix

Les attri­buts modi­fia­bles sont : uid­Num­ber, gid­Num­ber, gecos, home­Di­rec­tory, login­Shell, sha­dow­Last­Change, sha­dow­Min, sha­dow­Max, sha­dow­War­ning, sha­do­wI­nac­tive, sha­do­wEx­pire, sha­dow­Flag, mem­be­rUid

Plus de détails (et plus de cles­ses) dans la RFC 2307.

La con­fi­gu­ra­tion four­nie avec le paquet donne des exem­ples pour les dif­fé­rents sys­tè­mes exis­tants (aix, micro­soft …)

libnss-ldapd

Main­te­nant vous pour­riez avoir d’autres pro­blè­mes, comme la per­for­mance ou quel­ques hoquets du réseau qui cou­pent des con­nexions. La solu­tion tra­di­tion­nelle pour cela est d’ins­tal­ler nscd qui fera un cache et vous évi­tera ces pro­blè­mes (et peut en créer d’autres puis­que c’est un cache).

Mais il existe une autre solu­tion : libnss-ldapd, notez bien le ‘d’ final. C’est une ver­sion de libnss-ldap réé­crite pour par­ler à un démon qui est le seul à par­ler avec le ser­veur ldap. Ça a l’avan­tage de mutua­li­ser les requê­tes dans une seule con­nexion et donc d’évi­ter pas mal de pro­blè­mes, sur­tout en cas de forte charge.

Petit incon­vé­nient pour les puris­tes, ça ouvre une faille poten­tielle (incon­nue à ce jour) pour un uti­li­sa­teur qui vou­drait deve­nir admi­nis­tra­teur via le ser­veur ldap, puis­que ce n’est plus le noyau qui véri­fie les droits root d’admi­nis­tra­tion mais le démon.

Le démon se con­fi­gure dans /etc/nss-ldapd.conf. La syn­taxe est la même que pour pam_ldap et libnss-ldap, le con­tenu ne doit pas chan­ger.

Le démon est du coup assez impor­tant, il faut véri­fier qu’il est lancé (moni­to­rer toussa …). Il s’appelle nslcd.

Sécu­rité et per­for­man­ces

Si vous avez beau­coup d’uti­li­sa­teurs vous pou­vez vou­loir res­trein­dre les recher­ches.
Si vous avez des uti­li­sa­teurs qui ne doi­vent pas tous avoir accès au sys­tème, vous pou­vez vou­loir res­trein­dre les recher­ches.

C’est pour­quoi nss et pam four­nis­sent des direc­ti­ves pour réduire la taille des recher­che et donc la liste des uti­li­sa­teurs :

  • base : réduit l’accès à tou­tes les com­man­des LDAP à une seule bran­che
  • scope : indi­quer si la recher­che doit tes­ter les sous bran­ches ou non
  • nss_base_<map> : per­met d’indi­quer à ldap de se limi­ter à une requête pour un type donné de réso­lu­tion, map peut valoir passwd, sha­dow ou group (ou hosts, ser­vi­ces, net­works, pro­to­cols, rpc, ethers, net­masks, boot­pa­rams, alia­ses ou net­group). Exem­ple : nss_base_passwd ou=users,dc=linux-atti­tude,dc=fr?sub?uid>1000
  • pam_fil­ter : per­met de modi­fier la par­tir fil­tre pour pam (pas besoin de modi­fier le reste car il n’y a qu’une requête faite par pam). Exem­ple : pam_fil­ter uid>1000
Vus : 371
Publié par Peck : 100