Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:02:contents:08 [2014/03/01 22:22]
razvan.deaconescu created
saisp:labs:02:contents:08 [2014/03/03 14:06] (current)
alexandru.carp
Line 1: Line 1:
-==== Configurare ACL în LDAP ====+==== 08. [10p] Configurare ACL în serverul de LDAP ====
  
-TODO+Pentru a securiza operațiile către serverul de LDAP acesta folosește liste de control al accesului (ACL -- //Access Control Lists//). Acestea oferă administratorului posibilitatea de a alege ce operații pot fi realizate de un utilizator. 
 + 
 +În cadrul serverului OpenLDAP configurarea ACL-urilor se realizează în cadrul bazei de date ''​olcDatabase={1}hdb,​cn=config''​. Pentru a observa ACL-urile configurate implicit folosim, pe stația server, comanda<​code bash> 
 +root@ldap-server:​~#​ ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "​olcDatabase={1}hdb,​cn=config" ​ olcAccess 
 +SASL/​EXTERNAL authentication started 
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth 
 +SASL SSF: 0 
 +dn: olcDatabase={1}hdb,​cn=config 
 +olcAccess: {0}to attrs=userPassword,​shadowLastChange by self write by anonymous auth by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write by * none 
 +olcAccess: {1}to attrs=loginShell,​gecos by dn="​cn=admin,​dc=example,​dc=com"​ write by self write by * read 
 +olcAccess: {2}to dn.base=""​ by * read 
 +olcAccess: {3}to * by self write by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write by * read 
 +</​code>​ 
 + 
 +Fiecare intrare este prefixată de un index care înseamnă ordinea în care sunt prelucrate: ''​{0}'',​ ''​{1}'',​ ''​{2}'',​ ''​{3}''​. Cele patru reguli au următorul efect: 
 +  - Atributele ''​userPassword'',​ respectiv ''​shadowLastChange''​ pot fi 
 +    * scrise de deținător (''​self''​) 
 +    * folosite pentru autentificare de anonim 
 +    * scrise de admin 
 +    * fără drepturi pentru ceilați 
 +  - Atributul ''​loginShell''​ poate fi modificat de admin și de deținător și citit de oricine. 
 +  - Oricine poate citi intrările din întreaga bază de date LDAP. 
 +  - Celelalte atribute pot fi modificate de deținător și de admin și pot fi citite de oricine. 
 + 
 +Dorim să ascundem adresa de e-mail a oricărui utilizator și să facem să fie modificată chiar de acesta. Pentru aceasta va trebui să adăugăm o regulă de forma:<​code>​ 
 +access to mail 
 +   by self write 
 +   by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write 
 +   by * none 
 +</​code>​ 
 + 
 +Pentru aceasta vom crea un fișier LDIF care să conțină informațiile de mai jos:<​file none acl-mail-hidden.ldif>​ 
 +dn: olcDatabase={1}hdb,​cn=config 
 +changetype: modify 
 +add: olcAccess 
 +olcAccess: {1}to attrs=mail by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write by self write by * none 
 +</​file>​ 
 + 
 +Apoi încărcăm fișierul de configurare LDIF în LDAP:<​code bash> 
 +root@ldap-server:​~#​ ldapadd -Y EXTERNAL -H ldapi:/// -f acl-mail-hidden.ldif  
 +SASL/​EXTERNAL authentication started 
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth 
 +SASL SSF: 0 
 +modifying entry "​olcDatabase={1}hdb,​cn=config"​ 
 +</​code>​ și validăm noua configurație:<​code bash> 
 +root@ldap-server:​~#​ ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "​olcDatabase={1}hdb,​cn=config" ​ olcAccess 
 +SASL/​EXTERNAL authentication started 
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth 
 +SASL SSF: 0 
 +dn: olcDatabase={1}hdb,​cn=config 
 +olcAccess: {0}to attrs=userPassword,​shadowLastChange by self write by anonymou 
 + s auth by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write by * none 
 +olcAccess: {1}to attrs=mail by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write  
 + by self write by * none 
 +olcAccess: {2}to attrs=loginShell,​gecos by dn="​cn=admin,​dc=example,​dc=com"​ wri 
 + te by self write by * read 
 +olcAccess: {3}to dn.base=""​ by * read 
 +olcAccess: {4}to * by self write by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ w 
 + rite by * read 
 +</​code>​ 
 + 
 +Am inserat astfel o nouă regulă pe poziția ''​{1}'',​ celelalte reguli deplasându-se o poziție în jos. 
 + 
 +De pe stația client validăm regula: interogăm intrarea aferentă ''​uid=zeratul''​ făcând bind cu ''​uid=raynor''​ și cu ''​uid=zeratul''​. 
 + 
 +<note important>​ 
 +Parola utilizatorului ''​zeratul''​ trebuie setata folosind ''​ldappasswd''​. 
 + 
 +Revedeti Laboratorul 1: http://​ocw.cs.pub.ro/​courses/​saisp/​labs/​01/​contents/​06 
 +</​note>​ 
 + 
 +<code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -D uid=raynor,​ou=Raiders,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro -w student uid=zeratul mail 
 +dn: uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -D uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro -w student uid=zeratul mail 
 +dn: uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +mail: zeratul@void.protoss.mil 
 +</​code>​ 
 + 
 +Observăm că dacă facem bind cu ''​uid=raynor''​ nu avem acces la adresa de e-mail a ''​uid=zeratul'',​ dar avem la bind cu ''​uid=zeratul'';​ o intrare are acces la propria adresă de e-mail.
saisp/labs/02/contents/08.1393705355.txt.gz · Last modified: 2014/03/01 22:22 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0