OpenLDAP 服務器安裝配置

本文檔主要介紹講述在 Debian系統下安裝和配置OpenLDAP的簡單方法.2. 基本概念 (Ctrl+c, Ctrl+v)2.1 目錄服務的組成

  目錄服務就是按照樹狀信息組織模式,實現信息管理和服務接口的一種方法。目錄服務系統一般由兩部分組成:第一部分是數據庫,一種分佈式的數據庫,且擁有一個描述數據的規劃;第二部分則是訪問和處理數據庫有關的詳細的訪問協議。
   目錄服務與關係型數據庫不同的是,目錄不支持批量更新所需要的事務處理功能,目錄一般只執行簡單的更新操作,適合於進行大量數據的檢索;目錄具有廣泛復 制信息的能力,從而在縮短響應時間的同時,提高了可用性和可靠性。目前,目錄服務技術的國際標準有兩個,即較早的X.500標準和近年迅速發展的LDAP 標準。
2.2 X.500是一個協議族
  X.500實際上不是一個協議,它是由一個協議族組成:X.501模型強調目錄服務基本模型和 概念;X.509認證框架是如何在X.500中處理目錄客戶和服務器的認證;X.511 抽象服務定義X.500被要求提供的功能性服務;X.518 分佈式操作過程表明如何跨越多臺服務器處理目錄服務;X.519 協議規範即是X.500協議,包括目錄訪問協議DAP、目錄系統協議DSP、目錄操作綁定協議DOP和目錄信息Shadowing協議 DISP;X.520 選定的屬性類型要求是X.500自己使用的屬性類型;X.521選定的對象類即爲X.500自己使用的對象類;X.525複製是如何在目錄服務器之間複製 目錄內容。
 //** 在這些X.500標準中主要定義有多種內容。一個信息模型:確定目錄中信息的格式和字符集,如何在項中表示目錄信息(定義對象類、屬性等模式);一個命名 空間:確定對信息進行的組織和引用,如何組織和命名項——目錄信息樹DIT和層次命名模型;一個功能模型:確定可以在信息上執行的操作;一個認證框架:保 證目錄中信息的安全,如何實現目錄中信息的授權保護——訪問控制模型;一個分佈操作模型:確定數據如何進行分佈和如何對分佈數據執行操作,如何將全局目錄 樹劃分爲管理域進行管理——目錄管理模型,客戶端與服務器通信的協議—目錄訪問協議DAP,將用戶請求在服務器之間進行鏈接所需的目錄系統協議DSP,將選定的信息在服務器之間進行復制所需的目錄信息映像協議DISP,用於自動在服務器之間協商連接配置的目錄操作綁定協議DOP。 **/
X.500雖然是一個完整的目錄服務協議,但在實際應用的過程中,卻存在着不少障礙。由於目錄訪問協議DAP這種應用層協議是嚴格遵照複雜的ISO 七層協議模型制定的,對相關層協議環境要求過多,主要運行在UNIX機器上,在許多小系統上,如PC和Macintosh上無法使用,因此沒有多少人按照 DAP開發應用程序,TCP/IP協議體系的普及,更使得這種協議越來越不適應需要。 2.3 LDAP目錄訪問標準
  LDAP協議 從1993年批准,產生了LDAP V1版本,隨後於1997年發佈了第三個版本LDAP V3,它的出現是LDAP協議發展的一個里程碑性標誌,它使LDAP協議不僅僅作爲X.500的簡化版,同時提供了LDAP協議許多自有的特性,使 LDAP協議功能更爲完備,具有了更大的生命力。
  LDAP V3協議也不是一個協議,而是一個協議族。RFC 2251——LDAP V3核心協議,定義了LDAP V3協議的基本模型和基本操作;RFC 2252——定義了LDAP V3中的基本數據模式(Schema)(包括語法、匹配規則、屬性類型和對象類)以及標準的系統數據模式;RFC 2253——定義了LDAP V3中的分辨名(DN)表達方式;RFC 2254——定義了LDAP V3中的過濾器的表達方式;RFC 2255——LDAP統一資源地址的格式;RFC 2256——在LDAP V3中使用X.500的Schema列表;RFC 2829——定義了LDAP V3中的認證方式;RFC 2830——定義瞭如何通過擴展使用TLS服務;RFC 1823——定義了C的LDAP客戶端API開發接口;RFC 2847——定義了LDAP數據導入、導出文件接口LDIF。
   LDAP(輕量級目錄訪問協議,Lightweight Directory Access Protocol)是實現提供被稱爲目錄服務的信息服務。目錄服務是一種特殊的數據庫系統,其專門針對讀取,瀏覽和搜索操作進行了特定的優化。目錄一般用 來包含描述性的,基於屬性的信息並支持精細複雜的過濾能力。目錄一般不支持通用數據庫針對大量更新操作操作需要的複雜的事務管理或回捲策略。而目錄服務的 更新則一般都非常簡單。這種目錄可以存儲包括個人信息、web鏈結、jpeg圖像等各種信息。爲了訪問存儲在目錄中的信息,就需要使用運行在TCP/IP 之上的訪問協議—LDAP。
組織單元
  在目錄基本 DN 的下面是容器或組織單元(OU),它們從邏輯上對您的數據進行分隔或分組。這裏的選項通常由您業務或安裝的組織結構確定。另外,第二層 OU 可用來進一步分隔數據。例如,國際企業可以使用下列結構:
dc=foobar,dc=com
    ou=customers
        ou=northamerica
        ou=southamerica
        ou=asia
        ou=europe
    ou=employees
    ou=group
    ou=projects
    ou=accounting
    ou=resource
    ou=service
  一般的經驗方法可以使您的組織結構儘可能地保持簡單,並且不危及將來的可擴展性。還要緊記一點,您將結構容器嵌套得越深,它返回查詢所用的時間就越長。
個別項
  在 LDAP 結構的組織單元下面是實際的項。下
對象類型
  對象類由 LDAP 目錄使用來定義給定類型的對象可以有哪些屬性。對象類還定義項必須有什麼屬性,以及項可以有什麼屬性。所有對象類都從其父對象類繼承需求,然後添加它們自己的需求。
   LDAP目錄結構示意圖
2.5 LDAP的應用
   由於LDAP所具有的查詢效率高、樹狀的信息管理模式、分佈式的部署框架以及靈活而細膩的訪問控制,使LDAP廣泛地應用於基礎性、關鍵性信息的管理, 如用戶信息、網絡資源信息等。LDAP的應用主要涉及幾種類型。信息安全類:數字證書管理、授權管理、單點登錄;科學計算 類:DCE(Distributed Computing Envirionment,分佈式計算環境)、UDDI (Universal Description,Discovery and Integration, 統一描述、發現和集成協議);網絡資源管理類:MAIL系統、DNS系統、網絡用戶管理、電話號碼簿;電子政務資源管理類:內網組織信息服務、電子政務目 錄體系、人口基礎庫、法人基礎庫。
 3. OpenLDAP的安裝配製3.1 安裝
  當前(Debian/testing)提供的OpenLDAP的版本是: bf 2.3.25-1
    
$ sudo aptitude install slapd ldap-utils
Reading package lists... Done
Building dependency tree... Done
Reading extended state information   
Initializing package states... Done
Reading task descriptions... Done 
Building tag database... Done  
The following NEW packages will be automatically installed:
 db4.2-util libiodbc2 libldap-2.3-0
The following NEW packages will be installed:
 db4.2-util ldap-utils libiodbc2 libldap-2.3-0 slapd
0 packages upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 1791kB of archives. After unpacking 4502kB will be used.
Do you want to continue? [Y/n/?]Y
  其中:
  slapd 提供LDAP服務
  ldap-utils 提供客戶工具
  安裝完畢後, 其配製文件位於/etc/ldap/目錄下:
    
tony@tonybox:~$ ls -l /etc/ldap/
total 16
-rw-r--r-- 1 root root 333 2006-06-19 17:56 ldap.conf
drwxr-xr-x 2 root root 4096 2006-12-29 11:33 schema
-rw------- 1 root root 4351 2006-12-29 11:33 slapd.conf
  /etc/ldap/schema/目錄下爲schema文件
    
$ ls /etc/ldap/schema/ -l
total 208
-rw-r--r-- 1 root root 8231 2006-11-11 05:39 corba.schema
-rw-r--r-- 1 root root 20591 2006-11-11 05:39 core.ldif
-rw-r--r-- 1 root root 19762 2006-11-11 05:39 core.schema
-rw-r--r-- 1 root root 74080 2006-11-11 05:39 cosine.schema
-rw-r--r-- 1 root root 1553 2006-11-11 05:39 dyngroup.schema
-rw-r--r-- 1 root root 6360 2006-11-11 05:39 inetorgperson.schema
-rw-r--r-- 1 root root 13984 2006-11-11 05:39 java.schema
-rw-r--r-- 1 root root 2471 2006-11-11 05:39 misc.schema
-rw-r--r-- 1 root root 7723 2006-11-11 05:39 nis.schema
-rw-r--r-- 1 root root 3391 2006-11-11 05:39 openldap.ldif
-rw-r--r-- 1 root root 1601 2006-11-11 05:39 openldap.schema
-rw-r--r-- 1 root root 19689 2006-11-11 05:39 ppolicy.schema
-rw-r--r-- 1 root root 2968 2006-11-11 05:39 README
3.2 啓動與停止 服務啓動    
$ sudo /etc/init.d/slapd start
服務停止$ sudo /etc/init.d/slapd stop服務重啓    
$ sudo /etc/init.d/slapd restsart
  可以通過以下命令查看slapd是否啓動
$ ps aux |grep slapd
openldap 6406 0.0 0.2 14608 2764 ?    Ssl 13:27  0:00 /usr/sbin/slapd -g openldap -u openldap
tony   6417 0.0 0.0  4892  752 pts/1  R+  13:28  0:00 grep slapd
3.3 配製
  比如說我們的域名是debsir.org, 在配製文件/etc/ldap/slapd.conf中可以做如下調整
database    bdb                   #設置使用的資料庫
suffix     "dc=debsir,dc=org"           #設置目錄後綴
rootdn     "cn=admin,dc=debsir,dc=org"       #設置目錄管理員
directory    "/var/lib/ldap"             #設置數據庫路徑
rootpw     secret                 #設置管理密碼
  這裏用了明文的“secret”密碼。這樣設置不安全,如果需使用加密的密碼,則可以藉助slappasswd 命令比如:
$ slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}4QrcOUm6Wau+VuBX8g+IPg==
  其中使用-h 選項用於指定加密方式, 它支持{CRYPT}, {MD5}, {SMD5}, {SSHA}, 和 {SHA} 方式
  然後修改/etc/ldap/slapd.conf 中的rootpw 行爲:
rootpw     {MD5}4QrcOUm6Wau+VuBX8g+IPg==
  修改後,需要重啓slapd服務
    
$ sudo /etc/init.d/slapd restsart
  這時可以使用客戶端工具ldapsearch連接服務器查看目錄信息:
~$ ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
  如果命令執行成功,返回一些信息,則說明服務器正常運行了
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
#
dn:
namingContexts: dc=debsir,dc=org
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
  或者
$ ldapsearch -x -b dc=debsir,dc=org
# extended LDIF
#
# LDAPv3
# base <dc=debsir,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# debsir.org
dn: dc=debsir,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: debsir.org
dc: debsir
# admin, debsir.org
dn: cn=admin,dc=debsir,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
  如果啓動不成功,它會提示一些出錯信息,多數是slapd.conf配置出錯。回頭仔細覈查一下配置文檔。
3.4 客戶端配置文檔
  客戶端配置文檔是ldap.conf。該文檔相當簡單,其實不用配置也能正常操作。
BASE  dc=it, dc=com #設置目錄起點
URI  ldap://localhost ldap://localhost:666
3.5 數據錄入 定義一個組織單元
  創建文件group.ldif,內容如下:
    
dn: ou=people,dc=debsir,dc=org
objectClass: organizationalUnit
ou: people
創建用戶
  創建文件person.ldif,內容如下:
dn: cn=tony,ou=people,dc=debsir,dc=org
objectClass: inetOrgPerson
objectClass: top
cn: tony
sn: an
givenName: an
displayName: Tony an
mail: [email][email protected][/email]
postalCode: 330005
telephoneNumber: 12345678
mobile: 12345678912
homePhone: 9999999
title: System Administrator
postalAddress: Guiyang, China
  * dn唯一地確定了這個對象的位置
  * objectClass確定了這個對象所具有的屬性
  * objectClass可以有多個
  注意每行後面不要留有空格。
3. 將信息添加到數據庫    
$ ldapadd -x -D cn=admin,dc=debsir,dc=org -W -f group.ldif
Enter LDAP Password:
adding new entry "ou=people,dc=debsir,dc=org"
    
tony@tonybox:~$ ldapadd -x -D cn=admin,dc=debsir,dc=org -W -f person.ldif
Enter LDAP Password:
adding new entry "cn=tony,ou=people,dc=debsir,dc=org"
  其中
  * x,使用簡單認證方式
  * -v,輸出更多信息
  * -D cn=admin,dc=cg,dc=com,dc=cn,使用此用戶進行增加操作,顯然用管理員比較好使,增加用戶的權限不是誰都有的
  * -W,提示輸入密碼,也可以在命令行裏面給出密碼,這時的參數應該是 -w password,這對於腳本來說比較方便
4.查看
  然後可以用以下命令查看錄入信息
    
~$ ldapsearch -x -b cn=tony,ou=people,dc=debsir,dc=org
# extended LDIF
#
# LDAPv3
# base <cn=tony,ou=people,dc=debsir,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# tony, people, debsir.org
dn: cn=tony,ou=people,dc=debsir,dc=org
objectClass: inetOrgPerson
objectClass: top
cn: tony
sn: an
givenName: an
displayName: Tony an
mail: [email][email protected][/email]
postalCode: 330005
telephoneNumber: 12345678
mobile: 12345678912
homePhone: 9999999
title: System Administrator
postalAddress: Guiyang, China
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
3.6 權限定義    
access to attrs=userPassword,shadowLastChange
    by dn="cn=admin,dc=debsir,dc=org" write
    by anonymous auth
    by self write
    by * none
access to *
    by dn="cn=admin,dc=debsir,dc=org" write
    by * read
3.7 常用操作 修改密碼        
$ ldappasswd -x -v -S -W -D cn=admin,dc=debsir,dc=org cn=tony,ou=people,dc=debsir,dc=org
New password:
Re-enter new password:
Enter LDAP Password:
ldap_initialize( <DEFAULT> )
Result: Success (0)
  * S 參數是要求命令提示用戶輸入兩次新的密碼,來確認密碼更新,使用 -s newpasswd 可以在命令行中指定新密碼。
刪除對象
  刪除對象的命令則是 ldapdelete,也要指定兩個對象,哪個對象刪除和刪除哪個對象
        
ldapdelete -x -v -W -D cn=admin,dc=debsir,dc=org cn=tony,ou=people,dc=debsir,dc=org
修改對象    
$ ldapmodify -x -D cn=admin,dc=debsir,dc=org -W -f person.ldif
Enter LDAP Password:
modifying entry "cn=tony,ou=people,dc=debsir,dc=org"

4. 管理工具4.1 GQ
  gq - GTK-based LDAP client
  主頁: [url]http://gq-project.org/[/url]
  當前版本: 1.2.1
   LDAP目錄結構示意圖
4.2 phpldapadmin
  phpldapadmin - web based interface for administering LDAP servers
  是一個基於Web的LDAP管理工具,用於管理你的LDAP服務器。使用它,你可以瀏覽你的LDAP樹,查看LDAP模式,執行搜索、創建、刪除、複製和編輯LDAP內容。你也可以在服務器之間複製內容。
  主頁: [url]http://phpldapadmin.sourceforge.net/[/url]
  當前版本: phpldapadmin-php5 1.0.1
   PHPLDAPAdmin
   PHPLDAPAdmin
5. 設置郵件客戶端獲取信息
  打開 thunderbird, 選擇"Tools" -> "Address Book" 或者直接點擊 address book圖標
  在 address book 窗口選擇 "File" -> "NEW" -> "LDAP Directory ..."
  出現如圖窗口, 然後填寫相關信息
   thunderbird
  保存退出
  選擇"Edit" -> "Search Addressess" 出現如下窗口:
   thunderbird

本文轉載於:[url]http://tech.ddvip.com/2007-02/117224100919733_9.html[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章