منبع اصلی نوشتار زیر در این لینک قرار دارد

نصب و پیاده سازی ldap بر روی سرور لینوکسی

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 در نظر بگیرید .

OSLearn.ir_001

بعد از وارد کردن پسورد و تمام شدن مراحل فایل زیر را با یک ویرایشگر باز می کنیم :

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 استفاده خواهیم کرد :

OSLearn.ir_002در مرحله ی بعد از شما پسورد حساب administrator را می پرسد که باید مطابق با پسوردی که در مرحله ی قبل انتخاب کردید , این مرحله را رد کنید .

در مرحله ی بعد backend database را HDB انتخاب می کنیم و به مرحله ی بعد می رویم .

OSLearn.ir_003

در مرحله ی بعد از شما سوالی با مضمون Do you want the database to be removed when slapd is purged می پرسد که آن را No پاسخ می دهیم .

حال از شما سوال می پرسد که Move old database? که پاسخ مثبت یعنی Yes به این سوال داده و به مرحله ی بعد می رویم .

در آخر ldapv2 را با پاسخ NO دادن به سوال Allow LDAPv2 protocol? غیر فعال می کنیم :

OSLearn.ir_004

تمام ! حال برای تست 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

OSLearn.ir_05

برای ورود به پنل بر روی عبارت login از سمت چپ اقدام کنید سپس Login DN را به شکل زیر پر کنید :

cn=admin,dc=oslearn,dc=ir

توجه داشته باشید که اگر مراحل کانفیگ گفته شده در بالا را درست انجام داده باشید . قسمت Login DN متناسب با سازمان و سرور شما load می شود در غیر این صورت باید دستی این قسمت را پر کنید و در نهایت پسورد admin را وارد کنید .

OSLearn.ir_006

پس از وارد شدن به محیط پنل , از سمت راست بر روی dc خود کلیک کنید :

OSLearn.ir_007

در مرحله ی بعد بر روی گزینه ی Create new entry here و سپس بر روی گزینه ی Generic-Organizational Unit کلیک کنید .

حال برای Organisational Unit خود یک نام انتخاب کنید . به عنوان مثال OSServer

OSLearn.ir_008

Organisational Unit با موفقیت ساخته شد . حال یک گروه تشکیل می دهیم و در نهایت یوزر های خود را درون گروه اضافه می کنیم . برای این منظور از سمت چپ بر روی OU خود که در این جا ou=OSServer است کلیک کرده و در منوی سمت راست بر روی Create a child entry کلیک می کنیم .

OSLearn.ir_009

در پنجره ی باز شده بر روی Generic: Posix Group کلیک کرده و یک نام برای گروه خود انتخاب می کنیم . به عنوان مثال OSGroup :

OSLearn.ir_010

گروه با موفقت ساخته شد . حال همین روند را برای cn=OSGroup انجام می دهیم با این تفاوت که این بار یک یوزر می سازیم . به شکل زیر :

OSLearn.ir_011

مثل مرحله ی قبل بر روی Create a child entry کلیک کرده و سپس گزینه ی Generic: User Account را انتخاب می کنیم . حال اطلاعات خواسته شده برای یوزر را متناسب با سرور و سازمان خودمون مشخص می کنیم . به عنوان مثال :

OSLearn.ir_012

تمام ! حال برای مشاهده ی کلیه اطلاعات می توان از داخل سرور دستور زیر را اجرا کرد :

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

هم چنین می توان از منوی سمت چپ پنل نتیجه ی کار هایی که انجام دادیم را مشاهده کرد :

OSLearn.ir_013

در قسمت بعدی یاد می گیریم که چه طور یک کلاینت لینوکسی را به ldap سرور خودمون متصل کنیم و از یوزر هایی که در ldap سرور وجود دارد در کلاینت ها استفاده کنیم . هم چنین در قسمت سوم به نقاط ضعف این پروتکل از دید امنیت خواهیم پرداخت .

 

برای پیاده سازی این سرویس و کانفیگ پیشرفته ی آن بر روی شرکت و یا سازمان خود با ایمیل [email protected] در تماس باشید .

موفق و موید باشید

 

مقدمه : Wiki.ArchLinux

منبع : او اس لرن دات آی آر | http://OSLearn.ir

نویسنده : E2MA3N



برچسب ها : , , ,