快速部署ldap服務


                 快速部署ldap服務

                                     作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

一.LDAP概述

1.什么是目錄服務
  (1)目錄是一類為了瀏覽和搜索數據二十幾的特殊的數據庫,例如:最知名的的微軟公司的活動目錄(active directory)就是目錄數據庫的一種。目錄服務時按照梳妝形式存儲信息的,目錄包含基於屬性的描述性信息,並且支持高級的過濾功能。
  (2)一般來說,目錄不支持大多數事務性數據庫所支持的高吞吐兩盒復雜的更新操作。目錄進行更新操作,可以說是要么全部,要么都不的原子操作,目錄服務適合的業務應用在於提供大量的查詢和搜索操作。
  (3)為了保證目錄數據的可用性和卡可靠性,她們在確保提供快速的查詢和搜索操作的同事,還提供了主從服務器同步目錄數據信息的能力,這相當於傳統的Mysql數據庫的主從同步一樣,可以最大限度的確保基於目錄業務的持續可用性。
  (4)廣義的目錄服務概念,可以有多重不同的方式來提供目錄服務,不同的目錄所允許存儲的信息是不同的,在信息如何被引用,查詢,更新以及防止未經守群的訪問等問題上,不同的目錄所允許存儲的信息是不同的,在信息如何被引用,查詢,更新以及防止未經授權的訪問等問題上,不同的目錄的處理方式也有諸多的不同。一些目錄服務時為本地的,只提供受限的服務,(比如,單機上的finger服務)。另一些服務時大范圍的(global),提供廣闊得多的服務(比如面向整個因特網)。大范圍的服務通常是分布式的,這也就意味着數據是分布在多台機器上的,這些計數器一起來提供目錄服務。典型的大范圍服務定義一個統一的名稱空間(namespace)來給出一個相同的數據試圖(data view),而不管你相對於數據所在的位置。DNS是一個典型的大范圍分布式目錄服務的例子。

2.什么是ldap
  (1)LDAP是Lightweight Directory Access Protocol (輕量級目錄訪問協議)的縮寫。正如它的名字所表明的那樣,它是一個輕量級的目錄訪問協議,特質基於X.500的目錄訪問協議的簡化版本。LADP運行在TCP/IP或者其他的面向連接的傳輸服務至上。LADP完整的技術規范由RFC2251 “The Lightweight Directory Access Protocol(V3)”和其他幾個在RFC3377中定義的文檔組成。我們不需要研究的那么深,因為我們又不會對它進行二次開發,我們運維只要能了解到它的目錄結構,以及它的用法就OK了,因此我們可以用兩句話總結以上內容:
  (2)LADP是輕量目錄訪問協議(Lightweight Directory Access Protocal)的縮寫;
  (3)LADP標准實際上是在X.500標准基礎 上產生的一個簡化版本;

3.什么是X.500
  (1)X.500由ITU-T和ISO定義,它實際上不是一個協議,而是有一個協議族組成,包括了從X.501到X.525等一系列非常完整的目錄服務協議。X。500主要具備以下特征:
    a>.分散維護
      運行X.500的每一個站點只負責人本地目錄部分,可以立即更新和維護操作;
    b>.搜索性能
      X.500具有強大的搜素功能,支持用戶建立的任意復雜查詢。
    c>.單一全局命名空間
      類似於DNS,X.500為用戶提供單一同性命名空間(Single Homogeneous Namespace)。與DNS相比,X。500目錄中定義了信息結構,運行本地擴展。
    d>.結構化信息結構
      X.500目錄中定義了信息結構,運行本地擴展。
    e>.基於標准的目錄服務
      由於X.500可以被用於建立一個基於標准的目錄,因此在某種意義上,請求應用目錄信息(電子郵件,資源自動分配器,特定目錄工具)的應用程序就能訪問重要且有簡直的信息。
  (2)從技術上來說,LADP是一個到X.500目錄服務的目錄訪問協議,X.500是一個OSI目錄協議。最初,LADP客戶單通過網關(gateway)訪問X.500目錄服務。在客戶和網關之間運行LADP和X.500目錄訪問協議(Directory Access Protocol,DAP),而X.500目錄訪問協議時位於網關和X.500之間的。DAP是一個重量級的協議,在整個OSI協議棧上進行操作,而且需要占用大量的計算資源。LADP被設計的在TCP/IP層上操作,以小得多的代價實現了大多數DAP的功能。
  (3)雖然LADP仍舊可以通過網關訪問X.500目錄服務器,但是現在通常都是在X.500服務器上直接實現LADP。
  (4)單獨的LADP守護程序sladp,可以被看做是一個輕量級的X.500目錄服務器。也就是說,他沒有實現X.500完整的DAP協議。作為一個輕量級的目錄服務器,sladp實現的僅僅是X.500模型的一個子集。我們可以理解是LADP是X.500的一個簡單的實現。

4.LADP與X.500的相同點
  LADP是X.500標准中的目錄訪問協議DAP的一個子集,可用於建立X.500目錄。因此這兩個目錄技術標准有着許多的共同之處:
    a>.在平台上,都實現了一個通用的平台結構,提供了一個操作系統和應用程序需要的信息服務類型,可以被許多平台和應用程序接收和實現;
    b>.在信息模型上,都是用了項,對象類,屬性等概念的模式來描述信息;
    c>.在命名空間上方面,都是用了目錄信息結構和層次命名模型;
    d>.在功能模型上,都使用了相似的操作命令來管理目錄信息;
    e>.在認證框架方面,都可以實現用戶名稱和密碼,或者基於安全加密方式的認真機制;
    f>.早靈活性上,他們的目錄規模都可大可小,達到全球目錄樹,小到只有一台目錄服務器;
    g>.在分布性方面,目錄信息都可以分布在多個目錄服務器中,這些服務器可以由各個組織管理,既保證了目錄信息總體結構的一致性,又滿足了分級管理的需要。

5.LADP與X.500的差別
  a>.LADP基於Internet協議,X.500基於OSI(開放式系統互聯)協議,建立在應用層上的X.500目錄訪問協議DAP,需要在OSI會話層和表示層上進行許多的建立連接和包處理的任務,需要特殊的網絡軟件實現對網絡的訪問;LADP則直接運行在更簡單和更通用的TCP/IP或其他可靠的傳輸層協議上,避免了在OSI會話和表示層的開銷,是鏈接的建立和包的處理更簡單,更快,對於互聯網和企業網應用更理性。
  b>.LADP協議更為簡單,LADP繼承了X.500最好的特性,同時去掉了它的復雜性,LADP通過使用查找操作實現列表方式和讀操作,另一方面省去了X.500中神貓的和很少使用的服務控制和安全特性,只保留常用的特性,簡化了LADP的實現。
  c>.LADP通過引用機制實現分布式訪問,X.500 DSA通過服務器之間的鏈操作實現分布式的訪問,這樣查詢的壓力九中與服務器端;而LADP通過客戶端API實現分布式操作(對於應用透明)平衡了負載;
  d>.LADP實現具有低費用,已配置和一管理的特點,經過性能測試,LADP比X.500㕛更少的響應時間;LADP提供了滿足應用程序對目錄服務所需求的特性。

6.LADP中的常用名詞縮寫及含義
  (1)dc 
      Domain Componet 域名的部分,其格式是講完整的域名分成幾個部分,比如域名為“caiq.org”,變成dc=caiq,dc=org
  (2)uid 
      User Id 用戶ID,如“yinzhengjie”
  (3)ou 
      Organization Unit 組織單位,類似於Linux文件系統中的子目錄,它是一個容器對象,組織單位可以包含其他各種對象(包括其他組織單元),如“中國檢驗檢疫科學研究院”
  (4)cn 
      Common Name 公共名稱,如“尹正傑”
  (5)sn 
      Surname 姓,如“尹”
  (6)dn 
      Distinguished Name 唯一辨別名,類似於Linux文件系統中的絕對路徑,每個對象都有一個文藝的名稱,如“uid=yinzhengjie,ou=中國檢科院,dc=caiq,dc=org”
  (7)rdn 
      Relative dn 相對辨別名,類似於文件系統中的相對路徑,它是與目錄樹結構無關的部分,如“uid=yinzhengjie”或“cn=尹正傑”
  (8)c 
      Country 國家,如“CN”或“US”等
  (9)o 
      Organization 組織名,如:“中華人民共和國質檢總局”

7.LADP目錄服務的特點
  LDAP目錄服務具有下列特點:
    a>.LDAP是一個跨平台的,標准的協議,近幾年來得到了業界廣泛的認可;
    b>.LADP的結構用樹形結構來表示,而不是用表格。因此不用SQL語句維護了;
    c>.LADP提供了靜態數據的快速查詢方式,但在寫數據方面並不擅長;
    d>.LADP服務可以使用基於“推或""的復制信息技術,用簡單的活基於安全證書的安全認證,復制部分或全部數據,既保證了數據的安全性,又提高了數據的訪問效率;
    e>.LDAP是一個安全的協議,LDAP v3支持SASL(Simple Authentication and Securityh Layer),SSL(Secure Socket Layer)和TLS(Transport Layer Security),使用認證來確保事物的安全,另外,LDAP提供了不同層次的訪問控制,以限制不同用戶的訪問權限;
    f>.LADP支持一類數據存儲,LADP存儲的數據可由是文本資料,二進制圖片等;
    g>.Client/Server模型:Server用於存儲樹,Client提供操作目錄信息數的工具,這些工具可以將數據庫的內容以文本格式(LDAP數據交換格式,LDIF)呈現在我們的面前;
    h>.LDAP是一種開放Internet標准,LADP協議時跨平台的Internt協議,它是基於X.500標准的,與X.500不同,LADY支持TCP/IP(即可以分不知部署)

8.LDAP是怎樣工作的?
    LDAP目錄服務器是基於客戶/服務器模式的。一個或者多個LDAP服務器包含着組成整個目錄信息樹(DIT)的數據。客戶連接到服務器並且並發一個請求(request)。然后服務器要么以一個回答(answer)予以回應,要么給出一個指針,客戶可以通過此指針獲取到所需的數據(通常,該指針是指向另一個LDAP服務器)。無論客戶連到哪個LDAP服務器,它看到的都是同一個目錄視圖(view)。這是LDAP這類全局目錄服務的一個重要特征。

 

二.LDAP目錄結構

LDAP目錄服務時通過目錄數據庫來存儲網絡信息來提供目錄服務的,為了方便用戶迅速查找定位信息,目錄數據庫是一目錄信息樹(Directory nformation Tree,縮寫為DIT)為存儲方式的樹形存儲結構,目錄信息樹及其相關概念構成了LDAP協議的信息模型。
  a>.在LADP中,目錄是按照樹形結構組織----目錄信息樹,它是一個主要進行讀操作的數據庫;
  b>.DIT由條目(Entry)組成,條目相當於關系數據庫中的表的記錄;
    條目是具有分辨名DN(Distinguished Name)的屬性-值對(Attribute-value,簡稱AV)的集合。在UNIX文件系統中,最頂層是根目錄(root),LDAP目錄通常也用ROOT做根,通常稱為BaseDN。因為歷史(X.500)的原因,LDAP目錄用OU(Organization Unit)從邏輯上把數據分開來。Ou也是一種條目,容器條目。Ou下即使整整的用戶條目。

1.LDAP目錄結構的相關術語
  a>.什么是DN
      DN(Distinguished Name),即分辨名。在LDAP中,一個條目的分辨名叫做"DN",DN是該條目在整個樹中的唯一名稱標識,DN相當於關系數據庫表中的關鍵字(Primary Key);它是一個識別屬性,通常用於檢索。
  b>.DN的兩種設置
      基於cn(姓名) cn=尹正傑,ou=中國檢科院,dc=caiq,dc=org,dc=cn,最常見的cn是從/etc/group轉來的條目;
      基於uid(User ID)uid=yinzhengjie,ou=中國檢科院,dc=caiq,dc=org,dc=cn,最常見的uid是/etc/passwd轉來的條目;
  c>.Base DN
      LADP目錄樹的最頂部就是根,也就是Base DN。
  d>.LDIF格式
      LDIF格式是用於LDAP數據導入,導出的格式。LDIF是LDAP數據庫信息的一種文本格式。

2.LADP目錄信息模型
  a>.什么樣的信息可以存儲在目錄當中?
      LDAP的信息模型是基於條目的(entry)。一個條目就是一些具有全局唯一的標識名(Distinguished Name,簡寫做DN)的屬性的集合。DN用於無二義性的紙袋一個唯一的條目。條目的每一個屬性都有一個類型(type),一個或者多個值(value)。類型往往是特定字符串的簡寫,比如用“cn”指代“common name”,或是"mail"指代電子郵件地址。值(value)的語法依賴於類型(type)。比如,類型為cn的屬性可能包含值"尹正傑"。類型為mail的屬性可能包含值“yinzhengjie@caiq.gov.com”。類型為jpegPhoto的屬性可能包含二進制格式的JPEG圖像。、

  b>.信息在目錄中是如何組織的?
      在LDAP中,條目是按樹狀的層次結構組織的。傳統上,這個機構旺旺是代理界限或組織界限的反應。代表國家的條目位與整個目錄樹的頂層。之下的條目則代表各個州以及國家性的組織。在下面的條目則代表着組織單位,個人,打印機,文件,或者你所能想到的其他的東西。 
      目錄是也可以按照因特網域名組織結構,因為它允許按照DNS對目錄服務進行定時,這種命名方式正變得越來越受歡迎。下圖是按照域名進行組織的一個LADP目錄樹,相比傳統的命名方式更加讓用戶易於接受。
      另外,LDAP允許你通過使用一種叫做objectClass的特殊屬性來控制哪些屬性是條目所必須的,哪些屬性是條目可選的。objectClass屬性的值是由條目所必須遵守的方案(schema)來定義的。
  c>.信息是如何被引用的?
      一個條目是通過它的標識名來引用的。而標識名(Relative DistinguishedName 或者RDN)是由標識名和它的父條目名連在一起構成的。
  d>.信息是如何被訪問的?
      LDAP定義了一個查詢和更新目錄的操作,支持的操作包括從目錄中添加和刪除條目,更改一游的條目,更改已有的的名字。然而,大多數情況下LDAP是用於搜索目錄中的信息的。通過指定搜索過濾器,LDAP可以在目錄的相關部分搜索想相符的條目。滿足過濾條件的每一個條目都能收到請求消息。
  e>.怎樣保護信息不受未經授權的訪問?
      一些目錄服務不提供保護,允許信息對任何人可見。LDAP提供了一套機制來對客戶進行身份確認,或者讓客戶證明他擁有連接到服務器的身份,這無疑為對服務器進行全方位的訪問控制鋪平了道理,從而確保了服務器上所包含信息的安全。LDAP也支持privacy和integrity的安全服務。

 

三.LDAP的配置模式

LDAP服的結果重要功能如下:
  a>.基本的目錄查詢服務;
  b>.目錄查詢代理服務;
  c>.異機復制的數據;
  d>.分布式的目錄服務

1.本地基本的目錄查詢服務
  在這種配置模式下,你的slapd只為你本地域提供目錄服務。他不會以任何方式與別的目錄服務器交互。

2.帶有指針(Referrals)的本地目錄服務
  即目錄查詢代理服務,類似DNS轉發服務器
  在這種配置模式下,你為你的本地域運行了一個LDAP服務器,並且將它配置成為當客戶的請求超出你的本地域的處理能力的時候能夠返回一個指針,該指針指向一個具備處理客戶請求能力的更高級的服務器地址。你可以自己運行這一服務,也可以使用已提供給你的一個。
  如果你想運行本地目錄服務並且參與全局的目錄,那么運行這種模式。例如:openldap作為微軟活動目錄的代理查詢服務。。

3.同步復制的目錄服務
  slurpd守護成是用來將主slapd上的改變傳播到一個或多個從屬的slapd上。 
  這種配置模式可以在前面的兩種配置模式之一和起來使用,在前面的兩種情況中,單獨的slapd不能提供足夠的可用性和可靠性。

4.分布式的目錄服務
  在這種配置模式下,本地的服務被分割成多個更小的服務,每一個都可能被復制,並且通過上級(superior)或者下級(subordinate)指針(referral)粘合起來。

 

四.LDAP服務的應用領域

LDAP目錄服務,適用那些需要從不同的地點讀取信息,但是不需要經常更新的業務信息最為有用。
  LDAP的應用主要涉及一下幾種類型:
  1>.信息安全類:
    數字證書管理,授權管理,單點登錄。
  2>.科學計算類:
    DCE(Distributed Computing Environment,分布式計算環境),UDDI(Universal Description,Discovery and Integration,統一描述,發現和繼承協議)。
  3>.網絡資源管理類:
    MAIL系統,DNS系統,網絡用戶管理,電話號碼簿。
  4>.電子政務資源管理類:
    內網組織信息服務,電子服務目錄體系,人物基礎庫,法人基礎庫。
  我們單位基本上是用來來創建每個員工的財務賬號,這個賬號可以讓員工進行財務報銷使用。

 

五.安裝LDAP

1>.安裝openldap

[root@node202.yinzhengjie.org.cn ~]# yum -y install openldap openldap-servers openldap-clients
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package openldap.x86_64 0:2.4.44-20.el7 will be updated
---> Package openldap.x86_64 0:2.4.44-21.el7_6 will be an update
---> Package openldap-clients.x86_64 0:2.4.44-21.el7_6 will be installed
---> Package openldap-servers.x86_64 0:2.4.44-21.el7_6 will be installed
--> Processing Dependency: libltdl.so.7()(64bit) for package: openldap-servers-2.4.44-21.el7_6.x86_64
--> Running transaction check
---> Package libtool-ltdl.x86_64 0:2.4.2-22.el7_3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================
 Package                               Arch                        Version                              Repository                    Size
===========================================================================================================================================
Installing:
 openldap-clients                      x86_64                      2.4.44-21.el7_6                      updates                      190 k
 openldap-servers                      x86_64                      2.4.44-21.el7_6                      updates                      2.2 M
Updating:
 openldap                              x86_64                      2.4.44-21.el7_6                      updates                      356 k
Installing for dependencies:
 libtool-ltdl                          x86_64                      2.4.2-22.el7_3                       base                          49 k

Transaction Summary
===========================================================================================================================================
Install  2 Packages (+1 Dependent package)
Upgrade  1 Package

Total download size: 2.8 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
openldap-servers-2.4.44-21.el7 FAILED                                          
http://mirrors.cloud.aliyuncs.com/centos/7/updates/x86_64/Packages/openldap-servers-2.4.44-21.el7_6.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
(1/4): openldap-clients-2.4.44-21.el7_6.x86_64.rpm                                                                  | 190 kB  00:00:00     
(2/4): libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm                                                                       |  49 kB  00:00:00     
(3/4): openldap-2.4.44-21.el7_6.x86_64.rpm                                                                          | 356 kB  00:00:00     
(4/4): openldap-servers-2.4.44-21.el7_6.x86_64.rpm                                                                  | 2.2 MB  00:00:01     
-------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                      1.6 MB/s | 2.8 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : openldap-2.4.44-21.el7_6.x86_64                                                                                         1/5 
  Installing : libtool-ltdl-2.4.2-22.el7_3.x86_64                                                                                      2/5 
  Installing : openldap-servers-2.4.44-21.el7_6.x86_64                                                                                 3/5 
  Installing : openldap-clients-2.4.44-21.el7_6.x86_64                                                                                 4/5 
  Cleanup    : openldap-2.4.44-20.el7.x86_64                                                                                           5/5 
  Verifying  : openldap-servers-2.4.44-21.el7_6.x86_64                                                                                 1/5 
  Verifying  : openldap-2.4.44-21.el7_6.x86_64                                                                                         2/5 
  Verifying  : libtool-ltdl-2.4.2-22.el7_3.x86_64                                                                                      3/5 
  Verifying  : openldap-clients-2.4.44-21.el7_6.x86_64                                                                                 4/5 
  Verifying  : openldap-2.4.44-20.el7.x86_64                                                                                           5/5 

Installed:
  openldap-clients.x86_64 0:2.4.44-21.el7_6                            openldap-servers.x86_64 0:2.4.44-21.el7_6                           

Dependency Installed:
  libtool-ltdl.x86_64 0:2.4.2-22.el7_3                                                                                                     

Updated:
  openldap.x86_64 0:2.4.44-21.el7_6                                                                                                        

Complete!
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# yum -y install openldap openldap-servers openldap-clients
[root@node202.yinzhengjie.org.cn ~]# id ldap      #安裝成功后會生成ldap用戶。
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@node202.yinzhengjie.org.cn ~]# 

2>.拷貝數據庫配置文件

[root@node202.yinzhengjie.org.cn ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# chown ldap:ldap /var/lib/ldap/DB_CONFIG
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# ll -d /var/lib/ldap/DB_CONFIG 
-rw-r--r-- 1 ldap ldap 845 Jun 18 01:59 /var/lib/ldap/DB_CONFIG
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# cat  /var/lib/ldap/DB_CONFIG 
# $OpenLDAP$
# Example DB_CONFIG file for use with slapd(8) BDB/HDB databases.
#
# See the Oracle Berkeley DB documentation
#   <http://www.oracle.com/technology/documentation/berkeley-db/db/ref/env/db_config.html>
# for detail description of DB_CONFIG syntax and semantics.
#
# Hints can also be found in the OpenLDAP Software FAQ
#       <http://www.openldap.org/faq/index.cgi?file=2>
# in particular:
#   <http://www.openldap.org/faq/index.cgi?file=1075>

# Note: most DB_CONFIG settings will take effect only upon rebuilding
# the DB environment.

# one 0.25 GB cache
set_cachesize 0 268435456 1

# Data Directory
#set_data_dir db

# Transaction Log settings
set_lg_regionmax 262144
set_lg_bsize 2097152
#set_lg_dir logs

# Note: special DB_CONFIG flags are no longer needed for "quick"
# slapadd(8) or slapindex(8) access (see their -q option). 
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# cat /var/lib/ldap/DB_CONFIG        #DB_CONIFG中主要是關於Berkeley DB的相關的一些配置

3>.啟動OpenLDAP Server

[root@node202.yinzhengjie.org.cn ~]# systemctl start slapd
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# systemctl enable slapd
Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service.
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-06-18 02:01:32 EDT; 11s ago
     Docs: man:slapd
           man:slapd-config
           man:slapd-hdb
           man:slapd-mdb
           file:///usr/share/doc/openldap-servers/guide.html
 Main PID: 19568 (slapd)
   CGroup: /system.slice/slapd.service
           └─19568 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///

Jun 18 02:01:31 node202.yinzhengjie.org.cn systemd[1]: Starting OpenLDAP Server Daemon...
Jun 18 02:01:31 node202.yinzhengjie.org.cn runuser[19553]: pam_limits(runuser:session): wrong limit value 'unlimited ' for limit t… 'hard'
Jun 18 02:01:31 node202.yinzhengjie.org.cn runuser[19553]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
Jun 18 02:01:31 node202.yinzhengjie.org.cn runuser[19553]: pam_unix(runuser:session): session closed for user ldap
Jun 18 02:01:31 node202.yinzhengjie.org.cn slapd[19566]: @(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
                                                                 mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.../slapd
Jun 18 02:01:32 node202.yinzhengjie.org.cn slapd[19566]: tlsmc_get_pin: INFO: Please note the extracted key file will not be prote...sions.
Jun 18 02:01:32 node202.yinzhengjie.org.cn slapd[19568]: slapd starting
Jun 18 02:01:32 node202.yinzhengjie.org.cn systemd[1]: Started OpenLDAP Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]# systemctl status slapd        #slapd即standard alone ldap daemon,該進程默認監聽389端口

4>.查看監聽端口

[root@node202.yinzhengjie.org.cn ~]# ss -ntl
State       Recv-Q Send-Q                        Local Address:Port                                       Peer Address:Port              
LISTEN      0      128                                       *:22                                                    *:*                  
LISTEN      0      100                               127.0.0.1:25                                                    *:*                  
LISTEN      0      128                                       *:389                                                   *:*                  
LISTEN      0      128                                      :::22                                                   :::*                  
LISTEN      0      128                                      :::389                                                  :::*                  
[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# 

 

六.設置ldap管理員(root)密碼

1>.生成一個LDAP管理用戶root密碼

[root@node202.yinzhengjie.org.cn ~]# slappasswd       #使用改名了,配置你的密碼,他會根據計算,給你算出一個字符串。
New password:         #我這里輸入的密碼為"yinzhengjie"
Re-enter new password: 
{SSHA}demsoYhw/y4Rz9Pgbpv6KBBzuVQ1t53J            #這個字符串就是根據你輸入的密碼得到的,一會我們會用到他。
[root@node202.yinzhengjie.org.cn ~]# 

2>.自定義LDAP配置屬性

[root@node202.yinzhengjie.org.cn ~]# cat passwd.ldif    #這里的文件名稱隨意起,但文件后綴最好以 ldif 結尾。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW:{SSHA}demsoYhw/y4Rz9Pgbpv6KBBzuVQ1t53J
[root@node202.yinzhengjie.org.cn ~]# 



以上配置文件關鍵參數說明:
    ldif即LDAP Data Interchange Format,是LDAP中數據交換的一種文件格式。文件內容采用的是key-value形式,注意value后面不能有空格。
    上面內容中dn即distingush name
    olc即Online Configuration,表示寫入LDAP后不需要重啟即可生效
    changetype: modify表示修改一個entry,changetype的值可以是add,delete, modify等。
    add: olcRootPW表示對這個entry新增了一個olcRootPW的屬性
    olcRootPW:{SSHA}demsoYhw/y4Rz9Pgbpv6KBBzuVQ1t53J指定了屬性值

3>.初始化LDAP配置

[root@node202.yinzhengjie.org.cn ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f passwd.ldif     #使用ldapadd命令講我們上一步自定義的文件屬性寫入LADP中
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"

[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# 

4>.導入schema

[root@node202.yinzhengjie.org.cn ~]# ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=collective,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=corba,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=core,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
        additional info: olcAttributeTypes: Duplicate attributeType: "2.5.4.2"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=duaconf,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=dyngroup,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=java,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=misc,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=openldap,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=pmi,cn=schema,cn=config"

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=ppolicy,cn=schema,cn=config"

[root@node202.yinzhengjie.org.cn ~]# 
[root@node202.yinzhengjie.org.cn ~]# ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done      #schema包含為了支持特殊場景相關的屬性,可根據選擇導入,這里先全部導入

 

七.設定默認域

1>.先使用slappasswd生成一個密碼

[root@node202.yinzhengjie.org.cn ~]# slappasswd
New password:       #我這里輸入的密碼為"ADMIN"
Re-enter new password: 
{SSHA}76TjdXHIDRFDRzfyi0t/tsYLmkyY3TPD
[root@node202.yinzhengjie.org.cn ~]# 

2>.自定義LDAP配置屬性

[root@node202.yinzhengjie.org.cn ~]# cat domain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=yinzhengjie,dc=org,dc=cn" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=yinzhengjie,dc=org,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=yinzhengjie,dc=org,dc=cn


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW:{SSHA}76TjdXHIDRFDRzfyi0t/tsYLmkyY3TPD  #這里需要用上面生成的密碼來替換


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=yinzhengjie,dc=org,dc=cn" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=yinzhengjie,dc=org,dc=cn" write by * read
[root@node202.yinzhengjie.org.cn ~]# 



  olcAccess即access,該key用於指定目錄的ACL即誰有什么權限可以存取什么
  olcRootDN設定管理員root用戶的distingush name
  注意替換上面文件內容中cn為具體的域信息
  olcRootPW用上面新生成的密碼替換

3>.使用咱們上一步自定義的ldif配置文件,寫入ldap服務器

[root@node202.yinzhengjie.org.cn ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

[root@node202.yinzhengjie.org.cn ~]# 

 

八.添加基本目錄

1>.自定義LDAP配置屬性

[root@node202.yinzhengjie.org.cn ~]# cat basedomain.ldif
dn: dc=yinzhengjie,dc=org,dc=cn
objectClass: top
objectClass: dcObject
objectclass: organization
o: yinzhengjie org cn
dc: yinzhengjie

dn: cn=Manager,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: Group
[root@node202.yinzhengjie.org.cn ~]# 

2>.使用咱們上一步自定義的ldif配置文件,寫入ldap服務器

[root@node202.yinzhengjie.org.cn ~]# ldapadd -x -D cn=Manager,dc=yinzhengjie,dc=org,dc=cn -W -f basedomain.ldif
Enter LDAP Password:     #密碼為"ADMIN"
adding new entry "dc=yinzhengjie,dc=org,dc=cn"

adding new entry "cn=Manager,dc=yinzhengjie,dc=org,dc=cn"

adding new entry "ou=People,dc=yinzhengjie,dc=org,dc=cn"

adding new entry "ou=Group,dc=yinzhengjie,dc=org,dc=cn"

[root@node202.yinzhengjie.org.cn ~]# 

3>.測試是否成功

[root@node202.yinzhengjie.org.cn ~]# ldapsearch -LLL -W -x -D "cn=Manager,dc=yinzhengjie,dc=org,dc=cn" -H ldap://localhost -b "dc=yinzhengjie,dc=org,dc=cn"
Enter LDAP Password:   #密碼為"ADMIN"
dn: dc=yinzhengjie,dc=org,dc=cn
objectClass: top
objectClass: dcObject
objectClass: organization
o: yinzhengjie org cn
dc: yinzhengjie

dn: cn=Manager,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: Group

[root@node202.yinzhengjie.org.cn ~]# 

 

九.LDAP基本使用

  可以使用ldapadmin作為LDAP的圖形管理工具,下載地址:http://www.ldapadmin.org/download/ldapadmin.html

 

 

  參考鏈接:https://blog.frognew.com/2017/05/openldap-install-notes.html#ldapadmin。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM