07. [15p] Configurare suport SSL/TLS

Pentru a securiza comunicația cu serverul de LDAP avem două opțiuni

  1. configurarea suportului SSL, adică LDAPS
  2. configurarea suportului de TLS

Pentru configurarea suportului de SSL, edităm în fișierul /etc/default/slapd linia care conține directiva SLAPD_SERVICES. Linia trebuie să ajungă la forma:

SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

Apoi repornim serverul de LDAP

root@ldap-client:~# service slapd restart
[ ok ] Stopping OpenLDAP: slapd.
[ ok ] Starting OpenLDAP: slapd.

și urmărim dacă acum ascultă conexiuni LDAPS (pe portul 636):

root@ldap-client:~# netstat -tlpn | grep slapd
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      3620/slapd      
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      3620/slapd      
tcp6       0      0 :::636                  :::*                    LISTEN      3620/slapd      
tcp6       0      0 :::389                  :::*                    LISTEN      3620/slapd 

Cu toate acestea, dacă încercăm să ne conectăm la server folosind LDAPS obținem eroare:

root@ldap-client:~# ldapsearch -x -LLL -H ldaps://localhost -b "dc=tasks,dc=cs,dc=pub,dc=ro" dn
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

Acest lucru este datorat absenței certificatelor SSL. Ca să rezolvăm acest lucru, generăm un certificat SSL self-signed, urmărind indicațiile de aici. Vom rula comanda:

root@ldap-client:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/slapd-cert.pem -keyout /etc/ssl/private/slapd-key.pem
[...]

Introduceți în cadrul comenzii de mai sus opțiunile utile. Acum cheia privată este generată în fișierul /etc/ssl/private/slapd-key.pem, iar cheia publică este generată în fișierul /etc/ssl/certs/slapd-cert.pem.

Acum trebuie să configurăm serverul de LDAP pentru a folosi certificatele. Vom urmări indicațiile de aici. Vom crea un fișier LDIF și în cadrul acestuia vom preciza directivele olcTLSCertificateKeyFile respectiv olcTLSCertificateFile:

slapd-config-tls.ldif
dn: cn=config
changetype: modify
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/slapd-key.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/slapd-cert.pem

Încărcăm apoi acest fișier în baza de date de configurare internă a serverului LDAP:

root@ldap-client:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f slapd-config-tls.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

și verificăm informațiile prezente acum în baza de date

root@ldap-client:~# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -s base -b "cn=config"
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: none
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
olcTLSCertificateKeyFile: /etc/ssl/private/slapd-key.pem
olcTLSCertificateFile: /etc/ssl/certs/slapd-cert.pem

În baza de date internă de configurare sunt prezente acum cheia privată și certificatul SSL utile pentru funcționarea LDAPS și LDAP+TLS. Va trebui să acordăm serverului LDAP acces la cheia privată folosind comanda

root@ldap-client:~# adduser openldap ssl-cert

și apoi să repornim serviciul:

root@ldap-client:~# service slapd restart
[ ok ] Stopping OpenLDAP: slapd.
[ ok ] Starting OpenLDAP: slapd.

După aceasta vom putea folosi URI de tipul LDAPS pentru a interoga serverul de LDAP local:

root@ldap-client:~# ldapsearch -x -LLL -H ldaps://localhost -b dc=tasks,dc=cs,dc=pub,dc=ro dn
dn: dc=tasks,dc=cs,dc=pub,dc=ro
 
dn: cn=admin,dc=tasks,dc=cs,dc=pub,dc=ro

Pe această configurație putem verifica și conexiunea folosind TLS. URI-ul de conectare la server este același ca în cazul nesecurizat, dar folosim opțiunea -Z pentru a activa suportul TLS:

root@ldap-client:~# ldapsearch -x -Z -LLL -H ldap://localhost -b dc=tasks,dc=cs,dc=pub,dc=ro dn
dn: dc=tasks,dc=cs,dc=pub,dc=ro
 
dn: cn=admin,dc=tasks,dc=cs,dc=pub,dc=ro

Acum serverul funcționează corespunzător cu suport SSL (LDAPS) și TLS.

saisp/labs/02/contents/07.txt · Last modified: 2014/03/03 00:19 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