ldap (arabic)
TRANSCRIPT
LDAP What is LDAP ?
LDAP : lightweight directory access protocol
directoryموجوده في dataعلى accessيسمح بعمل protocolهو الـ LDAPاذا فـ
، وهي فعليا فعليه databaseولكنها ليست databaseوانما هي تشبه الـ folderهنا ليس معناها directoryوكلمة
map ـ بين الname وبعض الـinformation عن هذا الـName كرقم التليفون وااليميل والعنوان الخ
domain maneبين الـ Mapهو DNSورقم التليفون ، والـ name بين الـ mapهو telephone indexمثل الـ
IP addressوالـ
نتم عمله ومازال يستخدم حتى اال directory serverهو اول DNSوالـ
ثم port# 389على Plain text لتخزين البيانات وكان يعمل بطريقةفي البداية كان يستخدم protocolهو LDAPالـ و
authenticationيستخدم بعد ذلك كـ لكي LDAPsواصبح secureليها لكي تصبح SSL/TLSتمت اضافة الـ
protocol علىPort# 636
authenticationوعمليات الـ readلعمليات الـ LDAP (port# 389)م الـ كان يسمح باستخدا redhat 6ما قبل
بشكل اجباري مع authenticationيستخدم لعمليات الـ LDAPs (port# 636)اصبح الـ redhat 6لكن منذ اصدار
فقط readيستخدم لعمليات الـ LDAP (port# 389)، والـ Kerberosاو الـ sslالـ
How LDAP Works ?
يكون بعضها اجباري وبعضها اختياري مثلما تقوم بتسجيل بياناتك االمر كله ينحصر في تخزين البيانات التي -
جديد emailفي موقع جديد او تقوم بعمل
فتجد ان هناك جزء خاص ببيانات الحساب
اجباري * username/passمثل الـ
وجزء خاص بالبيانات الشخصية
* بالكاملمثل االسم
* االيميل
بيانات اخرى
اختياري العنوان
اختياري التليفون
الشركة، domainله واضافته الي accountبعمل ITايضا عندما يعمل موظف جديد في شركة فيقوم مهندس الـ
user name, pass, email, department, managerة مثل يوتكون هناك بعض المعلومات االساس
…,address, genderوبعض البيانات الفرعية مثل
تتكون من مجموعة من الـ treeوالـ DNS treeمن البيانات مثل الـ treeيتكون من LDAPالـ اذا ف -
Objects والـobject يتكون من مجموعة من الـattributes ويتم تطبيق بعض الـrules (schemas)
attributeكتابة هذا الـ formatللتحكم في attributesعلي هذه الـ
تلفة وكل قسم به موظفين وكل موظف له بيانات كاالسم ورقم التليفون اذا كان لدينا شركة بها اقسام مخ مثال -
objectواالقسام هي domain nameاو الـ هو اسم الشركة rootوالعنوان ، فيمكن تمثيل ذلك بان الـ
attributesن هي الـ وبيانات الموظفي
Usersالتي تحدد صالحيات الـ ACLعلي الـ LDAPيعتمد الـ -
كـ LDAPتكون بطيئة جدا لذلك ال تستخدم الـ writeتكون سريعة جدا بينما عملية الـ readعملية الـ -
database
جديد Userقليلة وذلك عند اضافة تكون writeمبني في االساس على اعتبار ان عمليات الـ LDAPوذلك الن تصميم الـ
وهذه العمليات ال تتم كثيرا او بشكل دوري Userاو تعديل بيانات
التي تتم يوميا عند الدخول علي الـ user authenticationتتم كثيرا وبشكل دوري مثل الـ readولكن عملية الـ
system او علي الـPC
التي سيتم data (string, numbers, date, time,…)ع الـ للتحكم في نو schema الـ يستخدم LDAPالـ -
fieldsادخالها وكتابتها في الـ
LDAP Usage - Authenticate clients
- LDAP address book
LDAP Deployments (تطبيقات)
- Red Hat Directory Server
- OpenLDAP والذي سيكون محور حديثنا في هذا الكورس
- Active Directory
- Oracle Internet Directory
- Sun Java System Directory Server
- OpenDS
- IBM Tivoli Directory Server
Definitions
1- Attribute
فيجب ان يكون Userتعبر عن او تصف شيء معين مثال اذا اردت ان تضع رقم تليفون piece of dataهي
attributeفيجب ان يكون هناك User، او اذا اردت ان تضع وصف لـ phoneيسمى attributeهناك
مثل رقم objectهي المعلومات التي نريد تسجيلها عن الـ attribute.. اذا فالـ descriptionيسمى
التليفون والعنوان وتاريخ الميالد .. الخ
2- Object
عن Objectويختلف كل attributesمجموعة الـ وهو يتكون من objectيسمى treeكل جزء في الـ
classاالخر حسب الـ
3- Object classes
التفصيلوسنتحدث عنها الحقا بمزيد من ودرجة اهميته objectتحدد نوع الـ classesهي
4- DIT (Directory information tree)
فيها objectsوترتيب الـ treeهو شكل الـ
5- Distinguished name (Base dn) Base
مثل trees 2ال يتكرر بين اي وهو LDAPوهذا االسم هو الذي نتعامل به مع الـ treeوهو االسم المميز للـ
DNSفي الـ domainاسم الـ
6- Distinguished name (rdn) Relative
7- LDIF (LDAP Data Interchange Format)
الخاصة بها والتعديل عليهم attributesوالـ objectsمحدد نقوم فيه بتخزين الـ syntaxله text fileوهو
8- Schema
o هي مجموعة من الـrules التي تحدد ما اذا كانت الـinformation ،مكتوبه بشكل صحيح ام ال
date/timeتقيدنا بطريقة كتابة معينه للبيانات مثل طريقة كتابة الـ rulesـ وهذه ال
o كما تحتوي الـschema على اسم الـattribute ونوعه والـsyntax الخاصه به والـrules التي
تطبق عليه
o وتختلف الـschema باختالف نوع الـobject
:من base DNويتكون الـ
1- O : organization ثل مnetscaperoot وهو اسم الشركة التي قامت بعمل الـdirectory server قبل ان
ds-389وتصنع منه النسخة المجانية redhatتشتريه
2- dc : domain component
3- ou: organization unit مثل الـgroup
4- cn: common name/sub ou الـ مثلsub greoup
5- UID مثل اسم الـ :User
cnيتكون من مجموعة من الـ ouوالـ ouيتكون من مجموعة من الـ dcوالـ
DN for domain arab-linux.com dn: dc=arab-linux,dc=com
DN for Groups dn: ou=Groups,dc=arab-linux,dc=com
DN for HR Managers group is dn: cn=HR Managers,ou=Groups,dc=arab-linux,dc=com
DN for user AGamil is dn: uid=AGamil,ou=People,dc=arab-linux,dc=com
Install 389-ds وسنشرحه مرة اخرى بمزيد من التفاصيل بعد ذلك openLDAPسريع للـ installationسنقوم االن بعمل
# yum search 389-ds
علىوالتي تحتوي ds package-389للـ installنقوم بعمل
389 directory server + Administration console + directory server console
# yum install 389-ds
default configurationبالـ directory serverللـ setupنقوم االن بعمل
installationل الـ التي تفضل عملها قب recommendationsالتي توضح بعض الـ warningوهنا ستظهر بعض الـ
لالستمرار yesفسنكتب test labولكنها االن غير هامة في حالة الـ
typical setupالختيار الـ enterثم نضغط
المعروض اذا كان صحيحا hostnameلقبول الـ enterثم
وليس لهم اي صالحيات no bodyباسم user/groupهنا سيستخدم
االصلي فنقوم بعمل directory serverبنفس اعدادات الـ directory serverمن اذا اردت عمل اكثر
configuration file من الـDS ثم نستخدمه )كما سنرى الحقا( االصلي
ds-adminموجود مسبقا وتريد ربطه بهذا الـ directory serverثم يسأل عما اذا كان هناك
DSللـ admin user/passwordثم نقوم بعمل
domainثم نحدد الـ
Portونحدد الـ
وسنتحدث عنه الحقا server identifierثم نحدد الـ
defaultsثم نحدد بعض المعلومات االخرى التي سنتحدث عنه الحقا ولكننا االن سنستخدم الـ
له userوهذا الـ cn=Directory Managerوسيكون directory serverللـ user/passونقوم بعمل
administrative rights
Management consoleفي الدخول على الـ Userوسنستخدم هذا الـ
administration serverالذي سيعمل عليه الـ portوالـ
setupوننتظر حتى اكتمال الـ
setupالموجود به جميع تفاصيل الـ log fileالحظ الـ
389-DS Basic Setting dirsrv/dirsrv-admin servicesنقوم بتشغيل الـ
تلقائيا مع بدء التشغيل لذلك مراعاة ذلك dirsrv/dirsrv-admin servicesالـ ال تعمل وفي االحوال الطبيعية
الجديدة التي تم اضافتها portsنجد االن بعض الـ
installationالذي قمنا بعمل اثناء الـ administration server portهو الـ port : 9830ونالحظ ان الـ
selinux : enforcingكما يجب التأكد من ان الـ
iptablesثم نقوم بتشغيل الـ
# system-config-firewall-tui
Port : 9830والـ port : 389نقوم باضافة الـ
389-ds files LDAP service : dirsrv
PID files : /var/run/dirsrv/slapd-SRV1.pid
LDAP directory : /etc/dirsrv
nobody userهو للـ directoryعلى هذا الـ Permissionsالحظ ان الـ
Dirsrv Instance directory : /var/lib/dirsrv/slapd-SRV1
nobody userايضا هو للـ directoryعلى هذا الـ Permissionsالحظ ان الـ
Dirsrv DB files : /var/lib/dirsrv/slapd-SRV1/db
Dirsrv Backup files : /var/lib/dirsrv/slapd-SRV1/bak
Log file : /var/log/dirsrv
/var/log/dirsrv/admin-serv/access for access logs
/var/log/dirsrv/admin-serv/error for error logs
Directory server identifier : /etc/dirsrv/slapd-srv1
Schema directory : /etc/dirsrv/schema
LDAPالتي يطبقها الـ rulesاو الـ schemasسنجد جميع الـ schema directoryوعندما نستعرض محتويات الـ
التي سنتحدث عنه الحقا ldifلها قبل تخزينها ، وهي مكتوبة بالـ validationلعمل dataعلى الـ
Run 389-console عن طريق االمر console-389نقوم االن بتشغيل الـ
# 389-console
administration server URLوالـ directory manager user/passالـ وهي login credentialsونكتب الـ
tabsفيتظهر لنا شاشة بها عده Directory serverاذا ذهبنا الى القائمة اليسرى وضغطنا على
1- Tasks وهي للتحكم في الـ :DIRECTORY SERVER
configurationالـ ثم شاشة -2
التي تحتوي عليها directoriesثم الـ -3
special usersو users (people)و groupsيحتوي على domain (arab-linux)وسنجد بداخلها الـ
directory serverثم شاشة المعلومات التي توضح حالة الـ -4
اتباع الخطوات التالية :ب CLIنستطيع الحصول علي هذه المعلومات عن طريق الـ
نقوم بالتعديل على ملف -1
/etc/openLDAP/LDAP.conf
بتنفيذ االمر التاليثم نقوم -2
LDAPsearch -x | less
command، وهذا الـ consoleوالمعلومات التي تظهر من الـ commandالحظ الـمعلومات التي تظهر من الـ
سنتحدث عنه الحقا ldif fileيحصل عى هذه المعلومات من الـ
وهي تستخدم مع الـ openLDAP-clients.rpm packageمفيد جدا ويتبع الـ commandهو LDAPsearchاالمر
Microsoft active directory وغيرها من الـdirectory servers
ACLالن هناك authenticationبدون اي simple searchلعمل ”x-“نستخدم معه LDAPsearchوعند تنفيذ االمر
dataللـ readبعمل userتسمح الي LDAPفي الـ
389-DS schema وليكن schemasاذا قمنا باستعراض محتويات احد الـ
vim /etc/dirsrv/schema/60sudo.ldif
سنجد انه يتكون من
Attributeللـ unique IDهو Attribute IDحيث الـ
attributeالتي ستطبق علي هذا الـ ruleهي الـ equalityوالـ
OIDواذا بحثنا عن هذا الـ uniqueوهو syntaxالمكافئ لهذا الـ OIDهو الـ syntaxوالـ
http://www.alvestrand.no/objectid/1.3.6.1.4.1.1466.115.121.1.24.html
؟ OIDبالـ attributeولكن لماذا يتم ربط الـ
OIDاو الـ attribute syntaxوانما بالـ attribute nameالعبرة ليست بالـ
على الرغم من ان الخانة التي يكتب فيها التاريخ لها نفس applicationsفطريقة كتابة التاريخ ليست واحده في كل الـ
( dateاالسم )
timeباسم attribute nameيستخدم الـ active directoryلنفترض مثال ان الـ
: OIDالذي له Generalized Time syntaxوبصيغة
1.3.6.1.4.1.1466.115.121.1.24
اخر OIDالذي له UTCTimeايضا ولكن بصيغة timeباسم attribute nameيستخدم الـ ipa serverوالـ
1.3.6.1.4.1.1466.115.121.1.53
فسوف تحدث مشكلة في الـ ipa serverوالـ active directoryالموجوده في الـ dataفاذا اردنا عمل دمج بين الـ
time attribute على الرغم من ان الـattribute name واحد في كال الحالتين ولكن الـOIDs مختلفة
OIDsفلذلك يجب ان تستخدم كال الشركتين نفس الـ
: االسم attribute nameبهم نفس الـ applications 2اذا افترضنا ان لدينا
بهذه الصيغة application1ن يتم كتابة االسم في و لك
First name middle name last name
بهذه الصيغة application2وفي
Middle name first name last name
ال applications 2فستصبح البيانات غير صحيحة الن الـ application2الي application1فعند نقل االسم من
attribute nameموا نفس الصيغة على الرغم من استخدام نفس الـ يستخد
attributesفي الـ OIDsاستخدام نفس الـ applications 2. لذلك يجب على الـ OIDهذه الصيغة يعبر عنها بالـ
الخاصة التي يستخدموها
عن طريق هذا اللينك OIDsيمكن مراجعة الـ
http://www.alvestrand.no/objectid/1.3.6.1.4.1.1466.115.121.1.html
caseوبعضها case sensitiveالتي تكون fields، فهناك بعض الـ case sensitiveهناك مشكلة اخرى وهي الـ
insensitive
، وهنا يجب ان نالحظ case sensitiveهو linuxفي حين ان الـ case insensitive تتعامل بالـ Microsoftفـ
”caseIgnoreMatch“ام ”caseExactMatch“التي يتعامل بها كالهما هل هي ruleاختالف الـ
LDAP object Classes ي انه ليس بالضرورة استخدامهم نستخدمهم حسب الحاجه وحسب درجة االهميه، ا LDAP classesانواع من الـ 3هناك
، فهناك بيانات اساسية اجبارية وبيانات فرعية اختيارية جميعا
1- Abstract class (abs) وهي :class تصف الـtree والـ ،Object الموجود في بداية الـtree ( اوroot
entry يكون من النوع )abstract
2- Structural class (str) صيل الـ : وهي التي تحدد تفاtree , والـhierarchical وبيانات الـ وتكوينها
object الضرورية
3- Auxiliary class (aux) وهي تختص بالبيانات االضافية الي يمكن اضافتها للـ :objects
4- Extensible object class ووهو :class ال يقوم بعملcheck على الـsyntax
structuralتأخذ نفس خصائص الـ aux classاالعلى منها ، فالـ classesفات الـ ترث ص classesمع العلم بان الـ
class
، .PO., Zone number, street noالرئيسي يحتوي على objectفي الـ address syntaxبمعنى انه اذا كان الـ
syntaxالرئيسي يستخدم نفس الـ objectفرعي من هذا الـ objectفستجد ان اي
اال اذا .....
Notولكنه syntax checkingفسوف يتجاهل الـ extensibleالفرعي من النوع objectاال اذا كان الـ
recommended النه اذا اردت عمل ايintegration بينه وبين ايproduct اخر فسوف يحدثfail
ركة اخرى وهذا ايضا يؤدي الى حدوث خاصة بها وغير موجوده في ش attributesهناك بعض الشركات قامت بعمل
االخرى productsمع الـ integrationمشاكل عند عمل
LDIF LDAP interchange formatهو اختصار
الخاصة بها والتعديل عليهم وهو attributesوالـ objectsمحدد نقوم فيه بتخزين الـ syntaxله text fileوهو
(manipulation)او objectsطريقة للتعديل على بيانات الـ
وصيغته :
dn : value
object class :
attributes : value
: ldifوهناك طريقتين لكتابة الـ
1- DNS naming
2- DAP 500
attributesتختلف قليال عن الـ Usersالخاصة بالـ attributes، فالـ objectباختالف الـ attributesوتختلف الـ
groupsالخاصه بالـ
fileال يؤثر على الـ attributesترتيب الـ
: ldifالمستخدمه في الـ attributesومن اشهر الـ
Attribute Name Alias
cn Common Name (Full Name) االسم بالكامل مثلAhmed Gamil
uid User id مثلagamil
o Organization Name اسم الشركة
ou Organisational Unit Name (group / department) القسم / الجروب التابع له
dc Domain Component (parts of domain or
branches of company)
فسنجد انه يتكون من جزئين او smallnet.comباسم domainمثال اذا كان هناك
2 components وهمsmallnet وcom لذلك يطلق على كل واحد منهم
domain component (dc)
gn Given Name (First Name)
sn Surname (last name) االسم االخير
c Country Name الدولة
co Friendly Country Name
l Locality Name اسم المنطقة / المركز التابع له
st State Or Province Name المحافظة
street Street Address
postalAddress Postal Address العنوان البريدي
postalCode Postal Code الرمز البريدي
homePhone Home Telephone Number رقم تليفون المنزل
telephoneNumber Telephone Number رقم تليفون العمل
mobile Mobile Telephone Number رقم الموبايل
Photo Jpeg Photo صورة الـUser
mail Email address
title Job title
userPassword User Password
“#” comment
commentتعني ان هذا السطر هو ”#“الـ
“ ” space this line is related to the above line
المسافة تعني ان هذا السطر هو تكمله للسطر السابق
“\” for special character
special characterامام الـ ”\“توضع الـ
ايضا dnوكذلك الـ uniqueيجب ان يكون Objectاي
auxiliary object classواحد فقط ويمكن ان يكون له اكثر من structural object classيكون له objectاي
انجلوس في لوس ولها فرعين احدهما smallnet.comيسمى domainولها smallnetاذا كان هناك شركة اسمها
كالتالي : LDAP component، فيكون الـ (ca-eg)في القاهرة بمصر واالخرى (la-usa)بامريكا
st=ca,c=eg,dc=smallnet,dc=com
st=la,c=usa,dc=smallnet,dc=com
dc=com
dc=smallnet
st=ca st=la
c=eg c=usa
وعند تنفيذ االمر
LDAPsearch –x | less
مثال :
groupالى هذه الـ userضيف ثم ن developersتسمى groupنقوم بعمل
posix groupمن النوع new groupملحوظة : سنجعل الـ
لهم UID/GIDتسمح بتخصيص files/groupsتطبق على الـ Permissionsهي POSIXوالـ
Userوالضافة
التي يمكن اضافتها والتعديل عليها attributesوهناك العديد من الـ
اخرى عن عن طريق attributesضافة ويمكن ا
command lineعن طريق الـ ldif fileنقوم االن باستعراض هذه المعلومات من الـ
سنأخذ مثال اخر عملي مع مزيد من التفاصيل . سنقوم االن بعمل :
1- Uninstall directory server
2- Reinstall directory server
3- Add users to ldif
OpenLDAP Component
اجزاء رئيسية : 3من LDAPيتكون الـ
1- Directory server (DS)
هو الجزء االساسي في الـLDAP
يقوم بتخزين الـobjects والـusers والـgroups
باستخدام الـ ويمكن التعامل معه مباشرةCLI 2بدون الحاجه الي الـ parts االخرين
يحتاج الىadmin user/pass معه للتعامل
2- Directory server admin (DS admin)
نسخة مصغرة من الـ هوtomcat
يستخدم لعملaccess للـdirectory server
يحتاج الىadmin user/pass اخرين اي انهم يختلفوا عن الـDS user/pass
3- Console
هوGUI يتعامل مع الـDS admin
يقوم الـconsole باستقبال الـrequests من الـUsers ويرسلها الي الـDS Admin الذي يترجمها ويرسلها
لتنفيذها DSالى الـ
Uninstall directory server ”remove-ds-admin.pl“يسمى perl scriptعن طريق removeطريقة سهله لعمل openLDAPوفر لنا الـ
نقوم بتنفيذ االمر :
[root@SRV1 ~]# remove-ds-admin.pl -a –y
قد تم ازالتها LDAP portsسنجد االن ان الـ
قد تم حذفه ايضا ”directory server identifier “slapd-srv1وان الـ
packages *389للـ removeثم نقوم بعمل
تماما dirsrv directoryثم حذف الـ
تماما directory serverوبذلك نكون قد الغينا الـ
Install 389-ds ds package-389للـ installنقوم بعمل
[root@SRV1 ~]# yum install 389-ds
ds-adminللـ setupثم نقوم بعمل
[root@SRV1 ~]# setup-ds-admin.pl --keepcache
، وهذا tmpفي الـ ”setup*****.inf“يحتفظ باجابات االسئلة في ملف حتى keepcache--وهنا نقوم باضافة
configurationاخر بنفس الـ dsيمكن ان نستخدمه مرة اخرى لعمل الملف
كما فعلنا سابقا ولكن سنركز االن على بعض الخطوات Installationنقوم بعمل الـ
في هذه الخطوة -1
Microsoft ADوهذا ما ال يمكن عمله في serverعلى نفس الـ instanceبعمل اكثر من DSيسمح لنا الـ
الموجود في الصور identifierهو الـ instanceلـ وهذا ا
تالذي قمنا به سابقا كان installationفمثال في الـ اخاص به directoryيكون لها DS instance/identifierوكل
slapd-srv1تسمى instanceهناك
باالسم الجديد directoryكون لها اخرى يمكن ان نسميها اي اسم اخر وسي instance (identifier)واذا قمنا بعمل
في هذه الخطوة -2
OUsوالذي يتفرع منه جميع الـ root of directory treeهو الـ suffixوالـ domainباسم الـ suffixنقوم بعمل
في هذه الخطوة -3
ds-admin (tomcat)للـ admin user نقوم بتعريف الـ
في هذه الخطوة -4
default admin userوهنا سنستخدم الـ admin userنفسه يحتاج الى Directory server (LDAP)الـ نجد ان
cn=Directory Managerباسم DNوله Directory managerواسمه
Userوليس باسم الـ Userالخاص بالـ DNنتعامل معه بالـ Directory serverوعند التعامل مع الـ
: admin users 2اذا فلدينا االن
adminويكتب بشكل واضح وصريح tomcatويستخدم مع الـ adminاالول اسمه -1
المكافئ له DNويستخدم بالـ Directory managerوالثاني اسمه -2
administration serverالذي سيعمل عليه الـ portوالـ
قد تم تخزين الـ setupد انتهاء الـ فسنجد انه بع Installationفي عمل الـ option : keepcacheونتيجة استخدام الـ
configuration parametrs في هذا المسار
وباستعراض محتويات الملف سنجد التالي
plain text passwordsيجب حماية هذا الملف النه يحتوي علي الـ
DN والـ domainالصحيحة مثل الـ configurationبه الـ LDAP.confكما يجب التأكد من ان
Add local users to ldif passwordله userوكل LDAPالغير موجودين على الـ local usersعلى العديد من الـ systemيحتوي الـ
؟ LDAPالي الـ systemالموجودين علي الـ Usersفهل سنحتاج الى تحويل جميع الـ او اكثر ، groupوموجود في
؟ LDAPالي الـ لهم migrationوكيف نقوم بعمل
normal users، سنحتاج فقط الي تحويل الـ service usersاالجابة هي ال ، فليس هناك داعي من تحويل الـ
tmpونضعه في الـ passwd fileلذلك سنأخذ نسخة من الـ
تسمى packageعن طريق ldifفيتم ذلك عن طريق تحويلهم الي LDAPاما عن اضافتهم على الـ
“migrationtools.noarch”
وتوجد في المسار migrationsالتي تقوم بعمل انواع مختلفة من الـ scriptsتوفر لنا العديد من الـ packageهذه الـ
/usr/share/migrationtools/
Users للحصول على اسماء الـ passwd, shadow filesفهي تقوم باستخدام الـ scriptsاما عن كيفية عمل هذه الـ
ldifوتحويلها الى groupsوالـ
”usr/share/migrationtools/migrate_common.ph/“ولكن اوال يجب ان نقوم بالتعديل على ملف
ldif fileالي tmp/passwd/الموجودين في usersالذي يقوم بتحويل الـ scriptنقوم االن بتشغيل الـ
# perl /usr/share/migrationtools/migrate_passwd.pl /tmp/passwd /tmp/users.ldif
usersسنجد اسماء الـ ”tmp/users.ldif/“نقوم بفتح الملف
عن طريق directory serverفي الـ ldif fileنقوم االن باضافة هذه البيانات الموجوده في الـ
# LDAPadd -x -W -D "cn=Directory Manager" -f /tmp/users.ldif
-x عند التعامل مع الـ :DS سيستخدم الـsimple authentication وليسSASL authentication
-W عند تنفيذ الـ :command سيطلب الـpassword وبدونها يجب وضع الـPassword في الـ
command
-D لكي يستخدم الـ :DN
-f مكان الـ :ldif file الذي يحتوي على بيانات الـUsers
consoleوللتأكد من النتيجة نستخدم الـ
اذا فالخالصة :
tmpونضعه في الـ passwd fileنأخذ نسخة من الـ -1
migrationtools packageللـ installنقوم بعمل -2
واضافة الـ ”usr/share/migrationtools/migrate_common.ph/“نقوم بالتعديل على ملف -3
domain والـDN
عن طريق تنفيذ االمر ldif fileالي tmp/passwd/الموجودين في usersل الـ قوم بتحوين -4
# perl /usr/share/migrationtools/migrate_passwd.pl /tmp/passwd /tmp/users.ldif
تنفيذ االمر عن طريق directory serverفي الـ ldif fileباضافة البيانات الموجوده في الـ -5
# LDAPadd -x -W -D "cn=Directory Manager" -f /tmp/users.ldif
How to use LDAP as Adree Book
thunderbirdللـ installنقوم بعمل
# yum install thunderbird
thunderbirdعند تشغيل الـ errorاذا ظهر هذا الـ
“/usr/lib64/thunderbird/thunderbird: symbol lookup error: /usr/lib64/thunderbird/libxul.so:
undefined symbol: gdk_window_get_visual”
gdk-pixbuf2.x86_64 Packageللـ installفيجب ان تقوم بعمل
thunderbirdثم نقوم بتشغيل الـ
# thunderbird
LDAP address bookعلي الـ mail clientالالزمة لكي يحصل هذا الـ configurationثم نقوم بعمل الـ
LOGS
Console login logs # less /var/log/dirsrv/admin-serv/access
worng user/passبسبب الـ wrong authenticationفي حالة الـ
كالتالي logsستظهر الـ
كالتالي Logsستظهر الـ successful loginبينما في حالة الـ
389-search
LDAPفي الـ searchمل في حالة ع
# LDAPsearch –x
في هنا Logsستظهر الـ
# tail -f /var/log/dirsrv/slapd-SRV1/access
thunderbirdالموجود بـ address boodفي الـ searchوهذا ينطبق ايضا على عملية الـ
Error logs pathستظهر في هذا الـ errorsفي حالة وجود
# tail -f /var/log/dirsrv/admin-serv/error
Change log level/setting consoleعن طريق الـ log levelوالـ Logsيمكن تغيير اعدادات الـ
View logs consoleعن طريق الـ logsيمكن عرض الـ
Backup directory server GUI Backup
عن طريق directory serverللـ backupنستطيع عمل
status logsعن طريق الضغط على backup logsوتستطيع االطالع علي الـ
لها backupالتي تم عمل filesكما يمكن االطالع علي الـ
# /var/lib/dirsrv/slapd-SRV1/bak/
CLI Backup 1- Using db2back script
script : db2bakعن طريق الـ CLIعن طريق الـ backupكما يمكن عمل
# cd /usr/lib64/dirsrv/slapd-SRV1/
# ./db2bak
الجديد قد تم عمله backupسنجد ان الـ
script : db2ldifعن طريق الـ ldif formatالي DB entriesكما يمكن تحويل الـ
# ./db2ldif -s dc=arab-linux,dc=com
وسنجد النتيجة في المسار
/var/lib/dirsrv/slapd-SRV1/ldif
Directory Server with SSL ؟ LDAPمع الـ SSLلمذا نستخدم الى الـ
على الـ dataوليس من المفترض ان نقوم بنقل الـ Plain textوهو port 389يعمل على Ldapذكرنا سابقا ان الـ
NW بهذا الشكل لذا يجب استخدام الـSSL
لذلك certificateيجب ان يكون هناك sslولتشغيل الـ Port :636يعمل على ldaps، والـ Ldap + ssl = ldapsوالـ
certificateعلى كيفية الحصول على اوال سنتعرف
Certificate Authority (CA)اوال مرحلة الـ
عن verisignركة او الغائها مثل ش serversالي الـ certificatesهي الجهة المسئولة عن اعتماد وتقديم الـ CAالـ
طريق
private keyبعمل serverيقوم الـ -1
Certificate signing request (CSR)بعمل الـ يقوم ثم -2
certificateللحصول على CAالي الـ CSRوالـ private keyبتقديم الـ serverثم يقوم الـ -3
certificateوارسال الـ الخاص به private keyعن طريق الـ requestباعتماد هذا الـ CAثم يقوم الـ -4
مرة اخرى serverالي الـ الخاصه به
للـ revokeلعمل CAمخاطبة الـ adminفيستطيع الـ Private keyوسرقة الـ serverعلى الـ attackفي حالة عمل
certificate اي الغائها
على : certificateوتحتوي الـ
1- Public key
2- Requester ID info (name, email,..)
3- Issuer ID info
4- Digital signature of the issuer
5- Certificate validity period
الخاصة بموقع جوجل certificateوهذه صورة للـ
CAالموجوده لدي جميع شركات الـ public keysاو الـ certificatesعلي جميع الـ browserيحتوي الـ
OPENSSL files توجد في المسار keysجميع الـ
يوجد في المسار opensslالخاص بالـ configuration fileالـ
/etc/pki/tls/openssl.cnf
fileفي هذا الـ configurationواهم الـ
CSRللـ signاستخدام ايا منهم في عمل CAالذي يستطيع الـ Policiesنوعين من الـ configuration fileتوجد في الـ
Policyوهذه الـ Policy matchيستخدم الـ by defaultولكنه
: pathتوجد في الـ CAالخاصه بالـ filesجميع الـ
/etc/pki/CA/
: pathتوجد في الـ CAالخاصه بالـ certificatesجميع الـ
/etc/pki/CA/certs
الخاص بالـ .serial noاو بشكل ادق هو الـ pathتوجد في الـ CAالخاصه بالـ revoked certificatesجميع الـ
revoked certificates
/etc/pki/CA/crl
pathيوجد في الـ CA private keyالـ
/etc/pki/CA/private
هو signingبعدما يتم عمل certificatesالذي ستذهب اليه الـ pathالـ
/etc/pki/CA/certs Or /etc/pki/CA/newcerts
ldap CSRللـ signingداخليه لكي نستطيع عمل CAحقيقة فسنقوم بعمل CAوليس لدينا test lapعمل على بما اننا ن
وكيف يقوم بالتعامل مع الـ CA. وانما هي فقط لمعرفة كيف يعمل الـ sslبالـ ldapليس لها عالقة بربط الـ هذه الخطووه
certificate requests
مختلف serverللتسهيل فقط بدال من تنفيذه على ldapالـ serverنفس سنقوم عمل هذه الخطوات على
CA server preparation
CSRللـ signingيستخدم لعمل private keyعلى CAيحتوي الـ
signed certificateالذي يستخدمها في التأكد من صحة الـ ldap serverيعطيها للـ certificateكما يحتوي على
وانه لم يتم التالعب بها CAله من الـ القادمة
بخطوتين CAسنقوم بعمل اذا
1- Create private key
2- Create public key/certificate
Create serial &index files
لها installationيتم عمل certificateلكل .serial noيوضع به fileهو serial fileالـ
DBكـ opensslمه الـ يستخد fileهو index fileوالـ
Create private key
# cd /etc/pki
# openssl genrsa -des3 -out CA/private/cakey.pem 1024
CA private keyللـ passwordوهي تستخدم لعمل Des3 : digital encryption standardالـ
passwordفسيطلب هذه الـ certificateالي signingاذا قمنا بعمل
passwordفلن يستطيع احد استخدامه الن اي تعامل به سيحتاج الى الـ CA private keyذا تم سرقة الـ ا
Create public key / certificate
والـ x509من النوع ”public key : “cacert.pemلتوليد ”private key : “cakey.pemثم نستخدم الـ
validation day يوم 3650لها
# openssl req -new -x509 -days 3650 -key CA/private/cakey.pem -out CA/cacert.pem
CA private keyباستخدام الـ signedوالحظ انها certificate authority certificateتسمى certificateهذه الـ
ldapsنعود مرة اخرى الي الـ CAاالن وبعد االنتهاء من معرفة كيفية عمل
Prepare 389-ds certificate
1- Add CA certificate
2- Create CSR
3- CA sign the CSR
4- LDAP Server add the signed certificate
الذي يستخدمها في التأكد من صحة الـ ldap serverالخاصه به الي certificateيرسل الـ CAكما ذكرنا سابقا ان الـ
signed certificate القادمة له من الـ CA وانه لم يتم التالعب بها
الذي بدوره سيقوم بعمل LDAP serverالخاصه به الي الـ certificateقام بارسال الـ CAلذلك سنفترض ان الـ
import لها
Add CA certificate new password عمل سيطلب منا Manage certificatesعند الدخول على
جديدة فقط ويمكن تغييرها بعد passwordتظهر مرة واحده فقط عند عمل new passwordهذه الشاشة الخاصة بالـ
ذلك حسب الحاجة من هنا
؟ Passwordsولكن ما الهدف من هذه الـ
موجوده في المسار DBفي certificatesيتم تخزين بيانات الـ
/etc/dirsrv/slapd-SRV1
cert8.db هوDB file (binary format) على الـ يحتويtrusted certificate
key3.db هوDB file (binary format) يحتوي على الـclient keys
pks#11مثل security modulesوهو يحتوي على الـ secmod.dbاخر يسمى DB fileوهناك
passwordهذه الـ يجب حماية هذه الملفات باستخدامالى اخر واستخدامه لذلك systemويسهل نقل هذه الملفات من
عن طريق CA certificateنقوم االن باضافة الـ
CA certificateللـ importقمنا االن بعمل
CSRنقوم بالخطوة التاليه وهي عمل
Create CSR
والتي قمنا بعملها اول مرة DBالخاصه بالتعديل على ملفات الـ passwordسيطلب الـ
”/etc/pki/“وليكن في المسار CSRبتحديد مكان حقظ الـ نقوم
closeثم doneثم
CSRنستعرض االن الى ملف الـ
لها signلعمل CAالى الـ CSRبارسال الـ ldap serverثم يقوم الـ
CA sign the CSR
بهذه الطريقة CSRللـ signالذي يقوم بعمل CAنعود مرة اخرى الي الـ
# openssl ca -config tls/openssl.cnf -policy policy_anything -in srv1.csr -out CA/certs/srv1.crt
CA private keyعندما قمنا بعمل CAوهي التي قمنا سابقا بعملها للـ Passwordالحظ انه طلب الـ
راجع هذه الخطوة
تم وضع بعض البيانات بداخله index.txtالحظ ان ملف الـ
وهذا معناه انه ال يمكن parameter : unique subjecyيحتوي على index.txt.attrاخر يسمى fileثم قام بعمل
server nameان يحصلوا على نفس الـ certificate 2الي
جديد ووضع بداخله قيمة جديده serial fileكما نالحظ انه قام بعمل
ldap serverالجديدة الى الـ certificateبارسال الـ CAثم يقوم الـ
LDAP Server add the signed certificate
new certificateللـ Installونقوم بعمل ldap serverنعود االن الى الـ
CA خاصه به معتمده من الـ certificateيمتلك ldap serverوبذلك اصبح الـ
لكي يستخدمها certificateبالـ ds-389يتبقى ان نقوم بتعريف الـ
Configure 389-ds with certificate
dirsrv serviceللـ restartثم نقوم بعمل
DBقراءة الـ daemonحتى يستطيع الـ restartاثناء الـ Passwordامة : يجب ادخال الـ ملحوظة ه
في كل مرة وهي كالتالي passwordهناك طريقة اخرى لتفادي طلب الـ
# echo "Internal (Software) Token:P@ssw0rd" > /etc/dirsrv/slapd-SRV1/ pin.txt
قد تم فتحه ldapsالخاص الـ port 636سنجد ان الـ open portsنقوم االن باستعراض الـ
portعلى هذا الـ firewallنقوم بتفعيل الـ
# system-config-firewall-tui
Allow Certificate to clients clientsالى جميع الـ certificate (public key)الخطوة االخيرة وهي اتاحة الـ
له Installبعمل ، فنقوم https serverوتتم هذه الخطوة عن طريق الـ
# Yum install httpd
ثم
http directoryالـ certificateنقوم االن بنسخ الـ
# cp /etc/pki/cacert.pem /var/www/html/
firewall في الـ Http للـ allowثم نقوم بعمل
Authenticate client from LDAP
nss-pam-ldapdوالـ pam_ldapوالـ openldap-clients package للـ Installعمل تأكد من
1- Configure LDAP authentication
tuiو GUIوهناك طريقتين لذلك :
[root@client1 ~]# system-config-authentication
directoryوتضعها في هذا الـ clientالي الـ ldap serverمن الـ cacert.pemللـ Importهذه الخطوة تقوم بعمل
/etc/openldap/cacerts
ldap.confولكن يجب التعديل على ملف الـ manualويمكن ان نقوم بهذا بشكل
# vim /etc/openldap/ldap.conf
tuiالطريقة االخرى باستخدام الـ
# authconfig-tui
serverيستطيع االتصال بالـ clientنتأكد من ان الـ -2
[root@client1 ~]# ldapsearch -x -ZZ -D "cn=Directory Manager" -W
بياناتهو ldapتظهر نتيجة االتصال بالـ
ستظهر لنا بعض االختيارات tuiعندما نستخدم الـ
server urlوتعديل الـ Use TLSيمكن الغاء العالمة من الـ لك . لذ SSLاو الـ TLSهذه االختيارات تسمح باستخدام الـ
//:ldapsالى //:ldapمن
ولكم ما الفرق بينهم
sslنتيجة استخدامه للـ port : 636يعمل على ldapsوالـ Port :389يعمل على ldapكما ذكرنا سابقا ان الـ
portفسيتم ذلك على data : plain textوتكون الـ unsecureبطريقة clientان يتصل بالـ serverاذا اراد الـ
:389
port :636فسيتم ذلك على sslعن طريق الـ secureبطريقة clientان يتصل بالـ serverالـ اذا اراد و
ولكن service port : 389 نفس الـ على clientوالـ serverبين الـ فسيتم االتصال TLSولكن اذا قمنا باستخدام الـ
secureبشكل
لماذا ؟
serverبين الـ negotiationيقوم بعمل و serviceالخاص بالـ portيعمل على نفس الـ protocolهو TLSالـ الن
التي protocolsوالـ certificateعلى الـ يتفقوا فيه negotiation، وهذا الـ connectionالـ قبل فتح clientsوالـ
وها بينهمسيستخدم
بين االثنين connectionللـ encryptبعمل TLSواذا تم االتفاق فسقوم الـ
tlsتدعم الـ servicesوليست جميع الـ
كما في الصورة التالية ldapمع الـ tlsلذلك فاما ان نستخدم الـ
كما في الصورة التالية tlsفقط بدون الـ sslاو نستخدم الـ
اذا الخالصة هي التالي
CA server1- Create Private key
2- Create CA certificate
Directory server3- Create CSR
Client
6- Import CA Certificate