This shows you the differences between two versions of the page.
|
saisp:labs:02:contents:07 [2014/03/01 22:21] razvan.deaconescu created |
saisp:labs:02:contents:07 [2014/03/03 00:19] (current) razvan.deaconescu [07. Configurare suport SSL/TLS] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ==== 07. Configurare suport SSL/TLS ==== | + | ==== 07. [15p] Configurare suport SSL/TLS ==== |
| - | TODO | + | Pentru a securiza comunicația cu serverul de LDAP avem două opțiuni |
| + | - configurarea suportului SSL, adică LDAPS | ||
| + | - 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:<code> | ||
| + | SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///" | ||
| + | </code> | ||
| + | |||
| + | Apoi repornim serverul de LDAP<code bash> | ||
| + | root@ldap-client:~# service slapd restart | ||
| + | [ ok ] Stopping OpenLDAP: slapd. | ||
| + | [ ok ] Starting OpenLDAP: slapd. | ||
| + | </code> și urmărim dacă acum ascultă conexiuni LDAPS (pe portul ''636''):<code bash> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | Cu toate acestea, dacă încercăm să ne conectăm la server folosind LDAPS obținem eroare:<code bash> | ||
| + | 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) | ||
| + | </code> | ||
| + | |||
| + | 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 [[https://wiki.debian.org/Self-Signed_Certificate#STEP_2|aici]]. Vom rula comanda:<code bash> | ||
| + | root@ldap-client:~# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/slapd-cert.pem -keyout /etc/ssl/private/slapd-key.pem | ||
| + | [...] | ||
| + | </code> | ||
| + | |||
| + | 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 [[https://wiki.debian.org/LDAP/OpenLDAPSetup#Configuring_LDAPS|aici]]. Vom crea un fișier LDIF și în cadrul acestuia vom preciza directivele ''olcTLSCertificateKeyFile'' respectiv ''olcTLSCertificateFile'':<file note 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 | ||
| + | </file> | ||
| + | |||
| + | Încărcăm apoi acest fișier în baza de date de configurare internă a serverului LDAP:<code bash> | ||
| + | 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" | ||
| + | </code> și verificăm informațiile prezente acum în baza de date<code bash> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | Î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<code bash> | ||
| + | root@ldap-client:~# adduser openldap ssl-cert | ||
| + | </code> | ||
| + | și apoi să repornim serviciul:<code bash> | ||
| + | root@ldap-client:~# service slapd restart | ||
| + | [ ok ] Stopping OpenLDAP: slapd. | ||
| + | [ ok ] Starting OpenLDAP: slapd. | ||
| + | </code> | ||
| + | |||
| + | După aceasta vom putea folosi URI de tipul LDAPS pentru a interoga serverul de LDAP local:<code bash> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | 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:<code bash> | ||
| + | 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 | ||
| + | </code> | ||
| + | |||
| + | Acum serverul funcționează corespunzător cu suport SSL (LDAPS) și TLS. | ||