נתחיל מאמר זה על ידי עיקול כמה יסודות של LDAP (מה זה, איפה זה משמש ולמה) ונראה כיצד להגדיר שרת LDAP ולהגדיר לקוח לאמת נגדו באמצעות Red Hat Enterprise Linux 7 systems.

כפי שנראה, ישנם כמה תרחישי יישום אפשריים נוספים, אך במדריך זה נתמקד באופן בלעדי באימות מבוסס LDAP. בנוסף, נא לשים לב כי עקב הרחבות הנושא, נכסה רק את היסודות כאן, אך תוכל להתייחס לתיעוד המצוטט בסיכום לפרטים עמוקים יותר.
מאותו סיבה, תשים לב שהחלטתי להשאיר מאחורי כמה הפניות לדפי man של כלי LDAP למען קיצוניות, אך ההסברים המתאימים נמצאים במרחק קליק (man ldapadd, לדוגמה).
אמרתי זאת, בוא נתחיל.
סביבת הבדיקה שלנו
סביבת הבדיקה שלנו מורכבת משני RHEL 7 תיבות:
Server: 192.168.0.18. FQDN: rhel7.mydomain.com Client: 192.168.0.20. FQDN: ldapclient.mydomain.com
אם ברצונך, תוכל להשתמש במכונה שהותקנה ב- חלק 12: לאפשר התקנות של RHEL 7 באופן אוטומטי באמצעות Kickstart כלקוח.
מהו LDAP?
LDAP עומדת על פרוטוקול גישה לספרייה קלה ומורכבת מסט פרוטוקולים שמאפשרים ללקוח לגשת, דרך רשת, למידע שמאוחסן מרכזית (כמו ספריית קלטת כניסה, נתיבים מוחלטים לספריות בית, ומידע משתמש מערכתי טיפוסי אחר, לדוגמה) שצריך להיות נגיש ממקומות שונים או זמין למספר גדול של משתמשי סוף (דוגמה נוספת היא ספריית כתובות בית ומספרי טלפון של כל העובדים בחברה).
שמירת מידע כזה (ועוד) מרכזית משמע זה יכול להיות נתפס ונגיש יותר על ידי כל אחד שקיבל הרשאות להשתמש בו.
התרשים הבא מציע תרשים פשוט של LDAP, ומתואר להלן בפרטים נוספים:

הסבר על התרשים לעיל בפרטים.
- רשומה בספריית LDAP מייצגת יחידה אחת של מידע ומזוהה באופן ייחודי על ידי מה שנקרא שם מצויין.
- מאפיין הוא חתיכת מידע הקשורה לרשומה (לדוגמה, כתובות, מספרי טלפון ליצירת קשר זמינים, וכתובות דוא"ל).
- לכל מאפיין מוקצים ערכים אחד או יותר המורכבים מרשימה מופרדת ברווחים. ערך שהוא ייחודי לכל רשומה נקרא שם מצויין יחסי.
אחרי שנאמר זאת, בואו נמשיך עם התקנות שרת ולקוח LDAP.
התקנת והגדרת שרת ולקוח LDAP
ב־RHEL 7, LDAP מיושם על ידי OpenLDAP. כדי להתקין את השרת והלקוח, יש להשתמש בפקודות הבאות בהתאמה:
# yum update && yum install openldap openldap-clients openldap-servers # yum update && yum install openldap openldap-clients nss-pam-ldapd
לאחר ההתקנה המוצלחת, ישנם מספר דברים שצריך לבדוק. השלבים הבאים צריך לבצע בשרת בלבד, אלא אם נציין אחרת:
1. ודא ש־SELinux לא מפריע על ידי הפעלת ה־booleans הבאים באופן עמיק, גם בשרת וגם בלקוח:
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0
כאשר allow_ypbind נדרש עבור אימות מבוסס LDAP, ו־authlogin_nsswitch_use_ldap עשוי להיות נדרש על ידי יישומים מסוימים.
2. הפעל והתחל את השירות:
# systemctl enable slapd.service # systemctl start slapd.service
שים לב שתוכל גם לנטרל, לאתחל או לעצור את השירות בעזרת systemctl כמו כן:
# systemctl disable slapd.service # systemctl restart slapd.service # systemctl stop slapd.service
3. מאחר שהשירות slapd רץ כמשתמש ldap (שניתן לוודא באמצעות ps -e -o pid,uname,comm | grep slapd), על המשתמש הזה לבעוד את התיקייה /var/lib/ldap כדי שהשרת יוכל לשנות ערכים שנוצרו על ידי כלים מנהליים שניתן להפעיל רק כשמשתמשים כאדמיניסטרטור (יותר על כך ברגע).
לפני שמשנים את בעלות התיקייה הזו באופן רקורסיבי, העתק את קובץ התצורה של בסיס הנתונים לדוגמה של slapd אליה:
# 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: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD
כאשר:
- PASSWORD הוא המחרוזת המעוברת שהתקבלה קודם.
- cn=config מצביע על אפשרויות תצורה גלובליות.
- olcDatabase מצביע על שם מפעל מסד נתונים ספציפי וניתן למצוא בדרך כלל בתוך /etc/openldap/slapd.d/cn=config.
בהתייחס לרקע התאורטי שסופק קודם, קובץ ldaprootpasswd.ldif
יוסיף רשומה למדרגת LDAP. ברשומה זו, כל שורה מייצגת זוג תכונה:ערך (כאשר dn, changetype, add ו-olcRootPW הם התכונות והמחרוזות מימין לכל צ'לון הם הערכים המתאימים שלהם).
אולי תרצה לשמור על זה בראש כשנמשיך הלאה, ואנא שימו לב שאנו משתמשים באותם שמות משותפים (cn=)
לאורך כל המאמר הנותר, כאשר כל שלב תלוי בקודם.
5. עכשיו, הוסף את הרשומה המתאימה ב-LDAP על ידי ציון ה-URI המצביע על שרת ldap, כאשר רק שדות הפרוטוקול/התקין/הפורט מותרים.
# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif
הפלט צריך להיות דומה ל:

וייבא כמה הגדרות בסיסיות של LDAP מהמדרגה /etc/openldap/schema
:
# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done

6. הפעל את LDAP לשימוש בדומיינך במפעל הנתונים שלו.
צור קובץ LDIF נוסף, שנקרא ldapdomain.ldif
, עם התוכן הבא, החלפת הדומיין שלך (ב-Domain Component dc=) והסיסמה כראוי:
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=mydomain,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=mydomain,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=mydomain,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=mydomain,dc=com" write by * read
# ldapmodify -H ldapi:/// -f ldapdomain.ldif

7. עכשיו זה הזמן להוסיף כמה רשומות לספריית ה־LDAP שלנו. תכונות וערכים מופרדים בנקודתיים (:)
בקובץ הבא, שנקרא baseldapdomain.ldif
:
dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectclass: organization o: mydomain com dc: mydomain dn: cn=Manager,dc=mydomain,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager dn: ou=People,dc=mydomain,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=mydomain,dc=com objectClass: organizationalUnit ou: Group
הוסף את הרשומות לספריית ה־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: top objectClass: posixGroup gidNumber: 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: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldapuser uid: ldapuser uidNumber: 1004 gidNumber: 1004 homeDirectory: /home/ldapuser userPassword: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M loginShell: /bin/bash gecos: ldapuser shadowLastChange: 0 shadowMax: 0 shadowWarning: 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

Summary
במאמר זה הסברנו כיצד להגדיר אימות בסיסי נגד שרת LDAP. כדי להגדיר נסיון נוסף להגדרת המתוארת במדריך הנוכחי, אנא הפנה לפרק 13 – הגדרת LDAP במדריך מנהל המערכת של RHEL 7, והתמקד בהגדרות האבטחה בשימוש ב־TLS.
אל תהסס להשאיר שאלות באמצעות טופס ההערות למטה.
Source:
https://www.tecmint.com/setup-ldap-server-and-configure-client-authentication/