![כיצד לאבטח שירותי רשת באמצעות עטיפות TCP בלינוקס](/f/523ee44a505e427731f631bdaa8ce446.png?width=100&height=100)
נתחיל במאמר זה בפירוט כמה 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 להתקין openldap-clients openldap-servers. # yum update && yum להתקין 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. מאז 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. סוג שינוי: לשנות. הוסף: olcRootPW. olcRootPW: סיסמה {SSHA}.
איפה:
בהתייחסו לרקע התיאורטי שסופק קודם לכן, ldaprootpasswd.ldif
הקובץ יוסיף ערך לספריית LDAP. בערך זה, כל שורה מייצגת תכונה: pair value (כאשר 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; לעשות ldapadd -H ldapi: /// -f/etc/openldap/schema/$ def; בוצע.
6. בקש מ- LDAP להשתמש בדומיין שלך במסד הנתונים שלו.
צור אחר LDIF קובץ, אליו נקרא ldapdomain.ldif
, עם התכנים הבאים, החלפת הדומיין שלך (ברכיב התחום dc =) והסיסמה בהתאם:
dn: olcDatabase = {1} צג, cn = config. סוג שינוי: לשנות. להחליף: olcAccess. olcAccess: {0} to * by dn.base = "gidNumber = 0+uidNumber = 0, cn = peercred, cn = external, cn = auth" הנקרא על ידי dn.base = "cn = מנהל,dc = דומיין שלי, dc = com "נקרא על ידי * none dn: olcDatabase = {2} hdb, cn = config. סוג שינוי: לשנות. להחליף: olcSuffix. olcSuffix: dc = דומיין שלי, dc = com dn: olcDatabase = {2} hdb, cn = config. סוג שינוי: לשנות. להחליף: olcRootDN. olcRootDN: cn = מנהל,dc = דומיין שלי, dc = com dn: olcDatabase = {2} hdb, cn = config. סוג שינוי: לשנות. הוסף: olcRootPW. olcRootPW: {SSHA} PASSWORD dn: olcDatabase = {2} hdb, cn = config. סוג שינוי: לשנות. הוסף: olcAccess. olcAccess: {0} to attrs = userPassword, shadowLastChange מאת dn = "cn = Manager,dc = דומיין שלי, dc = com "כתוב על ידי אימות אנונימי על ידי כתיבה עצמית על ידי * אין. olcAccess: {1} ל- dn.base = "" מאת * read. 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. מחלקת אובייקטים: ארגון. o: mydomain com. dc: mydomain dn: cn = מנהל, dc = mydomain, dc = com. objectClass: organisationalRole. cn: מנהל. תיאור: מנהל מדריכים dn: ou = אנשים, dc = mydomain, dc = com. objectClass: organizationalUnit. ou: אנשים dn: ou = קבוצה, dc = mydomain, dc = com. objectClass: organizationalUnit. 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 = מנהל, ou = קבוצה, dc = mydomain, dc = com. objectClass: למעלה. 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: למעלה. objectClass: חשבון. 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 -עדכון.
במאמר זה הסברנו כיצד להגדיר אימות בסיסי מול שרת LDAP. להרחבת התצורה המתוארת במדריך הנוכחי, עיין ב פרק 13 - תצורת LDAP במדריך מנהל מערכת RHEL 7, תוך מתן תשומת לב מיוחדת להגדרות האבטחה באמצעות TLS.
אל תהסס להשאיר כל שאלה שיש לך באמצעות טופס ההערה למטה.