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