近幾年,隨著LDAP(Light Directory Access
Protocol,輕量級目錄訪問協議)技術的興起和應用領域的不斷擴展,目錄服務技術成為許多新型技術實現信息存儲、管理和查詢的首選方案,特別是在網
絡資源查找、用戶訪問控制與認證信息的查詢、新型網絡服務、網絡安全、商務網的通用數據庫服務和安全服務等方面,都需要應用目錄服務技術來實現一個通用、
完善、應用簡單和可以擴展的系統。
對于任何一家大IT網絡的企業來說,IT系統中的目錄服務功能是必不可少的。如果一個在全國有多個分支機構的企業,已經有了一個內部網絡系統,每一個分支
機構都有一個局域網,局域網之間通過專線或者VPN通道連接在一起,那么,如何將網絡中的資源和信息有效地管理起來呢?通常,這個企業可以在每一個分支機
構或者每個城市建立一個目錄服務器,任何地方的員工連接到本地目錄服務器就可以訪問到目錄樹中所有的信息,在目錄服務器之間復制目錄信息,以保持同步。比
如,人事部門看到的人員目錄與財務部門、設備管理部門看到的人員目錄是完全一致的,他們所使用的應用系統無須再建立另一套目錄結構。當然,這一切都是要經
過身份驗證的。
目錄服務有著如此重要的作用,但在過去,企業通常采用基于Windows的目錄服務器,Linux在這方面相形遜色。作為Windows的核心內容,目錄
服務被企業IT人員認為是Windows與Linux相比最具競爭力的部分,也成為Linux產品架構中的軟肋。隨著Red Hat
Enterprise Linux 4.0出現,這個情況已經改變了。RHEL 4 內附的LDAP 服務器為OpenLDAP 2.2.13-2
版,OpenLDAP 2.x包括數個重要功能:
1. 支持LDAPv3 - OpenLDAP 2.0
除了其它改善外還支持SASL(SimpleAuthentication and Security Layer)、TLS(Transport
Layer Security)以及SSL(Secure Sockets Layer)。LDAPv2 之后通訊協議很多的改變都是為了加強LDAP
的安全性。
2. 支持IPv6 - OpenLDAP 支持新一代的因特網通訊協議第6 版。
3. LDAP Over IPC - OpenLDAP 能夠使用IPC 在系統內進行通訊。這可以避免使用網絡通訊以增加安全性。
4. 使用新的應用程序界面: 改善程序設計人員聯機及使用程序的方法。
本文將以Red Hat Enterprise Linux 4.0 為例,介紹在Linux平臺使用OpenLDAP上建立目錄服務器。
一、LDAP協議簡介
LDAP(輕
量級目錄訪問協議,Lightweight Directory Access
Protocol)是實現提供被稱為目錄服務的信息服務。目錄服務是一種特殊的數據庫系統,其專門針對讀取,瀏覽和搜索操作進行了特定的優化。目錄一般用
來包含描
述性的,基于屬性的信息并支持精細復雜的過濾能力。目錄一般不支持通用數據庫針對大量更新操作操作需要的復雜的事務管理或回卷策略。而目錄服務的更新則一
般都非常簡單。這種目錄可以存儲包括個人信息、web鏈結、jpeg圖像等各種信息。為了訪問存儲在目錄中的信息,就需要使用運行在TCP/IP之上的訪
問協議—LDAP。
LDAP目錄中的信息是是按照樹型結構組織,具體信息存儲在條目(entry)的數據結構中。條目相當于關系數據庫中表的記錄;條目是具有區別名
DN(Distinguished
Name)的屬性(Attribute),DN是用來引用條目的,DN相當于關系數據庫表中的關鍵字(Primary
Key)。屬性由類型(Type)和一個或多個值(Values)組成,相當于關系數據庫中的字段(Field)由字段名和數據類型組成,只是為了方便檢
索的需要,LDAP中的Type可以有多個Value,
而不是關系數據庫中為降低數據的冗余性要求實現的各個域必須是不相關的。LDAP中條目的組織一般按照地理位置
和組織關系進行組織,非常的直觀。LDAP系統結構圖見圖1.
圖1 LDAP系統結構圖
LDAP的信息是以樹型結構存儲的,在樹根一般定義國家(c=CN)或域名(dc=com),在其下則往往定義一個或多個組織
(organization)(o=Acme)或組織單元(organizational units)
(ou=People)。一個組織單元可能包含諸如所有雇員、 大樓內的所有打印機等信息。
此外,LDAP支持對條目能夠和必須支持哪些屬性進行控制,這是有一個特殊的稱為對
象類別(objectClass)的屬性來實現的。該屬性的值決定了該條目必須遵循的一些規則,其規定了該條目能夠及至少應該包含哪些屬性。例
如:inetorgPerson對象類需要支持sn(surname)和cn(common
name)屬性,但也可以包含可選的如郵件,電話號碼等屬性。dn :一條記錄的位置;dc :一條記錄所屬區域;ou
:一條記錄所屬組織;cn/uid:一條記錄的名字/ID。OpenLdap是一個正在得到日益普遍應用的開源軟件,和LADP完全兼容。
二、安裝OpenLDAP服務器
如
果在系統安裝時已經把安裝上了,那么我們就可以直接對OpenLDAP進行配置使用了。否則,可以通過Rat Het Enterprise
Linux圖形界面下的“添加/刪除應用程序”工具進行安裝。具體方法是,選擇“主選單”→“系統設置”→“添加/刪除應用程序”,在彈出的界面中選中
“網絡服務器”的“OpenLDAP-server”,單擊“更新”即可,見圖2。
圖2 安裝OpenLDAP 服務器軟件
如果你使用的是其他版本的Linux,那么通常要安裝以下軟件包:OpenLDAP、 OpenLDAP-servers、
OpenLDAP-clients、 OpenLDAP-devel
,OpenLDAP-2.0是必要套件,一定要先安裝;OpenLDAP-servers是服務器套件;OpenLDAP-clients是操作程序套
件;OpenLDAP-devel是開發工具套件。
三、配置OpenLDAP 服務器
以RedHat Linux 4所為例字介紹OpenLDAP 服務器配置文件。主要文件見表1。
表1
1. 建立Linux用戶賬號
使用文本編輯建立一個文本文件,文件名稱myusers.list 內容如下:
user1 123456
user2 123456
user3 123456
user4 123456
user5 123456
user6 123456
user7 123456
user8 123456
user9 123456
注意:第一個字段為使用者名稱;第二個字段為預設密碼,中間必須用空格隔開。然后使用文本編輯建立另外一個文本文件,文件名稱add-users.sh內容如下:
#!/bin/bash
for i in `awk '{print $1}' users.list `
do
useradd $i
grep "<$i>" users.list | awk '{print $2}' | passwd --stdin $i
done
建立Linux用戶賬號:
#chmod 775 add-users.sh
#./add-users.sh
2.修改缺省配置文件:/etc/OpenLDAP/slapd.conf,請把藍色部分按照您的具體情況填寫。
database bdb
suffix "dc=myexample,dc=com" #一條記錄所屬區域#
rootdn "cn=Manager,dc=example,dc=com"
rootpw 1234567 #定義LDAP根管理員的密碼
3.將原有Linux 賬號轉為LDIF 文件
原有Linux 服務器上有user1-user9 這些使用者賬號,密碼均為123456;面便是轉換的步驟:
# cd /usr/share/OpenLDAP/migration #轉換文件的目錄#
# vi migrate_common.ph
$DEFAULT_MAIL_DOMAIN = "myexample.com";
Default base
$DEFAULT_BASE = "dc=myexample,dc=com";
# ./migrate_passwd.pl /etc/passwd > /worktmp/user.ldif
# ./migrate_group.pl /etc/group > /worktmp/group.ldif
4. 建立example.ldif,ou_people.ldif, ou_group.ldif三個文件
#cat example.ldif
dn: dc=example,dc=com
dc: example
objectClass: dcObject
objectClass: organizationalUnit
ou: example.com
#cat ou_people.ldif
dn: ou=people, dc=example, dc=com
objectclass: organizationalunit
ou: people
#cat ou_group.ldif
dn: ou=group, dc=example, dc=com
objectclass: organizationalunit
ou: group
5. 轉換原有Linux 賬號至OpenLDAP服務器上:
#slapadd -vl example.ldif
added: "dc=example,dc=com" (00000001)
#slapadd -vl ou_people.ldif
added: "ou=people,dc=example,dc=com" (00000002)
#slapadd -vl ou_group.ldif
added: "ou=group,dc=example,dc=com" (00000043)
#slapadd -vl user.ldif
#slapadd -vl group.ldif
四、啟動OpenLDAP服務器
#chown ldap.ldap /var/lib/ldap/* #把/var/lib/ldap/目錄內的檔案變更擁有者及群組為ldap。
然后可以通過Rat Het Enterprise Linux圖形界面下的選擇“主選單”→“系統設置”→“服務器設置”-“服務”,在彈出的界面中選中ldap”,單擊“重新啟動”即可,見圖3。
圖3 服務器啟動界面
利用ldapsearch 指令可搜尋LDAP 服務器的數據,若是可看到以下的數據,代表整個設定正確無誤。
# ldapsearch -x -b "dc=example,dc=com"
………
# user9, Group, myexample.com
dn: cn=user9,ou=Group,dc=myexample,dc=com
objectClass: posixGroup
objectClass: top
cn: user9
userPassword:: e2NyeXB0fXg=
gidNumber: 508
………
五、配置Linux OpenLDAP客戶端
在客戶端執行authconfig-gtk命令,進入認證配置界面,進入圖4所示的界面中配置LDAP服務器的信息。在LDAP 服務器處 指定 LDAP 服務器的 IP 地址。
圖4 添加OpenLDAP服務器IP地址
打開 /etc/ldap.conf 文件,下面是一些用于配置的關鍵指令。
到此為止我們已經配置完成Liunx OpenLDAP目錄服務器、客戶端。