OpenLDAP is an open-source implementation of the LDAP protocol. An LDAP server basically is a non-relational database which is optimised for accessing, but not writing, data. It is mainly used as an address book (for e.g. email clients) or authentication backend to various services (such as Samba, where it is used to emulate a domain controller, or Linux system authentication, where it replaces /etc/passwd) and basically holds the user data
سلام دوستان . در این پست قصد داریم به معرفی و پیاده سازی ldap بر روی سرور لینوکسی دبیان بپردازیم .
برای این منظور ابتدا باید بسته ی slapd و ldap-utils را نصب کرد . به شکل زیر :
apt-get install slapd ldap-utils
بعد از نصب پنجره ی کانفیگ در همان محیط ترمینال برای شما باز می شود . در قسمت اول باید پسوردی برای administrator در نظر بگیرید .
بعد از وارد کردن پسورد و تمام شدن مراحل فایل زیر را با یک ویرایشگر باز می کنیم :
nano /etc/ldap/ldap.conf
حال به دنبال دو خط زیر گشته :
#BASE dc=example,dc=com #URI ldap://ldap.example.com ldap://ldap-master.example.com:666
و آن ها را متناسب با سرور خود تغییر می دهیم . به عنوان مثال :
BASE dc=oslearn,dc=ir URI ldap://109.100.23.1 ldap://109.100.23.1:666
توجه داشته باشید که # را از ابتدای هر دو خط بر می داریم .
حال دوباره به سراغ کانفیگ slapd می روریم :
dpkg-reconfigure slapd
در مرحله ی اول شما با پیغامی با مضمون Omit OpenLDAP server configuration? مواجه می شوید که آن را NO انتخاب می کنیم .
در مرحله ی بعد باید نام DNS خودتون رو انتخاب کنید . به عنوان مثال ما در این جا OSLearn.ir را انتخاب می کنیم . در ادامه Organization name را متناسب با سازمان خود انتخاب می کنیم که ما در این جا از همان oslearn استفاده خواهیم کرد :
در مرحله ی بعد از شما پسورد حساب administrator را می پرسد که باید مطابق با پسوردی که در مرحله ی قبل انتخاب کردید , این مرحله را رد کنید .
در مرحله ی بعد backend database را HDB انتخاب می کنیم و به مرحله ی بعد می رویم .
در مرحله ی بعد از شما سوالی با مضمون Do you want the database to be removed when slapd is purged می پرسد که آن را No پاسخ می دهیم .
حال از شما سوال می پرسد که Move old database? که پاسخ مثبت یعنی Yes به این سوال داده و به مرحله ی بعد می رویم .
در آخر ldapv2 را با پاسخ NO دادن به سوال Allow LDAPv2 protocol? غیر فعال می کنیم :
تمام ! حال برای تست ldap سرور خودمون به شکل زیر عمل می کنیم :
ldapsearch -x
اگر مراحل را موفقیت آمیز طی کرده باشید باید خروجی ای مشابه به خروجی زیر دریافت کنید :
# extended LDIF # # LDAPv3 # base <dc=oslearn,dc=ir> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # oslearn.ir dn: dc=oslearn,dc=ir objectClass: top objectClass: dcObject objectClass: organization o: oslearn dc: oslearn # admin, oslearn.ir dn: cn=admin,dc=oslearn,dc=ir objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
دقیقا همان طور که برای دیگر سرویس ها و … پنل های مدیریتی وجود دارد , برای این سرویس و پروتکل نیز پنل مدیریتی وجود دارد . اسم این پنل phpldapadmin می باشد که به صورت پیش فرض داخل مخارن وجود دارد . پس برای نصب بر روی سرور به شکل زیر عمل می کنیم :
apt-get install phpldapadmin
به طور پیش فرض این پنل در آدرس /usr/share/phpldapadmin/ قرار میگیرد که برای استفاده از آن با استفاده از مرورگر , لازم است تا یک symbolic link از آن در دایرکتوری var/www/ تهیه کنیم :
ln -s /usr/share/phpldapadmin/ /var/www/phpldapadmin
قبل از اجرای این پنل لازم است تا تغییراتی را در فایل کانفیگ این پنل اعمال کنیم . برای این منظور فایل زیر را با یک ویرایشگر باز می کنیم :
nano /etc/phpldapadmin/config.php
در مرحله ی بعد به دنبال جملات زیر می گردیم :
$servers->setValue('server','name','My LDAP Server'); $servers->setValue('server','host','127.0.0.1'); $servers->setValue('server','base',array('dc=example,dc=com')); $servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
و آن ها را متناسب با سرور خودمون تغییر می دهیم :
$servers->setValue('server','name','OSLearn LDAP Server'); $servers->setValue('server','host','109.100.23.1'); $servers->setValue('server','base',array('dc=oslearn,dc=ir')); $servers->setValue('login','bind_id','cn=admin,dc=oslearn,dc=ir');
بعد از تغییرات بالا لازم است تا وب سرور یک بار راه اندازی مجدد شود . برای این منظور :
/etc/init.d/apache2 restart
حال کافیست آدرس سرور خودمون رو به شکل زیر در مرورگر باز کنیم :
http://109.100.23.1/phpldapadmin
برای ورود به پنل بر روی عبارت login از سمت چپ اقدام کنید سپس Login DN را به شکل زیر پر کنید :
cn=admin,dc=oslearn,dc=ir
توجه داشته باشید که اگر مراحل کانفیگ گفته شده در بالا را درست انجام داده باشید . قسمت Login DN متناسب با سازمان و سرور شما load می شود در غیر این صورت باید دستی این قسمت را پر کنید و در نهایت پسورد admin را وارد کنید .
پس از وارد شدن به محیط پنل , از سمت راست بر روی dc خود کلیک کنید :
در مرحله ی بعد بر روی گزینه ی Create new entry here و سپس بر روی گزینه ی Generic-Organizational Unit کلیک کنید .
حال برای Organisational Unit خود یک نام انتخاب کنید . به عنوان مثال OSServer
Organisational Unit با موفقیت ساخته شد . حال یک گروه تشکیل می دهیم و در نهایت یوزر های خود را درون گروه اضافه می کنیم . برای این منظور از سمت چپ بر روی OU خود که در این جا ou=OSServer است کلیک کرده و در منوی سمت راست بر روی Create a child entry کلیک می کنیم .
در پنجره ی باز شده بر روی Generic: Posix Group کلیک کرده و یک نام برای گروه خود انتخاب می کنیم . به عنوان مثال OSGroup :
گروه با موفقت ساخته شد . حال همین روند را برای cn=OSGroup انجام می دهیم با این تفاوت که این بار یک یوزر می سازیم . به شکل زیر :
مثل مرحله ی قبل بر روی Create a child entry کلیک کرده و سپس گزینه ی Generic: User Account را انتخاب می کنیم . حال اطلاعات خواسته شده برای یوزر را متناسب با سرور و سازمان خودمون مشخص می کنیم . به عنوان مثال :
تمام ! حال برای مشاهده ی کلیه اطلاعات می توان از داخل سرور دستور زیر را اجرا کرد :
ldapsearch -x
اگر مراحل رو به درستی طی کرده باشید خروجی ای مشابه به خروجی زیر باید دریافت کنید :
# extended LDIF # # LDAPv3 # base <dc=oslearn,dc=ir> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # oslearn.ir dn: dc=oslearn,dc=ir objectClass: top objectClass: dcObject objectClass: organization o: oslearn dc: oslearn # admin, oslearn.ir dn: cn=admin,dc=oslearn,dc=ir objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # OSServer, oslearn.ir dn: ou=OSServer,dc=oslearn,dc=ir objectClass: organizationalUnit objectClass: top ou: OSServer # OSGroup, OSServer, oslearn.ir dn: cn=OSGroup,ou=OSServer,dc=oslearn,dc=ir gidNumber: 500 cn: OSGroup objectClass: posixGroup objectClass: top # oslearn, OSGroup, OSServer, oslearn.ir dn: cn=oslearn,cn=OSGroup,ou=OSServer,dc=oslearn,dc=ir cn:: IG9zbGVhcm4= gidNumber: 500 homeDirectory: /home/users/oslearn sn: oslearn loginShell: /bin/sh objectClass: inetOrgPerson objectClass: posixAccount objectClass: top uidNumber: 1000 uid: oslearn # search result search: 2 result: 0 Success # numResponses: 6 # numEntries: 5
هم چنین می توان از منوی سمت چپ پنل نتیجه ی کار هایی که انجام دادیم را مشاهده کرد :
در قسمت بعدی یاد می گیریم که چه طور یک کلاینت لینوکسی را به ldap سرور خودمون متصل کنیم و از یوزر هایی که در ldap سرور وجود دارد در کلاینت ها استفاده کنیم . هم چنین در قسمت سوم به نقاط ضعف این پروتکل از دید امنیت خواهیم پرداخت .
برای پیاده سازی این سرویس و کانفیگ پیشرفته ی آن بر روی شرکت و یا سازمان خود با ایمیل [email protected] در تماس باشید .
موفق و موید باشید
مقدمه : Wiki.ArchLinux
منبع : او اس لرن دات آی آر | http://OSLearn.ir
نویسنده : E2MA3N