Θα ξεκινήσουμε αυτό το άρθρο περιγράφοντας ορισμένα LDAP βασικά (τι είναι, πού χρησιμοποιείται και γιατί) και δείξτε πώς να ρυθμίσετε έναν διακομιστή LDAP και να διαμορφώσετε έναν πελάτη για έλεγχο ταυτότητας έναντι αυτού χρησιμοποιώντας Red Hat Enterprise Linux 7 συστήματα.
Όπως θα δούμε, υπάρχουν αρκετά άλλα πιθανά σενάρια εφαρμογής, αλλά σε αυτόν τον οδηγό θα εστιάσουμε εξ ολοκλήρου Με βάση το LDAP αυθεντικοποίηση. Επιπλέον, λάβετε υπόψη ότι λόγω της ευρύτητας του θέματος, θα καλύψουμε μόνο τα βασικά του εδώ, αλλά μπορείτε να ανατρέξετε στην τεκμηρίωση που περιγράφεται στη σύνοψη για περισσότερες λεπτομέρειες.
Για τον ίδιο λόγο, θα σημειώσετε ότι αποφάσισα να αφήσω αρκετές αναφορές σε σελίδες ανθρώπων εργαλείων LDAP για λόγους συντομίας, αλλά οι αντίστοιχες εξηγήσεις είναι στη διάθεσή σας απόσταση (άνθρωπος ldapadd, για παράδειγμα).
Τούτου λεχθέντος, ας ξεκινήσουμε.
Το περιβάλλον δοκιμών μας αποτελείται από δύο RHEL 7 κουτιά:
Υπηρέτης: 192.168.0.18. FQDN: rhel7.mydomain.com. Πελάτης: 192.168.0.20. FQDN: ldapclient.mydomain.com.
Εάν θέλετε, μπορείτε να χρησιμοποιήσετε το μηχάνημα που είναι εγκατεστημένο Μέρος 12: Αυτοματοποιήστε τις εγκαταστάσεις RHEL 7 χρησιμοποιώντας το Kickstart ως πελάτη.
LDAP σημαίνει Ελαφρύ πρωτόκολλο πρόσβασης καταλόγου και αποτελείται από ένα σύνολο πρωτοκόλλων που επιτρέπει σε έναν πελάτη να έχει πρόσβαση, μέσω δικτύου, σε κεντρικά αποθηκευμένες πληροφορίες (όπως κατάλογο σύνδεσης κελύφη, απόλυτες διαδρομές προς οικιακούς καταλόγους και άλλες τυπικές πληροφορίες χρήστη του συστήματος, για παράδειγμα) που πρέπει να είναι προσβάσιμες από διαφορετικούς θέσεις ή διαθέσιμες σε μεγάλο αριθμό τελικών χρηστών (ένα άλλο παράδειγμα θα ήταν ένας κατάλογος με διευθύνσεις σπιτιού και αριθμούς τηλεφώνου όλων των εργαζομένων σε ένα Εταιρία).
Η διατήρηση τέτοιων (και περισσότερων) πληροφοριών σε κεντρικό επίπεδο σημαίνει ότι μπορεί να διατηρηθεί πιο εύκολα και να έχει πρόσβαση σε όλους όσοι έχουν λάβει άδειες για τη χρήση τους.
Το παρακάτω διάγραμμα προσφέρει ένα απλοποιημένο διάγραμμα του LDAP, και περιγράφεται παρακάτω με περισσότερες λεπτομέρειες:
Αναλυτικά επεξήγηση του παραπάνω διαγράμματος.
Τούτου λεχθέντος, ας προχωρήσουμε στις εγκαταστάσεις διακομιστή και πελάτη.
Σε RHEL 7, LDAP υλοποιείται από OpenLDAP. Για να εγκαταστήσετε τον διακομιστή και τον πελάτη, χρησιμοποιήστε τις ακόλουθες εντολές, αντίστοιχα:
# yum update && yum install openldap openldap-client διακομιστές openldap. # yum update && yum install openldap openldap-clients nss-pam-ldapd.
Μόλις ολοκληρωθεί η εγκατάσταση, υπάρχουν μερικά πράγματα που εξετάζουμε. Τα ακόλουθα βήματα πρέπει να εκτελούνται μόνο στον διακομιστή, εκτός εάν σημειώνεται ρητά:
1. Συγουρεύομαι SELinux δεν παρεμποδίζει ενεργοποιώντας τα ακόλουθα μπουλάνια επίμονα, τόσο στον διακομιστή όσο και στον πελάτη:
# setsebool -P allow_ypbind = 0 authlogin_nsswitch_use_ldap = 0.
Οπου allow_ypbind απαιτείται για έλεγχο ταυτότητας που βασίζεται σε LDAP, και authlogin_nsswitch_use_ldap μπορεί να χρειαστούν ορισμένες εφαρμογές.
2. Ενεργοποιήστε και ξεκινήστε την υπηρεσία:
# systemctl ενεργοποίηση slapd.service. # systemctl εκκίνηση slapd.service.
Λάβετε υπόψη ότι μπορείτε επίσης να απενεργοποιήσετε, να επανεκκινήσετε ή να διακόψετε την υπηρεσία με systemctl επισης:
# systemctl απενεργοποίηση slapd.service. # systemctl επανεκκίνηση slapd.service. # systemctl stop slapd.service.
3. Αφού το χαστούκι η υπηρεσία εκτελείται ως χρήστης ldap (με τον οποίο μπορείτε να επαληθεύσετε ps -e -o pid, uname, comm | grep slapd), ένας τέτοιος χρήστης θα πρέπει να κατέχει το /var/lib/ldap κατάλογο, προκειμένου ο διακομιστής να μπορεί να τροποποιεί καταχωρήσεις που δημιουργούνται από εργαλεία διαχείρισης που μπορούν να εκτελεστούν μόνο ως root (περισσότερα για αυτό σε ένα λεπτό).
Πριν αλλάξετε την ιδιοκτησία αυτού του καταλόγου αναδρομικά, αντιγράψτε το δείγμα αρχείου διαμόρφωσης βάσης δεδομένων για χαστούκι μέσα σε αυτό:
# cp /usr/share/openldap-servers/DB_CONFIG.example/var/lib/ldap/DB_CONFIG. # chown -R ldap: ldap/var/lib/ldap.
4. Ρύθμιση διαχειριστή OpenLDAP και εκχώρηση κωδικού πρόσβασης:
# slappasswd.
όπως φαίνεται στην επόμενη εικόνα:
και δημιουργήστε ένα LDIF αρχείο (ldaprootpasswd.ldif) με το ακόλουθο περιεχόμενο:
dn: olcDatabase = {0} config, cn = config. changetype: τροποποίηση. προσθήκη: olcRootPW. olcRootPW: {SSHA} Κωδικός πρόσβασης.
όπου:
Αναφερόμενοι στο θεωρητικό υπόβαθρο που δόθηκε νωρίτερα, το ldaprootpasswd.ldif
Το αρχείο θα προσθέσει μια καταχώριση στον κατάλογο LDAP. Σε αυτήν την καταχώριση, κάθε γραμμή αντιπροσωπεύει ένα χαρακτηριστικό: ζεύγος τιμών (όπου dn, changetype, add και olcRootPW είναι τα χαρακτηριστικά και οι συμβολοσειρές στα δεξιά κάθε κόλου είναι οι αντίστοιχες τιμές τους).
Μπορεί να θέλετε να το έχετε υπόψη σας καθώς προχωρούμε περαιτέρω και σημειώστε ότι χρησιμοποιούμε τα ίδια κοινά ονόματα (cn =)
σε όλο το υπόλοιπο αυτού του άρθρου, όπου κάθε βήμα εξαρτάται από το προηγούμενο.
5. Τώρα, προσθέστε την αντίστοιχη καταχώριση LDAP καθορίζοντας το URI αναφέρεται στον διακομιστή ldap, όπου επιτρέπονται μόνο τα πεδία πρωτοκόλλου/κεντρικού υπολογιστή/θύρας.
# ldapadd -H ldapi: /// -f ldaprootpasswd.ldif
Η έξοδος πρέπει να είναι παρόμοια με:
και εισαγάγετε ορισμένους βασικούς ορισμούς LDAP από το /etc/openldap/schema
Ευρετήριο:
# για def στο cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi: /// -f/etc/openldap/schema/$ def? Έγινε.
6. Ζητήστε από το LDAP να χρησιμοποιήσει τον τομέα σας στη βάση δεδομένων του.
Δημιουργήστε ένα άλλο LDIF αρχείο, το οποίο θα καλέσουμε ldapdomain.ldif
, με τα ακόλουθα περιεχόμενα, αντικαθιστώντας τον τομέα σας (στο Domain Component dc =) και τον κωδικό πρόσβασης ανάλογα με την περίπτωση:
dn: olcDatabase = {1} monitor, cn = config. changetype: τροποποίηση. αντικατάσταση: olcAccess. olcAccess: {0} to * by dn.base = "gidNumber = 0+uidNumber = 0, cn = peercred, cn = external, cn = auth" read by dn.base = "cn = Manager,dc = mydomain, dc = com "διαβάστηκε από * none dn: olcDatabase = {2} hdb, cn = config. changetype: τροποποίηση. αντικατάσταση: olcSuffix. olcSuffix: dc = mydomain, dc = com dn: olcDatabase = {2} hdb, cn = config. changetype: τροποποίηση. αντικατάσταση: olcRootDN. olcRootDN: cn = Διαχειριστής,dc = mydomain, dc = com dn: olcDatabase = {2} hdb, cn = config. changetype: τροποποίηση. προσθήκη: olcRootPW. olcRootPW: {SSHA} PASSWORD dn: olcDatabase = {2} hdb, cn = config. changetype: τροποποίηση. προσθήκη: olcAccess. olcAccess: {0} to attrs = userPassword, shadowLastChange by dn = "cn = Manager,dc = mydomain, dc = com "γράψιμο από ανώνυμο έγραψαν από τον εαυτό του έγραψαν από * καμία. olcAccess: {1} στο dn.base = "" κατά * ανάγνωση. olcAccess: {2} έως * από dn = "cn = Manager, dc = mydomain, dc = com" γράψτε με * read.
Στη συνέχεια, φορτώστε το ως εξής:
# ldapmodify -H ldapi: /// -f ldapdomain.ldif.
7. Τώρα ήρθε η ώρα να προσθέσουμε μερικές καταχωρήσεις στον κατάλογο LDAP. Τα χαρακτηριστικά και οι τιμές διαχωρίζονται με άνω και κάτω τελεία (:)
στο παρακάτω αρχείο, το οποίο θα ονομάσουμε baseldapdomain.ldif
:
dn: dc = mydomain, dc = com. objectClass: πάνω. objectClass: dcObject. objectclass: οργάνωση. o: mydomain com. dc: mydomain dn: cn = Manager, dc = mydomain, dc = com. objectClass: οργανωτικός ρόλος. cn: Διαχειριστής. περιγραφή: Διαχειριστής καταλόγου dn: ou = Άτομα, dc = mydomain, dc = com. objectClass: οργανωτική μονάδα. ou: Άνθρωποι dn: ou = Ομάδα, dc = mydomain, dc = com. objectClass: οργανωτική μονάδα. ou: Ομάδα.
Προσθέστε τις καταχωρήσεις στον κατάλογο LDAP:
# ldapadd -x -D cn = Manager, dc = mydomain, dc = com -W -f baseldapdomain.ldif.
8. Δημιουργήστε έναν χρήστη LDAP που ονομάζεται ldapuser (adduser ldapuser), στη συνέχεια, δημιουργήστε τους ορισμούς για μια ομάδα LDAP στο ldapgroup.ldif
.
# adduser ldapuser. # vi ldapgroup.ldif.
Προσθέστε το ακόλουθο περιεχόμενο.
dn: cn = Manager, ou = Group, dc = mydomain, dc = com. objectClass: πάνω. objectClass: posixGroup. gidΑριθμός: 1004.
όπου gidNumber είναι το GID μέσα /etc/group για ldapuser) και φορτώστε το:
# ldapadd -x -W -D "cn = Manager, dc = mydomain, dc = com" -f ldapgroup.ldif.
9. Προσθέστε ένα αρχείο LDIF με τους ορισμούς για το χρήστη ldapuser (ldapuser.ldif
):
dn: uid = ldapuser, ou = People, dc = mydomain, dc = com. objectClass: πάνω. objectClass: λογαριασμός. objectClass: posixAccount. objectClass: shadowAccount. cn: ldapuser. uid: ldapuser. uidΑριθμός: 1004. gidΑριθμός: 1004. homeDirectory: /home /ldapuser. userPassword: {SSHA} fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M. loginShell: /bin /bash. gecos: ldapuser. shadowLastChange: 0. shadowMax: 0. σκιάΠροειδοποίηση: 0.
και φορτώστε το:
# ldapadd -x -D cn = Manager, dc = mydomain, dc = com -W -f ldapuser.ldif.
Ομοίως, μπορείτε να διαγράψετε την καταχώριση χρήστη που μόλις δημιουργήσατε:
# ldapdelete -x -W -D cn = Manager, dc = mydomain, dc = com "uid = ldapuser, ou = People, dc = mydomain, dc = com"
10. Επιτρέψτε την επικοινωνία μέσω του τείχους προστασίας:
# firewall-cmd --add-service = ldap.
11. Τελευταίο, αλλά όχι λιγότερο σημαντικό, επιτρέψτε στον πελάτη να πραγματοποιήσει έλεγχο ταυτότητας χρησιμοποιώντας το LDAP.
Για να μας βοηθήσετε σε αυτό το τελευταίο βήμα, θα χρησιμοποιήσουμε το authconfig βοηθητικό πρόγραμμα (μια διεπαφή για τη διαμόρφωση πόρων ελέγχου ταυτότητας συστήματος).
Χρησιμοποιώντας την ακόλουθη εντολή, δημιουργείται ο αρχικός κατάλογος για τον χρήστη που ζητείται εάν δεν υπάρχει αφού επιτύχει ο έλεγχος ταυτότητας έναντι του διακομιστή LDAP:
# authconfig --enableldap --enableldapauth --ldapserver = rhel7.mydomain.com --ldapbasedn = "dc = mydomain, dc = com" --enablemkhomedir --update.
Σε αυτό το άρθρο έχουμε εξηγήσει πώς να ρυθμίσετε τον βασικό έλεγχο ταυτότητας έναν διακομιστή LDAP. Για περαιτέρω διαμόρφωση της ρύθμισης που περιγράφεται στον παρόντα οδηγό, ανατρέξτε στο Κεφάλαιο 13 - Διαμόρφωση LDAP στον οδηγό διαχειριστή συστήματος RHEL 7, δίνοντας ιδιαίτερη προσοχή στις ρυθμίσεις ασφαλείας χρησιμοποιώντας το TLS.
Μη διστάσετε να αφήσετε τυχόν απορίες σας χρησιμοποιώντας τη φόρμα σχολίων παρακάτω.