ldap (arabic)

82
LDAP What is LDAP ? LDAP : lightweight directory access protocol اذا فـLDAP هو الـprotocol يسمح بعملaccess علىdata موجوده فيdirectory وكلمةdirectory هنا ليس معناهاfolder ي تشبه الـنما ه واdatabase ولكنها ليستdatabase فعليه فعليا ، وهيmap بين ال ـname وبعض الـinformation عن هذا الـName وان الخ والعنيميلتليفون وا كرقم ال الـ مثلtelephone index هوmap بين الـname يفون ، والـ تل ورقم الDNS هوMap بين الـdomain mane والـIP address والـDNS هو اولdirectory server زال يستخدم حتى ا عمله وما تم ن و الـLDAP هوprotocol كان يستخدم البداية فيات وكان يعمل بطريقةلبيان لتخزين اPlain text علىport# 389 ثمفة الـضامت ا تSSL/TLS ها لكي تصبح ليsecure واصبحLDAPs لكي كـ يستخدم بعد ذلكauthentication protocol علىPort# 636 ما قبلredhat 6 ستخدا كان يسمح با م الـLDAP (port# 389) ت الـعمليا لread ت الـ وعملياauthentication منذ اصدار لكنredhat 6 اصبح الـLDAPs (port# 636) ت الـعمليا يستخدم لauthentication جباري مع بشكل ا الـssl او الـKerberos ، والـLDAP (port# 389) ت الـعمليا يستخدم لread فقطHow LDAP Works ? - التيلبيانات تخزين انحصر فيمر كله ي اا تقوم بتسجيل بياناتكاري مثلم اختيجباري وبعضها ا يكون بعضها بعملع جديد او تقوم في موقemail جديدلحسابت ا هناك جزء خاص ببيانا فتجد ان الـ مثلusername/pass جباري * ات الشخصية وجزء خاص بالبياناسم مثل اكامل بال* يميل ا* ت اخرى بياناوان العناري اختيتليفون الاري اختي مهندس الـ شركة فيقومد في ندما يعمل موظف جدييضا ع اIT بعملaccount فته اليضا له واdomain الشركة،ساست امعلوماك بعض ال هنا وتكون ي ة مثلuser name, pass, email, department, manager

Upload: ahmed-gamil

Post on 13-Jan-2017

171 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Ldap (Arabic)

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ة مثل يوتكون هناك بعض المعلومات االساس

Page 2: Ldap (Arabic)

…,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

Page 3: Ldap (Arabic)

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وهو

Page 4: Ldap (Arabic)

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

Page 5: Ldap (Arabic)

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نقوم االن بعمل

Page 6: Ldap (Arabic)

installationل الـ التي تفضل عملها قب recommendationsالتي توضح بعض الـ warningوهنا ستظهر بعض الـ

لالستمرار yesفسنكتب test labولكنها االن غير هامة في حالة الـ

typical setupالختيار الـ enterثم نضغط

المعروض اذا كان صحيحا hostnameلقبول الـ enterثم

Page 7: Ldap (Arabic)

وليس لهم اي صالحيات no bodyباسم user/groupهنا سيستخدم

االصلي فنقوم بعمل directory serverبنفس اعدادات الـ directory serverمن اذا اردت عمل اكثر

configuration file من الـDS ثم نستخدمه )كما سنرى الحقا( االصلي

ds-adminموجود مسبقا وتريد ربطه بهذا الـ directory serverثم يسأل عما اذا كان هناك

Page 8: Ldap (Arabic)

DSللـ admin user/passwordثم نقوم بعمل

domainثم نحدد الـ

Portونحدد الـ

Page 9: Ldap (Arabic)

وسنتحدث عنه الحقا server identifierثم نحدد الـ

defaultsثم نحدد بعض المعلومات االخرى التي سنتحدث عنه الحقا ولكننا االن سنستخدم الـ

له userوهذا الـ cn=Directory Managerوسيكون directory serverللـ user/passونقوم بعمل

administrative rights

Management consoleفي الدخول على الـ Userوسنستخدم هذا الـ

Page 10: Ldap (Arabic)

administration serverالذي سيعمل عليه الـ portوالـ

setupوننتظر حتى اكتمال الـ

setupالموجود به جميع تفاصيل الـ log fileالحظ الـ

Page 11: Ldap (Arabic)

389-DS Basic Setting dirsrv/dirsrv-admin servicesنقوم بتشغيل الـ

تلقائيا مع بدء التشغيل لذلك مراعاة ذلك dirsrv/dirsrv-admin servicesالـ ال تعمل وفي االحوال الطبيعية

الجديدة التي تم اضافتها portsنجد االن بعض الـ

installationالذي قمنا بعمل اثناء الـ administration server portهو الـ port : 9830ونالحظ ان الـ

selinux : enforcingكما يجب التأكد من ان الـ

Page 12: Ldap (Arabic)

iptablesثم نقوم بتشغيل الـ

# system-config-firewall-tui

Page 13: Ldap (Arabic)

Port : 9830والـ port : 389نقوم باضافة الـ

Page 14: Ldap (Arabic)

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

Page 15: Ldap (Arabic)

Schema directory : /etc/dirsrv/schema

LDAPالتي يطبقها الـ rulesاو الـ schemasسنجد جميع الـ schema directoryوعندما نستعرض محتويات الـ

التي سنتحدث عنه الحقا ldifلها قبل تخزينها ، وهي مكتوبة بالـ validationلعمل dataعلى الـ

Run 389-console عن طريق االمر console-389نقوم االن بتشغيل الـ

# 389-console

Page 16: Ldap (Arabic)

administration server URLوالـ directory manager user/passالـ وهي login credentialsونكتب الـ

tabsفيتظهر لنا شاشة بها عده Directory serverاذا ذهبنا الى القائمة اليسرى وضغطنا على

1- Tasks وهي للتحكم في الـ :DIRECTORY SERVER

Page 17: Ldap (Arabic)

configurationالـ ثم شاشة -2

التي تحتوي عليها directoriesثم الـ -3

Page 18: Ldap (Arabic)

special usersو users (people)و groupsيحتوي على domain (arab-linux)وسنجد بداخلها الـ

directory serverثم شاشة المعلومات التي توضح حالة الـ -4

Page 19: Ldap (Arabic)

اتباع الخطوات التالية :ب CLIنستطيع الحصول علي هذه المعلومات عن طريق الـ

نقوم بالتعديل على ملف -1

/etc/openLDAP/LDAP.conf

بتنفيذ االمر التاليثم نقوم -2

LDAPsearch -x | less

Page 20: Ldap (Arabic)
Page 21: Ldap (Arabic)

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العبرة ليست بالـ

Page 22: Ldap (Arabic)

على الرغم من ان الخانة التي يكتب فيها التاريخ لها نفس 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اختالف الـ

Page 23: Ldap (Arabic)

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مشاكل عند عمل

Page 24: Ldap (Arabic)

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

Page 25: Ldap (Arabic)

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

Page 26: Ldap (Arabic)
Page 27: Ldap (Arabic)

وعند تنفيذ االمر

LDAPsearch –x | less

مثال :

groupالى هذه الـ userضيف ثم ن developersتسمى groupنقوم بعمل

posix groupمن النوع new groupملحوظة : سنجعل الـ

لهم UID/GIDتسمح بتخصيص files/groupsتطبق على الـ Permissionsهي POSIXوالـ

Page 28: Ldap (Arabic)
Page 29: Ldap (Arabic)

Userوالضافة

Page 30: Ldap (Arabic)

التي يمكن اضافتها والتعديل عليها attributesوهناك العديد من الـ

Page 31: Ldap (Arabic)

اخرى عن عن طريق attributesضافة ويمكن ا

Page 32: Ldap (Arabic)

command lineعن طريق الـ ldif fileنقوم االن باستعراض هذه المعلومات من الـ

Page 33: Ldap (Arabic)

سنأخذ مثال اخر عملي مع مزيد من التفاصيل . سنقوم االن بعمل :

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

Page 34: Ldap (Arabic)

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سنجد االن ان الـ

Page 35: Ldap (Arabic)

قد تم حذفه ايضا ”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

Page 36: Ldap (Arabic)

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

Page 37: Ldap (Arabic)

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

Page 38: Ldap (Arabic)

administration serverالذي سيعمل عليه الـ portوالـ

قد تم تخزين الـ setupد انتهاء الـ فسنجد انه بع Installationفي عمل الـ option : keepcacheونتيجة استخدام الـ

configuration parametrs في هذا المسار

وباستعراض محتويات الملف سنجد التالي

Page 39: Ldap (Arabic)

plain text passwordsيجب حماية هذا الملف النه يحتوي علي الـ

DN والـ domainالصحيحة مثل الـ configurationبه الـ LDAP.confكما يجب التأكد من ان

Page 40: Ldap (Arabic)

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والـ

Page 41: Ldap (Arabic)

”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/“نقوم بفتح الملف

Page 42: Ldap (Arabic)

عن طريق 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وللتأكد من النتيجة نستخدم الـ

Page 43: Ldap (Arabic)

اذا فالخالصة :

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ثم نقوم بعمل الـ

Page 44: Ldap (Arabic)
Page 45: Ldap (Arabic)
Page 46: Ldap (Arabic)
Page 47: Ldap (Arabic)

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وهذا ينطبق ايضا على عملية الـ

Page 48: Ldap (Arabic)

Error logs pathستظهر في هذا الـ errorsفي حالة وجود

# tail -f /var/log/dirsrv/admin-serv/error

Change log level/setting consoleعن طريق الـ log levelوالـ Logsيمكن تغيير اعدادات الـ

Page 49: Ldap (Arabic)

View logs consoleعن طريق الـ logsيمكن عرض الـ

Page 50: Ldap (Arabic)

Backup directory server GUI Backup

عن طريق directory serverللـ backupنستطيع عمل

Page 51: Ldap (Arabic)
Page 52: Ldap (Arabic)

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

Page 53: Ldap (Arabic)

الجديد قد تم عمله 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

Page 54: Ldap (Arabic)

لذلك 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وهذه صورة للـ

Page 55: Ldap (Arabic)

CAالموجوده لدي جميع شركات الـ public keysاو الـ certificatesعلي جميع الـ browserيحتوي الـ

Page 56: Ldap (Arabic)

OPENSSL files توجد في المسار keysجميع الـ

يوجد في المسار opensslالخاص بالـ configuration fileالـ

Page 57: Ldap (Arabic)

/etc/pki/tls/openssl.cnf

fileفي هذا الـ configurationواهم الـ

Page 58: Ldap (Arabic)

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والـ

Page 59: Ldap (Arabic)

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

Page 60: Ldap (Arabic)

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عند الدخول على

Page 61: Ldap (Arabic)

جديدة فقط ويمكن تغييرها بعد 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وهناك

Page 62: Ldap (Arabic)

passwordهذه الـ يجب حماية هذه الملفات باستخدامالى اخر واستخدامه لذلك systemويسهل نقل هذه الملفات من

عن طريق CA certificateنقوم االن باضافة الـ

Page 63: Ldap (Arabic)
Page 64: Ldap (Arabic)
Page 65: Ldap (Arabic)

CA certificateللـ importقمنا االن بعمل

CSRنقوم بالخطوة التاليه وهي عمل

Create CSR

Page 66: Ldap (Arabic)

والتي قمنا بعملها اول مرة DBالخاصه بالتعديل على ملفات الـ passwordسيطلب الـ

Page 67: Ldap (Arabic)

”/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

Page 68: Ldap (Arabic)

CA private keyعندما قمنا بعمل CAوهي التي قمنا سابقا بعملها للـ Passwordالحظ انه طلب الـ

راجع هذه الخطوة

تم وضع بعض البيانات بداخله index.txtالحظ ان ملف الـ

وهذا معناه انه ال يمكن parameter : unique subjecyيحتوي على index.txt.attrاخر يسمى fileثم قام بعمل

server nameان يحصلوا على نفس الـ certificate 2الي

جديد ووضع بداخله قيمة جديده serial fileكما نالحظ انه قام بعمل

ldap serverالجديدة الى الـ certificateبارسال الـ CAثم يقوم الـ

Page 69: Ldap (Arabic)

LDAP Server add the signed certificate

new certificateللـ Installونقوم بعمل ldap serverنعود االن الى الـ

Page 70: Ldap (Arabic)
Page 71: Ldap (Arabic)
Page 72: Ldap (Arabic)

CA خاصه به معتمده من الـ certificateيمتلك ldap serverوبذلك اصبح الـ

لكي يستخدمها certificateبالـ ds-389يتبقى ان نقوم بتعريف الـ

Configure 389-ds with certificate

Page 73: Ldap (Arabic)

dirsrv serviceللـ restartثم نقوم بعمل

DBقراءة الـ daemonحتى يستطيع الـ restartاثناء الـ Passwordامة : يجب ادخال الـ ملحوظة ه

Page 74: Ldap (Arabic)

في كل مرة وهي كالتالي passwordهناك طريقة اخرى لتفادي طلب الـ

# echo "Internal (Software) Token:P@ssw0rd" > /etc/dirsrv/slapd-SRV1/ pin.txt

قد تم فتحه ldapsالخاص الـ port 636سنجد ان الـ open portsنقوم االن باستعراض الـ

portعلى هذا الـ firewallنقوم بتفعيل الـ

# system-config-firewall-tui

Page 75: Ldap (Arabic)

Allow Certificate to clients clientsالى جميع الـ certificate (public key)الخطوة االخيرة وهي اتاحة الـ

له Installبعمل ، فنقوم https serverوتتم هذه الخطوة عن طريق الـ

# Yum install httpd

ثم

Page 76: Ldap (Arabic)

http directoryالـ certificateنقوم االن بنسخ الـ

# cp /etc/pki/cacert.pem /var/www/html/

firewall في الـ Http للـ allowثم نقوم بعمل

Page 77: Ldap (Arabic)

Authenticate client from LDAP

nss-pam-ldapdوالـ pam_ldapوالـ openldap-clients package للـ Installعمل تأكد من

1- Configure LDAP authentication

tuiو GUIوهناك طريقتين لذلك :

[root@client1 ~]# system-config-authentication

Page 78: Ldap (Arabic)

directoryوتضعها في هذا الـ clientالي الـ ldap serverمن الـ cacert.pemللـ Importهذه الخطوة تقوم بعمل

/etc/openldap/cacerts

ldap.confولكن يجب التعديل على ملف الـ manualويمكن ان نقوم بهذا بشكل

# vim /etc/openldap/ldap.conf

tuiالطريقة االخرى باستخدام الـ

# authconfig-tui

Page 79: Ldap (Arabic)

serverيستطيع االتصال بالـ clientنتأكد من ان الـ -2

[root@client1 ~]# ldapsearch -x -ZZ -D "cn=Directory Manager" -W

بياناتهو ldapتظهر نتيجة االتصال بالـ

Page 80: Ldap (Arabic)

ستظهر لنا بعض االختيارات 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لذلك فاما ان نستخدم الـ

Page 81: Ldap (Arabic)

كما في الصورة التالية tlsفقط بدون الـ sslاو نستخدم الـ

Page 82: Ldap (Arabic)

اذا الخالصة هي التالي

CA server1- Create Private key

2- Create CA certificate

Directory server3- Create CSR

Client

6- Import CA Certificate