用户认证LDAP部署 + 10.04部分

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
头像
keky
帖子: 231
注册时间: 2007-12-20 15:08
来自: harbin
联系:

用户认证LDAP部署 + 10.04部分

#1

帖子 keky » 2009-12-05 20:09

这几天在研究LDAP安装,上网找了一大圈还是没整明白,经过无数次的失败和N小时的尝试中终于研究的差不多了。
下面简要说一下流程吧,希望对大家有所帮助:

由于10.04之后的配置又发生了点变化,这里再做点补充;见第二部分
第一部分:
主要参考:http://www.debuntu.org/ldap-server-and- ... ap-clients
http://wiki.ubuntu.org.cn/LDAPClientAuthentication

1. LDAP Server
1.1. 安装
主要安装一下套件:

代码: 全选

# apt-get install slapd ldap-utils migrationtools
按照提示输入相关信息,这样在重新配置的时候就可以作较少的工作了

重新配置

代码: 全选

#dpkg-reconfigure slapd
大致如下:

代码: 全选

Omit OpenLDAP server configuration? ... No
DNS domain name: ... debuntu.local        //根据自己需要输入,但必须和后面的相关地方保持一致
Name of your organization: ... Whatever & Co
Admin Password: XXXXX
Confirm Password: XXXXX
OK
BDB
Do you want your database to be removed when slapd is purged? ... No
Move old database? ... Yes
Allow LDAPv2 Protocol? ... No 
由于现在新版本的2.4 以上版本的ldap都采用了新的数据库存储技术,因此可能就找不到像大家所说的sldap配置文件了,
现在都用新的数据格式存放在 /etc/ldap/slap.d/ 目录下面,dpkg-reconfigure slapd 可以实现ldap服务端的配置,按照要求填写即可,相信大家都能读懂里面的提示

现在我们已经设置好了域和管理员用户: “admin”
检查一下你是否可以顺利的访问你的LDAP服务:
输入:

代码: 全选

$ ldapsearch -x -b dc=debuntu,dc=local
如果得到如下错误,可能是由于你的服务未开启:

代码: 全选

ldap_bind: Can't contact LDAP server (-1)
启动服务:

代码: 全选

 # /etc/init.d/slapd start
1.2 建立数据库
我们可以通过 migrationtools 来很容易的导入本地的用户和用户组数据:

代码: 全选

#cd /usr/share/migrationtools/
我们要先修改 migrationtools 的默认配置文件 migrate_common.ph 里面的参数:

代码: 全选

$DEFAULT_MAIL_DOMAIN = "debuntu.local";
$DEFAULT_BASE = "dc=debuntu,dc=local"; 
导出本地数据:

代码: 全选

# ./migrate_group.pl /etc/group ~/group.ldif
# ./migrate_passwd.pl /etc/passwd ~/passwd.ldif 
可惜上面的脚本并没有帮我们创建 People 和 Group节点ou( Organisation Unit),因此我们要先建立他们,建立一个
people_group.lidf 如下:

代码: 全选

dn: ou=People, dc=debuntu, dc=local
ou: People
objectclass: organizationalUnit

dn: ou=Group, dc=debuntu, dc=local
ou: Group
objectclass: organizationalUnit 
其实它的结构就是一棵树,先建立了这棵树的根, dc=debuntu,dc=com ,在dn的表示中都是从儿子到祖先的顺序进行的,在以后的实践中可以发现这一点,结构可以如下图所示两种,我们比较常用的是第二种
intro_tree.png
intro_dctree.png
导入数据库的前阶段工作已经完成
好了,现在我们开始导入数据:
ps:如果people_group.lidf 直接从网页拷贝的话可能会有点问题,得用工具重新编辑一下

代码: 全选

# ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/people_group.ldif
# ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/group.ldif
# ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/passwd.ldif 
其中:
* -x 指示我们不用 sasl
* -W 指定要输入密码再进行操作
* -D 识别系统管理员
* -f 指定要输入的文件
到目前为止,服务器端已经建立好了。

2、客户端
首先安装相关套件:

代码: 全选

#apt-get install libnss-ldap libpam-ldap nscd
LDAP Account for root: cn=admin,dc=debuntu,dc=local
Password: XXXX
Make local root database admin: yes
Database require logging in: No
Root login account: cn=admin,dc=debuntu,dc=local
Root login password: XXXX 
libnss-ldap 被用于名字解析, libpam-ldap 用 pm 通过LDAP来认证用户, nscd is 是一个查找用户、组、密码的守护进程它会对查询结果进行缓存
接下来修改相关的配置文件: 注意大部分只有 debain用户需要进行修改,ubuntu 9.10+在安装相关套件的时候已经帮你修改好了,所以ubuntu用户只需最后修改一下认证的开关文件就行 nsswitch.conf

代码: 全选

#vi /etc/libnss-ldap.conf
host ldap
base dc=debuntu,dc=local
rootbinddn cn=admin,dc=debuntu,dc=local 
#vi /etc/pam_ldap.conf
host ldap
base dc=debuntu,dc=local
rootbinddn cn=admin,dc=debuntu,dc=local 
这两个文件比较关键,如果你遇到客户端说
pam_ldap: error trying to bind (Invalid DN syntax)
那么很可能的原因就是 rootbinddn cn=admin,dc=debuntu,dc=local 有问题,因为在配置的时候只是生成 rootbinddn admin,如果是这样的话,那你按照上面的相关提示进行补全再试试吧

代码: 全选

#vi /etc/pam.d/common-account
account sufficient pam_ldap.so
account required pam_unix.so
#if you want user homedir to be created on first login
#session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ silent 

代码: 全选

#vi /etc/pam.d/common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass 

代码: 全选

vi /etc/pam.d/common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5

#vi /etc/pam.d/common-session
session sufficient pam_ldap.so
session required pam_unix.so
session optional pam_foreground.so  //有些系统可能会提示找不到这个直接注释掉就行,好像是没什么用
 
最后我们要修改一下nsswitch文件规定系统进行用户认证的规则

代码: 全选

# vim /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap 
现在你可以在本地进行用户的登入测试了,good luck!
可以先进行

代码: 全选

getent passwd
检查一下是否正常工作了,如果还是不行就请重启电脑再试试吧

第二部分
参见这里:zzhttp://www.opinsys.fi/setting-up-openld ... -04-alpha2
由于在10.04的时候安装slapd 系统没有进行默认的域名和系统管理员配置,所以操作就跟之前的有点不太一样
1、安装相关的软件,跟之前的一样

代码: 全选

sudo apt-get install slapd ldap-utils
2、把需要的schemas加载到服务器上

代码: 全选

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldif
3、建立所需的存储数据库,这个需要通过建立一个ldif文件来实现,以下就通过一个例子来说明:建立目录前缀为 dc=edu,dc=example,dc=org,数据库放在/var/lib/ldap/.
create_database.ldif:

代码: 全选

# Load hdb backend module
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: {0}back_hdb

# Create the hdb database and place the files under /var/lib/ldap
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=edu,dc=example,dc=org
[color=#FF0000]#这里需要注意一下,如果你之前的服务器由配置过ldap的话可以考虑吧一下的admin的dn修改一下以便跟以前的配置保持一致这样就可以避免在客户端进行不必要的修改,-----delete me [复制的时候][/color]
olcRootDN: uid=admin,ou=People,dc=edu,dc=example,dc=org
olcRootPW: example
olcDbConfig: {0}set_cachesize 0 2097152 0 begin_of_the_skype_highlighting              0 2097152 0      end_of_the_skype_highlighting
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eq
用ldapadd 来修改cn=config 条目:

代码: 全选

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f create_database.ldif
接着 把包含ou=People and ou=Groups的新数据库发布,以便存储用户和组的信息

init_database.ldif

代码: 全选

dn: dc=edu,dc=example,dc=org
objectClass: dcObject
objectclass: organization
o: edu.example.org
dc: edu
description: LDAP root

dn: ou=People,dc=edu,dc=example,dc=org
objectClass: top
objectClass: organizationalUnit
ou: People
[color=#FF0000]#以前的Groups可能是Group,如果想和之前的配置文件保持一致请自行修改其一[/color]
dn: ou=Groups,dc=edu,dc=example,dc=org
objectClass: top
objectClass: organizationalUnit
ou: Groups
同样用ldapadd 来进行修改

代码: 全选

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f init_database.ldif
最后修改一下访问权限控制。在这里我们让所有用户都能够进行目录的读操作
acls.ldif:

代码: 全选

dn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="uid=admin,ou=People,dc=edu,dc=example,dc=org" write by anonymous auth by self write by * none
olcAccess: {1}to dn.subtree="" by * read
olcAccess: {2}to * by dn="uid=admin,ou=People,dc=edu,dc=example,dc=org" write by * read
修改数据库

代码: 全选

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f acls.ldif
一下的命令可以对之前的配置进行测试:
# Show the current configuration:
查看当前的配置

代码: 全选

sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config
# Show the current data in the directory as anonymous user:
以陌生人身份查看当前目录结构下的数据

代码: 全选

ldapsearch -x -h localhost -b dc=edu,dc=example,dc=org
# Dump the database with metadata:
sudo slapcat

ok,ldap的基本配置基本搞定,接下来就可以按照之前的方法进行数据的导入操作鸟,best wishes!
客户端 设置不变,如上第一部分
有任何疑问欢迎一起交流: hitkeky AT gmail DOT com
上次由 keky 在 2010-05-28 12:59,总共编辑 4 次。
Keep trying...never say never. blog: H。U。C

代码: 全选

        .--.
       |o_o |
       |:_/ |           < Hello Girl >
      //   \ \             ------------
     (|     | )
    /'\_   _/`\
    \___)=(___/
juiy
帖子: 2
注册时间: 2008-08-25 23:02

Re: 用户认证LDAP部署

#2

帖子 juiy » 2010-01-05 17:15

一定要顶!
our2848884
帖子: 4
注册时间: 2009-04-27 13:45

Re: 用户认证LDAP部署

#3

帖子 our2848884 » 2010-05-23 21:09

十分感谢! :em11
huangbichong
帖子: 25
注册时间: 2010-04-30 21:36

Re: 用户认证LDAP部署 + 10.04部分

#4

帖子 huangbichong » 2010-06-12 22:11

执行# apt-get install slapd ldap-utils migrationtools的时候出现以下错误,能帮我分析一下什么原因吗?
错误代码如下:
building dependency tree
Reading state information..Done
Some packages could not be installed.this may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of incoming.
The folling information may help to resolve the situation:
The following packages have unmet dependencies:
ldap-utils:Depends:libldap-2.4-2(=2.4.9-0ubuntu0.8.04.3) but 2.4.18-0ubuntu1 is to be installed
slapd:Depends:libldap-2.4-2(=2.4.9-0ubuntu0.8.04.3) but 2.4.18-0ubuntu1 is to be installed.
Depends:libper15.8 (>=5.8.8) but it is not going to be installed
E:Broken packages;
头像
yueyebachuan
帖子: 29
注册时间: 2010-04-04 18:53

Re: 用户认证LDAP部署 + 10.04部分

#5

帖子 yueyebachuan » 2010-06-14 0:34

还在用9.10呢。10.04感觉不习惯。不过楼主写的不错,顶下
huangbichong
帖子: 25
注册时间: 2010-04-30 21:36

Re: 用户认证LDAP部署 + 10.04部分

#6

帖子 huangbichong » 2010-06-14 0:57

huangbichong 写了:执行# apt-get install slapd ldap-utils migrationtools的时候出现以下错误,能帮我分析一下什么原因吗?
错误代码如下:
building dependency tree
Reading state information..Done
Some packages could not be installed.this may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of incoming.
The folling information may help to resolve the situation:
The following packages have unmet dependencies:
ldap-utils:Depends:libldap-2.4-2(=2.4.9-0ubuntu0.8.04.3) but 2.4.18-0ubuntu1 is to be installed
slapd:Depends:libldap-2.4-2(=2.4.9-0ubuntu0.8.04.3) but 2.4.18-0ubuntu1 is to be installed.
Depends:libper15.8 (>=5.8.8) but it is not going to be installed
E:Broken packages;

问题已解决,原来用64bit的系统,换成32 bit的系统之后就正常了。
baby
帖子: 641
注册时间: 2005-11-10 19:12

Re: 用户认证LDAP部署 + 10.04部分

#7

帖子 baby » 2010-11-26 15:27

感谢楼主的辛勤劳动,最近正准备搞10.10的LDAP呢
hilong
帖子: 1
注册时间: 2010-11-30 10:15

Re: 用户认证LDAP部署 + 10.04部分

#8

帖子 hilong » 2010-12-03 17:26

baby 写了:感谢楼主的辛勤劳动,最近正准备搞10.10的LDAP呢
在10.10中部署的怎么样了,分享一下。
bugle
帖子: 94
注册时间: 2009-09-22 21:26

Re: 用户认证LDAP部署 + 10.04部分

#9

帖子 bugle » 2010-12-20 18:48

有个问题,我在ub10.4 server 下装LDAP 时, 是用apt-get install安装的,安装过程中并没有提示我设置密码,
但进行LZ的设置时,
ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/people_group.ldif
却要我输入密码, :em20 我实在不知道密码是什么,能重设密码吗?请高人指点
chenxj
帖子: 10
注册时间: 2006-06-28 18:33
来自: BJ

Re: 用户认证LDAP部署 + 10.04部分

#10

帖子 chenxj » 2011-02-24 16:33

bugle 写了:有个问题,我在ub10.4 server 下装LDAP 时, 是用apt-get install安装的,安装过程中并没有提示我设置密码,
但进行LZ的设置时,
ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/people_group.ldif
却要我输入密码, :em20 我实在不知道密码是什么,能重设密码吗?请高人指点
同楼上,有哪位高人可以指点?
secowu
帖子: 308
注册时间: 2006-07-06 18:25

Re: 用户认证LDAP部署 + 10.04部分

#11

帖子 secowu » 2011-03-03 22:25

一堆代码很头痛。。。。
头像
keky
帖子: 231
注册时间: 2007-12-20 15:08
来自: harbin
联系:

Re: 用户认证LDAP部署 + 10.04部分

#12

帖子 keky » 2011-09-21 10:23

哥们 你试试这个吧

,dpkg-reconfigure slapd 可以实现ldap服务端的配置
bugle 写了:有个问题,我在ub10.4 server 下装LDAP 时, 是用apt-get install安装的,安装过程中并没有提示我设置密码,
但进行LZ的设置时,
ldapadd -x -W -D "cn=admin,dc=debuntu,dc=local" -f ~/people_group.ldif
却要我输入密码, :em20 我实在不知道密码是什么,能重设密码吗?请高人指点
Keep trying...never say never. blog: H。U。C

代码: 全选

        .--.
       |o_o |
       |:_/ |           < Hello Girl >
      //   \ \             ------------
     (|     | )
    /'\_   _/`\
    \___)=(___/
jy34521
帖子: 1
注册时间: 2012-12-20 14:55
系统: ubuntu

Re: 用户认证LDAP部署 + 10.04部分

#13

帖子 jy34521 » 2012-12-20 14:57

:em11 谢谢 棒
回复