Table of Contents

02. [10p] Conectare securizată la serviciu de LDAP

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.

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:

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 

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 ldaps://:

root@ldap-client:~# ldapsearch -x -LLL -H ldaps://ldap-server.local
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

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:

TLS_REQCERT	never

Acum conexiune va funcționa peste LDAPS:

root@ldap-client:~# ldapsearch -x -LLL -H ldaps://ldap-server.local
dn: dc=labs,dc=cs,dc=pub,dc=ro
[...]

Dacă dorim, putem actualiza directiva URI din fișierul /etc/ldap/ldap.conf pentru a realiza implicit conexiuni pe LDAPS:

URI	ldaps://ldap-server.local

Folosirea liniei

TLS_REQCERT     never

î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.

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):

root@ldap-client:~# ldapsearch -x -LLL -Z -H ldap://ldap-server.local
dn: dc=labs,dc=cs,dc=pub,dc=ro

Î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?