您的位置:首页 > 其它

用户认证LDAP部署 + 10.04部分

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

由于10.04之后的配置又发生了点变化,这里再做点补充;见第二部分
第一部分:
主要参考:http://www.debuntu.org/ldap-server-and-linux-ldap-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 [ 24.13 KiB | 被浏览 7850 次 ]

附件:

 
intro_dctree.png [ 21.28 KiB | 被浏览 7850 次 ]

导入数据库的前阶段工作已经完成
好了,现在我们开始导入数据:
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-openldap-on-ubuntu-10-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!
客户端
设置不变,如上第一部分
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ldap server