Toper Lv

2015.8.20

1 实验环境

系统版本:Red Hat Enterprise Linux 6.4 x86_x64—桌面

语言:中文

主机名:ldap

IP192.168.80.80

 

2 部署OpenLDAP

2.1 关闭防火墙

关闭防火墙,否则无法从外部管理、调用LDAP服务器

[root@ldap ~]# service iptables stop

[root@ldap ~]# chkconfig iptables off

 

2.2 禁用SELinux

[root@ldap ~]# setenforce 0

[root@ldap ~]# vim /etc/selinux/config

clip_image002

 

2.3 配置yum源

将RHEL6.4的光盘连接至服务器,挂载光盘

[root@ldap ~]# mount /dev/cdrom /media

配置yum源

[root@ldap ~]# vim /etc/yum.repos.d/rhel6.repo

[RHEL6]

name=RHEL6.4

baseurl=file:///media

gpgcheck=0

enabled=1

[root@ldap ~]# yum clean all

 

2.4 安装OpenLDAP

RHEL6.4光盘自带的OpenLDAP版本为2.4.2,部署OpenLDAP需要安装如下软件包

openldap-clients.x86_64 2.4.23-31.el6 RHEL6

openldap-devel.x86_64 2.4.23-31.el6 RHEL6

openldap-servers.x86_64 2.4.23-31.el6 RHEL6

 

[root@ldap ~]# yum install openldap-* –y

 

2.5 配置OpenLDAP

拷贝slapd.conf配置文件

[root@ldap ~]# cd /etc/openldap/

[root@ldap openldap]# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf

 

设置OpenLDAP管理密码,复制产生的密文

[root@ldap openldap]# slappasswd

New password:

Re-enter new password:

{SSHA}FL1/4tYmirlnj9rT6qy2Fr133MJ5HCKc

 

编辑slapd.conf配置文件

参照下图设置管理账号和域,例如这里设置的管理账号为:admin;域:test.com

新添加一行rootpw,粘贴上一步复制的密文

[root@ldap openldap]# vim /etc/openldap/slapd.conf

clip_image004

 

由于slapd.d目录下的文件是根据之前默认的域my-domain.com生成的,所以把该目录下所有文件都删除

[root@ldap openldap]# rm -rf /etc/openldap/slapd.d/*

 

拷贝DB_CONFIG文件到指定目录

[root@ldap openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

 

启动slapd服务,由于删除了slapd.d目录下的文件,所以会报错,忽略即可

[root@ldap openldap]# service slapd start

ls: 无法访问/etc/openldap/slapd.d//cn=config/olcDatabase*.ldif: 没有那个文件或目录

正在启动 slapd: [确定]

[root@ldap openldap]# chkconfig slapd on

 

修改文件所有者和所属组

[root@ldap openldap]# chown -R ldap:ldap /var/lib/ldap

[root@ldap openldap]# chown -R ldap:ldap /etc/openldap

 

根据配置的slapd.conf,重新生成slapd.d目录下文件,成功会提示“config file testing succeeded”

[root@ldap openldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

config file testing succeeded

 

修改slapd.d目录下新生成文件的所有者和所属组,重启slapd服务

[root@ldap openldap]# chown -R ldap:ldap /etc/openldap/slapd.d/*

[root@ldap openldap]# service slapd restart

 

2.6 创建用户

创建域内组织架构ldif文件

域:test.com OU:users

[root@ldap ~]# cd /tmp

[root@ldap tmp]# vim base.ldif

dn: dc=test,dc=com

dc: test

objectClass: top

objectClass: domain

dn: ou=users,dc=test,dc=com

ou: users

objectClass: top

objectClass: organizationalUnit

 

创建用户ldif文件,隶属于users

cn、uid都是可以登录的用户名,一般保持相同

cn相当于名字,sn为姓。sn属于必填项,随便写即可

userPassword:用户的密码,这里写的是明文,也可以为密文

[root@ldap tmp]# vim user.ldif

dn: cn=ldapuser1,ou=users,dc=test,dc=com

uid: ldapuser1

cn: ldapuser1

sn: ldap1

objectClass: inetOrgPerson

userPassword: 123456

dn: cn=ldapuser2,ou=users,dc=test,dc=com

uid: ldapuser2

cn: ldapuser2

sn: ldap2

objectClass: inetOrgPerson

userPassword: 123456

 

通过检索可以看到,现在LDAP服务器的test.com域还没有任何信息

[root@ldap tmp]# ldapsearch -x -b "dc=test,dc=com"

# extended LDIF

#

# LDAPv3

# base <dc=test,dc=com> with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#

# search result

search: 2

result: 32 No such object

# numResponses: 1

 

根据编写的组织架构文件添加组织架构,提示输入的密码是slappasswd生成的密码

[root@ldap tmp]# ldapadd -x -D "cn=admin,dc=test,dc=com" -W -f /tmp/base.ldif

Enter LDAP Password:

adding new entry "dc=test,dc=com"

adding new entry "ou=users,dc=test,dc=com"

 

根据编写的用户文件添加用户

[root@ldap tmp]# ldapadd -x -D "cn=admin,dc=test,dc=com" -W -f /tmp/user.ldif

Enter LDAP Password:

adding new entry "cn=ldapuser1,ou=users,dc=test,dc=com"

adding new entry "cn=ldapuser2,ou=users,dc=test,dc=com"

检索test.com域内所有有cn的用户

 

[root@ldap tmp]# ldapsearch -x -b 'dc=test,dc=com' 'cn=*'

# extended LDIF

#

# LDAPv3

# base <dc=test,dc=com> with scope subtree

# filter: cn=*

# requesting: ALL

#

# ldapuser1, users, test.com

dn: cn=ldapuser1,ou=users,dc=test,dc=com

uid: ldapuser1

cn: ldapuser1

sn: ldap1

objectClass: inetOrgPerson

userPassword:: MTIzNDU2

# ldapuser2, users, test.com

dn: cn=ldapuser2,ou=users,dc=test,dc=com

uid: ldapuser2

cn: ldapuser2

sn: ldap2

objectClass: inetOrgPerson

userPassword:: MTIzNDU2

# search result

search: 2

result: 0 Success

# numResponses: 3

# numEntries: 2

检索test.com域内指定cn的用户

 

[root@ldap tmp]# ldapsearch -x -b 'dc=test,dc=com' 'cn=ldapuser1'

# extended LDIF

#

# LDAPv3

# base <dc=test,dc=com> with scope subtree

# filter: cn=ldapuser1

# requesting: ALL

#

# ldapuser1, users, test.com

dn: cn=ldapuser1,ou=users,dc=test,dc=com

uid: ldapuser1

cn: ldapuser1

sn: ldap1

objectClass: inetOrgPerson

userPassword:: MTIzNDU2

# search result

search: 2

result: 0 Success

# numResponses: 2

# numEntries: 1

 

2.7 管理OpenLDAP

可以通过在Windows上安装LDAP Administrator软件来管理LDAP服务器

下载地址:http://www.ldapadministrator.com/download.htm

clip_image006

新建服务器配置文件

clip_image008

随便起个名字

clip_image010

连接的LDAP服务器信息

clip_image012

连接凭证信息

clip_image014

完成

clip_image016

现在就可以看到在LDAP服务器创建的组织和用户了。

可以在userPassword部分右击来修改用户的密码。

clip_image018

从图形界面可以完成LDAP服务器内全部信息的管理,具体使用请各自花时间探索。

 

3 LDAP服务器调用

这里以一台堡垒机为例,LDAP服务器的凭证信息配置如下:

clip_image019

配置通过哪些字段来进行LDAP认证。

用户对象类型:inetOrgPerson

用户字段名称:cn (由于我们的LDAP用户创建时添加了uid,所以这里也可以使用uid)

用户口令字段:userPassword

clip_image020

clip_image021