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