近几年,随着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目录服务器、客户端。