Autorizace sluzeb prostrednictvim LDAP/pam_ldap

Martin Duda duda na lib.cas.cz
Pondělí Září 12 12:42:36 CEST 2011


Dobry den vsem,

prosim o radu s nasledujici situaci (Debian Squeeze). Mam kompletne 
rozchozenou autentizaci prostrednictvim LDAP+pam_ldap+libnss_ldap. 
Uzivatele, servery, skupiny, sitove skupiny mam v LDAP serveru. Mam 
nakonfigurovany PAM stack - uzivatele se mohou korektne prihlasit, mohou 
si zmenit heslo atd. To vse funguje celkem uspokojive. To co potrebuji a 
s cim nemohu uz skoro tyden hnout, je nastaveni jemnejsi granularity 
pristupovych prav k jednotlivym sluzbam. Pro "hrubou" autorizaci 
pouzivam "/etc/security/access.conf". Priklad konfigurace z jednoho serveru:
...
+ : root : LOCAL .domena.cz
+ : @allow_grp_server@@grp_servers : LOCAL .domena.cz
- : ALL : ALL
...

@allow_grp_server - sitova skupina vedena v LDAP serveru (objectClass 
nisNetgroup)
@grp_servers - sitova skupina vedena v LDAP serveru (objectClass 
nisNetgroup)

Toto funguje dobre a spolehlive, nicmene to zdaleka nesplnuje me 
ocekavani. Toto nastaveni jen rika, ze uzivatel, ktery je ve skupine 
@allow_grp_server a hlasi se na server ve skupine @grp_servers k nejake 
sluzbe (napr. ssh), bude moci vyuzit v podstate jakoukoliv sluzbu (ssh, 
ftp atd.) pokud se korektne autentizoval. Jenze ja bych potreboval jeste 
dale rici, ze tento uzivatel muze pouzit napr. jen ssh  a zadnou dalsi 
sluzbu. Nabizi se resit to jiz na urovni prislusne sluzby, ale to mi 
prijde dosti tezkopadne. Mnohem elegantnejsim se jevi moznost predavat 
nejaky atribut/seznam atributu z LDAP serveru, ktery by ridil pristup ke 
sluzbam. Hledal jsem tedy a nasel moznost nastavit v "pam_ldap.conf" 
nasledujici:
...
pam_check_service_attr <yes|no>
...
Aktivaci teto volby se ale jen rika (pokud jsem dobre pochopil 
dokumentaci), ze se pouze kontroluje, zda-li opakovatelny atribut 
"authorizedService" (objectClass authorizedServiceObject z 
ldapns.schema) obsahuje "neco" a to neco muze byt treba retezec "ssh", 
"ftp" apod. Nicmene nikde jsem po tydnu intenzivniho hledani pomoci 
googlu a lezenim v man strankach neprisel na to, jak obsah tohoto 
atributu dale zpracovat v procesu autorizace - tedy urcit, zda-li 
uzivatel, ktery splnil vyse uvedena kriteria, muze pouzit treba jen a 
pouze ssh. Protoze v tom lezim uz dlouho, mam pocit, ze se tocim v kruhu 
a potrebuji "nakopnout" nejakym napadem.

Takze otazka nakonec. Ma nekdo z pritomnych zkusenost s uvedenou 
situaci? Pokud ano, jak to resite?

Nejake odkazy, ktere jsem posbiral behem hledani (treba se budou nekomu 
hodit):

http://www.rjsystems.nl/en/2100-pam-debian.php
http://directory.fedoraproject.org/wiki/Howto:Netgroups#System_Access_Control_using_LDAP_backed_NIS_Netgroups
http://wiki.debian.org/LDAP/PAM
http://www.openldap.org/lists/openldap-technical/200905/msg00124.html
http://sospreskoly.org/openldap-server
http://www.abclinuxu.cz/serialy/centralni-sprava-uctu-a-single-sign-on
http://chaos.untouchable.net/index.php/HOWTO_setup_ldap_authentication
http://www.rjsystems.nl/en/2100-d6-openldap-client.php
http://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/pamnss.html
http://www.redhat.com/f/pdf/rhas/NetgroupWhitepaper.pdf
https://help.ubuntu.com/community/LDAPClientAuthentication
http://www.openldap.org/lists/openldap-technical/200905/msg00091.html
http://linux.die.net/man/5/pam_ldap

Predem diky za napady, rady, odkazy apod.

Duda

P.S.: Active Directory ani NDS nemam a nehodlam pouzivat.






Další informace o konferenci Linux