Differences

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

Link to this comparison view

saisp:labs:01:contents:02 [2014/01/24 18:48]
razvan.deaconescu [02. Lorem ipsum]
saisp:labs:01:contents:02 [2014/02/16 19:42] (current)
razvan.deaconescu [02. [10p] Conectare securizată la serviciu de LDAP]
Line 1: Line 1:
-==== 02. Conectare securizată la serviciu de LDAP ====+==== 02. [10p] Conectare securizată la serviciu de LDAP ====
  
-  * Conectare peste URL peste LDAPS +Informațiile accesibile prin LDAP sunt, în general, sensibile și este necesară securizarea comunicației. Pentru aceasta serverul LDAP poate fi configurat să folosească ​LDAPS (LDAP cu suport SSL) sau să folosească TLS. 
-  Conectare ​cu URL peste LDAP+TLS+ 
 +=== Folosire LDAPS (LDAP+SSL) === 
 + 
 +În cazul în care folosește LDAPS, serverul LDAP ascultă conexiuni pe portul ''​636''​ (portul aferent LDAPS), lucru care se poate observa cu ajutorul comenzii ''​netstat'':<​code bash> 
 +root@ldap-server:​~#​ netstat -tlpn | grep slapd 
 +tcp        0      0 0.0.0.0:​636 ​            ​0.0.0.0:​              LISTEN ​     1902/​slapd ​      
 +tcp        0      0 0.0.0.0:​389 ​            ​0.0.0.0:​* ​              ​LISTEN ​     1902/​slapd ​      
 +tcp6       ​0 ​     0 :::​636 ​                 :::*                    LISTEN ​     1902/​slapd ​      
 +tcp6       ​0 ​     0 :::​389 ​                 :::*                    LISTEN ​     1902/slapd  
 +</​code>​ 
 +Serverul LDAP ascultă, așadar, conexiuni nesecurizate pe portul ''​389''​ și conexiuni securizate (LDAPS) pe portul ''​636''​. Serverul LDAP poartă numele ''​slapd''​ (//​Standalone LDAP Daemon//​). 
 + 
 +De pe client dacă vrem să folosim conexiune securizată,​ vom folosi URI-ul începând ​cu șirul ''<​nowiki>​ldaps://</​nowiki>'':<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -H ldaps://​ldap-server.local 
 +ldap_sasl_bind(SIMPLE):​ Can't contact LDAP server (-1) 
 +</​code>​ 
 + 
 +Obținem o eroare de conectare. În cazul conexiunilor LDAPS aceasta sa datorează configurării necorespunzătoare a certificatelor. Întrucât pe serverul LDAP(S) am configurat un certificat self-signed,​ vom ignora verificarea certificatelor. Pentru aceasta folosim un editor pentru a adăuga linia de mai jos la sfârșitul fișierului ''/​etc/​ldap/​ldap.conf''​ de pe stația client:<​code bash> 
 +TLS_REQCERT never 
 +</​code>​ 
 + 
 +Acum conexiune va funcționa ​peste LDAPS:<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -H ldaps://​ldap-server.local 
 +dn: dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +[...] 
 +</​code>​ 
 + 
 +Dacă dorim, putem actualiza directiva ''​URI''​ din fișierul ''/​etc/​ldap/​ldap.conf''​ pentru a realiza implicit conexiuni pe LDAPS:<​code bash> 
 +URI ldaps://​ldap-server.local 
 +</​code>​ 
 + 
 +<note important>​ 
 +Folosirea liniei<​code>​ 
 +TLS_REQCERT ​    ​never 
 +</​code>​ în fișierul ''/​etc/​ldap/​ldap.conf''​ permite conexiunea LDAPS ignorând validitatea certificatului serverului. Este o configurare rapidă, dar cu probleme de securitate. Pentru servere de producție este nevoie de verificarea validității certificatului folosind directive precum ''​TLS_CACERT''​ sau ''​TLS_CACERTDIR''​. 
 +</​note>​ 
 + 
 +=== Folosire ​LDAP cu TLS === 
 + 
 +Un alt mod de a securiza comunicația LDAP este prin intermediul suportului TLS. Suportul TLS nu necesită ca serverul să asculte conexiuni pe alt port. Se folosește inițial protocolul LDAP în clar și apoi se declanșează handshake-ul TLS în urma căruia comunicația va fi securizată. Pentru a realiza o conexiune securizată cu suport TLS, folosim opțiunea ''​-Z''​ a comenzii ''​ldapsearch'',​ la fel ca mai jos (pe stația client):<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -Z -H ldap://​ldap-server.local 
 +dn: dc=labs,​dc=cs,​dc=pub,​dc=ro 
 +</​code>​ 
 + 
 +În general, serverul LDAP va fi configurat în așa fel încât să impună folosirea TLS pentru operațiile sensibile. În această situația absența opțiunii ''​-Z''​ va conduce la afișarea unui mesaj de eroare pe client. 
 + 
 +=== Exercițiu: Interogare swarm.cs.pub.ro === 
 + 
 +Pe serverul ''​swarm.cs.pub.ro''​ rulează un server LDAP. Punctul de cautare în arbore este ''​dc=swarm,​dc=cs,​dc=pub,​dc=ro''​. Interogați serverul LDAP folosind LDAP, LDAPS și LDAP cu suport SSL. Ce moduri de interogare sunt disponibile pe server? 
 + 
 +<​solution -hidden>​ 
 +Rulăm comanda ''​ldapsearch''​ cu URI de LDAP, URI de LDAPS și suport TLS:<​code bash> 
 +razvan@einherjar:​~/​vm/​kvm$ ldapsearch -x -LLL -H ldap://​swarm.cs.pub.ro -b "​dc=swarm,​dc=cs,​dc=pub,​dc=ro"​ 
 +ldap_sasl_bind(SIMPLE):​ Can't contact LDAP server (-1) 
 + 
 +razvan@einherjar:​~/​vm/​kvm$ ldapsearch -x -LLL -H ldaps://​swarm.cs.pub.ro -b "​dc=swarm,​dc=cs,​dc=pub,​dc=ro"​ 
 +[...] 
 + 
 +razvan@einherjar:​~/​vm/​kvm$ ldapsearch -x -LLL -Z -H ldap://​swarm.cs.pub.ro -b "​dc=swarm,​dc=cs,​dc=pub,​dc=ro"​ 
 +ldap_start_tls:​ Can't contact LDAP server (-1) 
 +ldap_sasl_bind(SIMPLE):​ Can't contact LDAP server (-1) 
 +</​code>​ 
 + 
 +Observăm că doar forma LDAPS permite interogarea serverului LDAP de pe ''​swarm.cs.pub.ro''​. 
 +</​solution>​
saisp/labs/01/contents/02.1390582123.txt.gz · Last modified: 2014/01/24 18:48 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