Πώς να εγκαταστήσετε το διακομιστή OpenLDAP για κεντρικό έλεγχο ταυτότητας


Το Ελαφρύ πρωτόκολλο πρόσβασης καταλόγου (LDAP εν συντομία) είναι ένα βιομηχανικό πρότυπο, ελαφρύ, ευρέως χρησιμοποιούμενο σύνολο πρωτοκόλλων για πρόσβαση σε υπηρεσίες καταλόγου. Μια υπηρεσία καταλόγου είναι μια κοινόχρηστη υποδομή πληροφοριών για πρόσβαση, διαχείριση, οργάνωση και ενημέρωση καθημερινών στοιχείων και πόρων δικτύου, όπως χρήστες, ομάδες, συσκευές, διευθύνσεις email, αριθμοί τηλεφώνου, τόμοι και πολλά άλλα αντικείμενα.

Το μοντέλο πληροφοριών LDAP βασίζεται σε καταχωρίσεις. Μια καταχώρηση σε έναν κατάλογο LDAP αντιπροσωπεύει μια ενιαία μονάδα ή μια πληροφορία και προσδιορίζεται μοναδικά από αυτό που ονομάζεται Διακεκριμένο όνομα (DN). Κάθε ένα από τα χαρακτηριστικά της καταχώρισης έχει έναν τύπο και μία ή περισσότερες τιμές.

Ένα χαρακτηριστικό είναι μια πληροφορία που σχετίζεται με μια καταχώρηση. Οι τύποι είναι συνήθως μνημονικές συμβολοσειρές, όπως cn για κοινό όνομα ή mail για διεύθυνση ηλεκτρονικού ταχυδρομείου. Σε κάθε χαρακτηριστικό εκχωρείται μία ή περισσότερες τιμές που αποτελούνται από μια λίστα διαχωρισμένη με διάστημα.

Ακολουθεί μια απεικόνιση του τρόπου με τον οποίο οι πληροφορίες ταξινομούνται στον κατάλογο LDAP.

Σε αυτό το άρθρο, θα δείξουμε πώς να εγκαταστήσετε και να ρυθμίσετε τον διακομιστή OpenLDAP για κεντρικό έλεγχο ταυτότητας στο Ubuntu 16.04/18.04 και στο CentOS 7.

Βήμα 1: Εγκατάσταση διακομιστή LDAP

1. Αρχικά ξεκινήστε εγκαθιστώντας το OpenLDAP, μια υλοποίηση ανοιχτού κώδικα του LDAP και ορισμένων παραδοσιακών βοηθητικών προγραμμάτων διαχείρισης LDAP χρησιμοποιώντας τις ακόλουθες εντολές.

# yum install openldap openldap-servers	    #CentOS 7
$ sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

Στο Ubuntu, κατά την εγκατάσταση του πακέτου, θα σας ζητηθεί να εισαγάγετε τον κωδικό πρόσβασης για την καταχώρηση διαχειριστή στον κατάλογο LDAP, να ορίσετε έναν ασφαλή κωδικό πρόσβασης και να τον επιβεβαιώσετε.

Όταν ολοκληρωθεί η εγκατάσταση, μπορείτε να ξεκινήσετε την υπηρεσία όπως εξηγείται στη συνέχεια.

2. Στο CentOS 7, εκτελέστε τις ακόλουθες εντολές για να ξεκινήσετε τον δαίμονα διακομιστή openldap, ενεργοποιήστε την αυτόματη εκκίνηση κατά την εκκίνηση και ελέγξτε εάν είναι σε λειτουργία (στο Ubuntu η υπηρεσία θα πρέπει να ξεκινήσει αυτόματα στο systemd, μπορείτε απλά να ελέγξετε την κατάστασή της):

$ sudo systemctl start slapd
$ sudo systemctl enable slapd
$ sudo systemctl status slapd

3. Στη συνέχεια, επιτρέψτε αιτήματα στον δαίμονα διακομιστή LDAP μέσω του τείχους προστασίας όπως φαίνεται.

# firewall-cmd --add-service=ldap    #CentOS 7
$ sudo ufw allow ldap                #Ubuntu 16.04/18.04

Βήμα 2: Διαμόρφωση διακομιστή LDAP

Σημείωση: Δεν συνιστάται η μη αυτόματη επεξεργασία της διαμόρφωσης LDAP, πρέπει να προσθέσετε τις διαμορφώσεις σε ένα αρχείο και να χρησιμοποιήσετε το ldapadd ή την εντολή ldapmodify για να τα φορτώσετε στον κατάλογο LDAP όπως φαίνεται παρακάτω.

4. Τώρα δημιουργήστε έναν χρήστη διαχειριστή OpenLDAP και εκχωρήστε έναν κωδικό πρόσβασης για αυτόν τον χρήστη. Στην παρακάτω εντολή, δημιουργείται μια κατακερματισμένη τιμή για τον δεδομένο κωδικό πρόσβασης, σημειώστε τον, θα τη χρησιμοποιήσετε στο αρχείο διαμόρφωσης LDAP.

$ slappasswd

5. Στη συνέχεια, δημιουργήστε ένα αρχείο LDIF (ldaprootpasswd.ldif) το οποίο χρησιμοποιείται για την προσθήκη μιας καταχώρησης στον κατάλογο LDAP.

$ sudo vim ldaprootpasswd.ldif

Προσθέστε τα ακόλουθα περιεχόμενα σε αυτό:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

εξηγώντας τα παραπάνω ζεύγη χαρακτηριστικών-τιμών:

  • olcDatabase: υποδεικνύει ένα συγκεκριμένο όνομα παρουσίας βάσης δεδομένων και μπορεί να βρεθεί συνήθως στο /etc/openldap/slapd.d/cn=config.
  • cn=config: υποδεικνύει καθολικές επιλογές διαμόρφωσης.
  • PASSWORD: είναι η κατακερματισμένη συμβολοσειρά που λαμβάνεται κατά τη δημιουργία του διαχειριστή χρήστη.

6. Στη συνέχεια, προσθέστε την αντίστοιχη καταχώρηση LDAP, προσδιορίζοντας το URI που αναφέρεται στον διακομιστή ldap και στο παραπάνω αρχείο.

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

Βήμα 3: Διαμόρφωση βάσης δεδομένων LDAP

7. Τώρα αντιγράψτε το δείγμα αρχείου διαμόρφωσης βάσης δεδομένων για το slapd στον κατάλογο /var/lib/ldap και ορίστε τα σωστά δικαιώματα στο αρχείο .

$ sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
$ sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
$ sudo systemctl restart slapd

8. Στη συνέχεια, εισαγάγετε ορισμένα βασικά σχήματα LDAP από τον κατάλογο /etc/openldap/schema ως εξής.

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. Τώρα προσθέστε τον τομέα σας στη βάση δεδομένων LDAP και δημιουργήστε ένα αρχείο που ονομάζεται ldapdomain.ldif για τον τομέα σας.

$ sudo vim ldapdomain.ldif 

Προσθέστε το ακόλουθο περιεχόμενο σε αυτό (αντικαταστήστε το παράδειγμα με τον τομέα σας και το PASSWORD με την κατακερματισμένη τιμή που λήφθηκε πριν):

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

10. Στη συνέχεια, προσθέστε την παραπάνω διαμόρφωση στη βάση δεδομένων LDAP με την ακόλουθη εντολή.

$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. Σε αυτό το βήμα, πρέπει να προσθέσουμε ορισμένες καταχωρίσεις στον κατάλογό μας LDAP. Δημιουργήστε ένα άλλο αρχείο με το όνομα baseldapdomain.ldif με το ακόλουθο περιεχόμενο.

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

Αποθηκεύστε το αρχείο και, στη συνέχεια, προσθέστε τις εγγραφές στον κατάλογο LDAP.

$ sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. Το επόμενο βήμα είναι να δημιουργήσετε έναν χρήστη LDAP για παράδειγμα, tecmint και να ορίσετε έναν κωδικό πρόσβασης για αυτόν τον χρήστη ως εξής.

$ sudo useradd tecmint
$ sudo passwd tecmint

13. Στη συνέχεια, δημιουργήστε τους ορισμούς για μια ομάδα LDAP σε ένα αρχείο που ονομάζεται ldapgroup.ldif με το ακόλουθο περιεχόμενο.

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

Στην παραπάνω διαμόρφωση, το gidNumber είναι το GID στο /etc/group για το tecmint και προσθέστε το στο OpenLDAP Ευρετήριο.

$ sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. Στη συνέχεια, δημιουργήστε ένα άλλο αρχείο LDIF που ονομάζεται ldapuser.ldif και προσθέστε τους ορισμούς για το χρήστη tecmint.

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

στη συνέχεια φορτώστε τη διαμόρφωση στον κατάλογο LDAP.

$ ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

Αφού ρυθμίσετε έναν κεντρικό διακομιστή για έλεγχο ταυτότητας, το τελευταίο μέρος είναι να επιτρέψετε στον πελάτη να πραγματοποιήσει έλεγχο ταυτότητας χρησιμοποιώντας LDAP όπως εξηγείται σε αυτόν τον οδηγό:

  1. Τρόπος διαμόρφωσης του προγράμματος-πελάτη LDAP για σύνδεση εξωτερικού ελέγχου ταυτότητας

Για περισσότερες πληροφορίες, ανατρέξτε στην κατάλληλη τεκμηρίωση από τον οδηγό διακομιστή OpenLDAP.

Περίληψη

Το OpenLDAP είναι μια εφαρμογή ανοιχτού κώδικα του LDAP στο Linux. Σε αυτό το άρθρο, δείξαμε πώς να εγκαταστήσετε και να ρυθμίσετε τον διακομιστή OpenLDAP για κεντρικό έλεγχο ταυτότητας, στο Ubuntu 16.04/18.04 και στο CentOS 7. Εάν έχετε κάποια ερώτηση ή σκέψεις να μοιραστείτε, μη διστάσετε να επικοινωνήσετε μαζί μας μέσω της παρακάτω φόρμας σχολίων.