Differences

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

Link to this comparison view

saisp:labs:02:contents:09 [2014/03/01 22:23]
razvan.deaconescu created
saisp:labs:02:contents:09 [2014/03/03 17:02] (current)
alexandru.carp
Line 1: Line 1:
-==== 09. [BONUS - 10p] Configurare suplimentară de ACL în LDAP ====+==== 09. [BONUS - 10p] Configurare suplimentară de ACL în serverul de LDAP ====
  
-TODO+Actualizați ACL-urile din serverul de LDAP cu următoarele reguli: 
 +  - Intrarea cu ''​uid=zeratul''​ să poată vizualiza adresele de mail ale tuturor utilizatorilor,​ iar intrarea cu ''​uid=amengsk''​ să le poată și modifica. 
 +  - Doar utilizatorii autentificați (bind) să poată vizualiza orice intrare din baza de date LDAP. 
 + 
 +<note tip> 
 +Informații complete despre ACL-uri în OpenLDAP găsiți aici: http://​www.openldap.org/​doc/​admin24/​access-control.html 
 +</​note>​ 
 + 
 +<​solution -hidden>​ 
 +Pentru prima regulă trebuie să schimbăm regula cu indexul ''​{1}''​ folosind un fișier de forma<​file none acl-mail-hidden-update.ldif>​ 
 +dn: olcDatabase={1}hdb,​cn=config 
 +changetype: modify 
 +delete: olcAccess 
 +olcAccess: {1} 
 +
 +add: olcAccess 
 +olcAccess: {1}to attrs=mail by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write by self write by dn="​uid=amengsk,​ou=Dominion,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write by dn="​uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ read by * none 
 +</​file>​ 
 + 
 +Încărcăm fișierul în baza de date și verificăm actualizarea ACL-urilor:<​code bash> 
 +root@ldap-server:​~#​ ldapadd -Y EXTERNAL -H ldapi:/// -f acl-mail-hidden-update.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"​ 
 + 
 +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 dn="​uid=amengsk,​ou=Dominion,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc 
 + ​=ro"​ write by dn="​uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + "​ read 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>​ 
 + 
 +Apoi verificăm de pe stația client vizibilitatea adreselor de e-mail. ''​uid=raynor''​ va vedea doar adresa proprie:<​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=*'​ mail 
 +dn: uid=artanis,​ou=Khalai,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: uid=amengsk,​ou=Dominion,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: uid=horner,​ou=Raiders,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: uid=raynor,​ou=Raiders,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +mail: raynor@hyperion.terran.mil 
 + 
 +dn: uid=vmengsk,​ou=Dominion,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +</​code>​ pe când ''​uid=zeratul''​ le va putea vedea pe toate:<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -D uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro -w student '​uid=*'​ mail 
 +dn: uid=artanis,​ou=Khalai,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +mail: artanis@khala.protoss.mil 
 + 
 +dn: uid=zeratul,​ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +mail: zeratul@void.protoss.mil 
 + 
 +dn: uid=amengsk,​ou=Dominion,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +mail: mengsk@dominion.terran.mil 
 +[...] 
 +</​code>​ în vreme ce ''​uid=amgensk''​ va putea și modifica adresele de e-mail. 
 + 
 +Pentru a permite doar utilizatorilor autentificați acces la informații,​ va trebui să schimbăm regulile cu indexul ''​{3}''​ și ''​{4}''​ astfel:<​file none acl-need-bind.ldif>​ 
 +dn: olcDatabase={1}hdb,​cn=config 
 +changetype: modify 
 +delete: olcAccess 
 +olcAccess: {3} 
 +
 +add: olcAccess 
 +olcAccess: {3}to dn.base=""​ by users read by * none 
 +
 +delete: olcAccess 
 +olcAccess: {4} 
 +
 +add: olcAccess 
 +olcAccess: {4}to * by self write by dn="​cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro"​ write by users read by * none 
 +</​file>​ 
 + 
 +La fel vom încărca fișierul și vom valida noile ACL-uri. 
 + 
 +Pentru verificare folosim o comandă ''​ldapsearch''​ cu bind anonim și una cu bind ''​uid=raynor'':<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL dn 
 +No such object (32) 
 + 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -D uid=raynor,​ou=Raiders,​o=Terran,​dc=labs,​dc=cs,​dc=pub,​dc=ro -w student dn 
 +dn: dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: cn=admin,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: ou=Khalai,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: ou=Nerazim,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: uid=artanis,​ou=Khalai,​o=Protoss,​dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +[...] 
 +</​code>​ 
 + 
 +În cazul unui bind anonim nu mai avem acces la informație. Dar avem acces cu orice cont autentificat.  
 +</​solution>​
saisp/labs/02/contents/09.1393705414.txt.gz · Last modified: 2014/03/01 22:23 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