服務器搭建八——LDAP目錄服務器

1.測試環境

a) 安裝在虛擬機上的centos6.9
  b) openLADP

2.LDAP概述

LDAP 是輕量級目錄訪問協議的簡稱(Lightweight Directory Access Protocol).用于訪問目錄服務。它是 X.500 目錄訪問協議的移植,但是簡化了實現方法。看到目錄服務器我的第一反應就是想到書的目錄和檢索功能,再就是圖書館的圖書放置,進而想到yahoo的在一開始的網站導航功能。那么到底什么是目錄服務,已經LDAP是什么?
  和我的第一反應一樣,目錄服務就是信息查詢服務,實際上是一個數據庫,在這個數據庫里面存儲了網絡資源的信息,包括資源的位置、管理。數據信息采用的樹狀的層次結構存儲。
  含有目錄數據庫,提供給用戶查詢、使用信息的計算機就是目錄服務器。X.500是一套目錄服務標準,定義了一個機構在全局范圍內共享名稱和與名稱相關聯的數據。X.500采用層次結構,其中的管理域可以提供這些域內的用戶和資源信息,并定義了強大的搜索功能,因此查詢變得更簡單。由于X.500目錄服務協議過于復雜,因此開發了LDAP(輕量級的目錄訪問協議)。
  LDAP目錄存儲和組織的基本數據結構稱為條目,每個條目都有唯一的標識符,并有一些屬性,就類似數據庫中每一行代表一條數據,并且有一項是唯一標識。但是LDAP比數據庫簡單很多,并且常用于查詢(也就是讀取),寫操作不常使用。
  目錄服務和數據庫的差別:
  a)目錄查詢操作比關系數據庫有更高的效率,但是更新效率比關系數據庫低
  b) 目錄不支持關系數據庫那樣的復雜查詢,比如兩個表的連接。
  c) 目錄不支持多操作的事物完整性,沒有方式確認一些操作是全部成功還是全部失敗
  d) 目錄能夠更好和更靈活的支持子查詢和匹配查詢
  e) 目錄協議更適合應用于廣域網,比如因特網或者大型公司的網絡
  f) 目錄的管理,配置,和調試比關系型數據庫更簡單
  g) 在使用關系數據庫之前,必須首先定義表結構(模式)才可以進行操作。而目錄中所使用的模式是由 LDAP 定義好的一系列類組成的。對于目錄中的每條記錄中必須屬于其中的一個類或者多個類。這些類定義了該記錄中可以存儲的信息。
  h) 目錄以對象的形式存儲數據。信息被組織成樹型結構。
  i) 目錄服務支持分布式存儲結構,容易實現數據的擴展,能滿足大容量存儲的要求。
  j)ACL控制表對LDAP服務器中的數據進行安全管理。ACL是一種靈活方便的用戶訪問權限控制方法。LDAP 是一個標準的,開放的協議,具有平臺無關性。不會像關系數據庫之間互不兼容的問題。

四種模型:

信息模型:描述 LDAP 中信息的表達方式及數據的存儲結構
LDAP 信息模型包含三部分 Entries Attributes Values (條目 屬性 值)
Entry:Directry 中最基本的信息單元,Entry 中所包含的信息描述了現實世界中的一個真實的對象,在目錄系統中它可以理解為,目錄樹中的一個節點 。在目錄中添加一個 Entry 時,該 Entry 必須屬于一個或多個 object class ,每一個 object class 規定了該 Entry 中必須要包含的屬性,以及允許使用的屬性。Entry 所屬的類型由屬性 objectclass 規定。每一個 Entry 都有一個 DN(distinguished name) 用于唯一的標志 Entry 在directory 中的位置。RDN: 是目錄樹中節點的相對分辨名。如 :People節點的DN:ou=People,dc=example,dc=com而該節點的 RDN:ou=People。
Attribute: 每個 Entry 都是由許多 Attribute 組成的。每一個屬性(Attribute)描述的是對象的一個特征。

模型結構

  命名模型:描述數據在LDAP目錄中如何進行組織與區分

層次結構

  上圖是一個典型的目錄結構
  第一個節點 DN 命名為:dn:dc=example,dc=com
  第二個節點 DN 命名為:dn:ou=People,dc=example,dc=com
  第三個節點 DN 命名為:dn:uid=bjensen,ou=people,dc=example,dc=com
  我們說每一個 Entry 的 DN 是唯一的,就是因為這種數形結構決定了,從根節點到其它
任何一個節點的路徑是唯一的。
  RDN:在 DN 中最左邊的內容稱為相對域名。如 ou=People,dc=example,dc=com其 RDN 為 ou=People對于共享同一個父節點的所有節點的 RDN 必須是唯一的。如果不屬于同一個節點則節
點的 RDN 可以相同。
  功能模型:定義了LDAP中有關數據的操作方式,類似于關系型數據庫SQL語句。
  查詢類操作:搜索,比較
  更新操作:添加條目,刪除條目,修改條目,修改條目名
  認證操作:綁定,解綁定,放棄
  其他操作:
  安全模型:描述如何保證LADP目錄中的數據安全
  LDAP 中的安全模型主要通過身份認證、安全通道和訪問控制(ACL)來實現
  LDAP 是一個面向連接的協議,在能夠對 LDAP 目錄進行任何操作之前,LDAP 客戶端必須獲得一個到 LDAP 服務端的一個連接,在這個過程中需要對 LDAP 客戶端的身份進行驗證,這一過程可以理解為用戶綁定。
  LDAPV2 只支持簡單的密碼驗證。
  LDAPV3 實現了 SASL 安全框架,SASL 為多種驗證協議提供了一種標準的驗證方法,對于不同的驗證系統,可以實現特定的 SASL 機制。SASL 機制代表了一種驗證協議。在用戶通過驗證之后,可以為該用戶分配附加的權限,比如一些用戶只能查看特定的 Entry,而不能修改。一些用戶可以查看并且修改所有的 Entry 等。這一過程可以理解為訪問控制。

LDIF

通過一個文本文件,用來描述目錄數據,可以將目錄服務器中的數據導出到一個 LDIF文件中,并且可以將 LDIF 文件中的數據導入到另一個目錄服務器。即使這兩個目錄服務器內部使用的是不同的數據庫格式。
有兩種類型的 LDIF 文件,第一種用來描述 Directory 目錄數據的,第二種包含更新語句,用于更新現有的 Directory 條目數據。

常用LADP協議的產品:

eTrust Directory 提供主干的目錄服務,可以滿足大規模在線的業務應用所帶來的最為緊迫的需求支持LADPv3目錄訪問。
  Active Directory 微軟的域服務,如果對windows比較熟悉應該使用過。
  Apache directory server:ApacheDS 的安裝比較簡單,沒有什么特殊的設置。在 ApacheDS 安裝完成后要啟動 ApacheDS服務。路徑如下:控制面板---? 管理工具---?服務--?Apache Directory serverApacheDS 的監聽端口默認為 10389
  Sun directory server:屬于SUN ONE 系統產品的一種。
  openDS一個開源的基于LDAP和DSML標準的Directory service。Directory service不僅包括Directory server,還有其它與directory相關的基本service:directory proxy、virtual dirctory、namespace distribution和數據同步Directory server是一個可以通過網絡訪問信息分級存儲的數據庫。OpenDS 只 能用 在 linux 操 作 系 統 。該 項目 的 地 址為 :http://www.opends.org/
  OpenLDAP:開源的軟件,本文將以此來測試安裝、配置、運行LDAP.
3.軟件安裝
  查看yum源:yum list |grep openldap(其實此處查看錯誤了,根本不是所謂的服務器軟件)。openldap需要libtool-ltdl的支持,另外還需要Berkeley DB數據的支持。

查看安裝情況

libtool-ltdl

db4

  如果以上信息說明已經安裝好軟件了。還需要配置文件的配置信息。
  rpm -ql openldap 查看安裝后文件。ldap.conf是主配置文件(特別說明這個是錯誤的)。
  這里可以看到沒有啟動腳本,我也不知道什么原因,因此我想卸載openldap之后在重新安裝,但是我在卸載的過程中出現報錯。說明卸載的一個依賴包被yum使用。
openldap

  yum remove openldap報錯
  后來使用rpm -e --nodeps openldap是卸載了,但是yum也無法使用了。

依賴關系

yum報錯

  解決辦法:強制安裝openldap
  wget http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/6.4/x86_64/updates/fastbugs/openldap-2.4.2332.el6_4.1.x86_64.rpm
rpm -v --checksig ./openldap-2.4.23-32.el6_4.1.x86_64.rpm rpm -ivh --force --nodeps openldap-2.4.23-32.el6_4.1.x86_64.rpm
yum修復

  但是這個安裝之后,還是沒有發現openldap可以使用。進一步確認發現我們安裝的軟件openldap根本不是我們需要的那個軟件。所以一定要記住。
yum install -y openldap-servers 安裝完成
openldap-servers

  再使用 rpm -ql openldap-servers可以看到已經安裝的文檔。主要文件:

安裝文件

安裝文件

安裝文件

  測試關閉了啟動都正常/etc/rc.d/init.d/slapd start               service slapd stop

測試啟動和關閉

  除了服務器軟件之外還有關于openldap的客戶端軟件yum install -y openldap-clients
  使用ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts(搜索命令測試服務器運行正常。)
搜索測試

4.配置文件

雖然使用了rpm -ql的命令可以看到配置文件,但是我在那個文件夾里面并沒有發發現配置文件,沒有配置文件但是上面測試時候也是正常的,這就非常奇怪了。最后網上查詢得知,使用yum安裝的軟件默認使用的是動態的配置目錄slapd.d。

slapd.d替代配置文件

  如果需要使用之前slapd.conf配置文件可以自己新建一個,但是需要將原來的目錄改名字。在網上找了一個別人配置好的文件。下面是對配置文件的一個說明可以自行查看。

配置文件

  在添加目錄樹到LDAP數據庫中,需要使用LDIF文件。我們來看一個ldif文件:
  dn:<唯一標識>
  <屬性名稱1>:<屬性值1>
  <屬性名稱2>:<屬性值2>
  類似上面的形式。如果需要詳細了解LDIF文件可以自行查詢。本人也只是簡單 的連接了下。

LDIF例子

5.測試

在上面已經測試可以正常啟動和登錄,都是命令行形式的操作,如果希望圖形化管理LDAP目錄,可以考慮安裝phpLDAPadmin可以圖形化的管理LDAP服務器各個方面,但是需要支持php的apache服務器。其實就是將phpLDAPadmin文件復制到apache服務器的/var/www/html目錄中就要可以了。
  關于LDAP使用主要是用來認證,例如某一個系統需要賦予用戶不同的權限,就可以使用認證。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容