Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

时间:2022-01-08 20:34:38

1.概念介绍

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。 简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。 LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大

现在市场上有关LDAP的产品已有很多,各大软件公司都在他们的产品中集成了LDAP服务,如Microsoft的ActiveDirectory、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服务。LDAP的开源实现是OpenLDAP,它比商业产品一点也不差,而且源码开放。

OpenLDAP 是最常用的目录服务之一,它是一个由开源社区及志愿者开发和管理的一个开源项目,提供了目录服务的所有功能,包括目录搜索、身份认证、安全通道、过滤器等等。大多数的 Linux 发行版里面都带有 OpenLDAP 的安装包。OpenLDAP 服务默认使用非加密的 TCP/IP 协议来接收服务的请求,并将查询结果传回到客户端。由于大多数目录服务都是用于系统的安全认证部分比如:用户登录和身份验证,所以它也支持使用基于 SSL/TLS 的加密协议来保证数据传送的保密性和完整性。OpenLDAP 是使用 OpenSSL 来实现 SSL/TLS 加密通信的

这里引申一下LDAP主要的简称含义:

  • o– organization(组织-公司)
  • ou – organization unit(组织单元-部门)
  • c – countryName(国家)
  • dc – domainComponent(域名)
  • sn – suer name(真实名称)
  • cn – common name(常用名称)

2. 环境介绍

这里准备3台虚拟机,在cloudstack上生成很方便,当然可以根据自己需求来部署,可以只部署简单的ldap,也可以部署ldap+ca,也可以部署ldap复制,前2个都可以在一台服务器上进行。

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

openldap master:         192.168.1.137            域名:openldap.54im.com

openldap slave:             192.168.1.143             域名:openldap2.54im.com

ca+openldap client:    192.168.1.111              域名:openldap-ca.54im.com

2. 准备工作

在3台服务器上均进行如下操作。

  • dns配置

vi /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

  • selinux配置
当然生产环境建议还是开启,我这里偷懒下先关掉。
setenforce 0
  • epel配置
rpm -Uvh http://mirror-fpt-telecom.fpt.net/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

3. yum部署ldap

  • yum安装openldap:
1
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap
  • 日志配置:
1
2
3
4
5
6
7
8
mkdir /var/log/slapd
chmod 755 /var/log/slapd/
chown ldap:ldap /var/log/slapd/
sed -i "/local4.*/d" /etc/rsyslog.conf
cat >> /etc/rsyslog.conf << EOF
local4.*                        /var/log/slapd/slapd.log
EOF
service rsyslog restart
  • 创建管理员密码,尽量使用高强度密码
这里我设置的密码为 54im.com,生存的{SSHA}DOS0VOBzmvD3beMsuFllLBOi6CAt4Kcj一会配置文件要用
1
2
3
4
[root@openldap-master ~]# slappasswd
New password:
Re-enter new password:
{SSHA}DOS0VOBzmvD3beMsuFllLBOi6CAt4Kcj

修改slapd.conf配置

1
2
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
mv /etc/openldap/slapd.d{,.bak}

vi /etc/openldap/slapd.conf 我这里列出要修改的项

修改suffix 和rootdn,rootpw,suffix我这里用了二级域名,如果你想用主域名也可以,写成dc=54im,dc=com,其中rootpw可以是明文,这里我们经过SSHA算法加密下,

1
2
3
4
5
6
7
8
9
10
11
114 database bdb
115 suffix "dc=openldap,dc=54im,dc=com"
116 checkpoint 1024 15
117 rootdn "cn=Manager,dc=openldap,dc=54im,dc=com"
118 # Cleartext passwords, especially for the rootdn, should
119 # be avoided. See slappasswd(8) and slapd.conf(5) for details.
120 # Use of strong authentication encouraged.
121 # rootpw secret
122 # rootpw {crypt}ijFYNcSNctBYg
123 rootpw {SSHA}hHZMkvQ3bj07PYOb6emsZHZfGtXvd5g8 //这里用上面产生的密码
  • 测试下配置文件是否修改成功
1
2
[root@openldap-master openldap]# slaptest -u -f slapd.conf
config file testing succeeded

这里有个日志级别的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@openldap-master ~]# slapd -d ?
Installed log subsystems:
        Any                            (-1, 0xffffffff)记录所有的信息
        Trace                          (1, 0x1)跟踪功能调用的信息
        Packets                        (2, 0x2)包处理的debug信息
        Args                           (4, 0x4)丰富的debug信息
        Conns                          (8, 0x8)连接管理信息
        BER                            (16, 0x10)包的收发信息
        Filter                         (32, 0x20)搜索过滤的处理过程
        Config                         (64, 0x40)配置文件的处理过程
        ACL                            (128, 0x80)访问控制列表处理过程
        Stats                          (256, 0x100)连接、操作及其结果的统计数据
        Stats2                         (512, 0x200)向客户端返回的结果的统计信息
        Shell                          (1024, 0x400)与shell后端的通信信息
        Parse                          (2048, 0x800)显示记录条目的分析信息
        Sync                           (16384, 0x4000)从服务器数据同步资源消耗处理信息
        None                           (32768, 0x8000)
NOTE: custom log subsystems may be later installed by specific code

你可以同时设置几种日志级别,方法是将日志级别的数字加起来。 比如同时设置Trace和Stats级别,那么在slapd.conf中:

loglevel 257

或者启动OpenLDAP时,使用命令参数-d 257来指定

  • 创建数据库文件(从模版复制)生成DB_CONFIG
 
1
2
3
cd /var/lib/ldap/
cp /usr/share/openldap-servers/DB_CONFIG.example ./DB_CONFIG
chown ldap.ldap DB_CONFIG

启动ldap服务,自动创建数据库文件

1
2
chkconfig slapd on
/etc/init.d/slapd start

服务启动后,可以看到生成了几个数据库文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@openldap-master ldap]# ll
总用量 11472
-rw-r--r--. 1 ldap ldap      2048 5月  22 13:42 alock
-rw-------. 1 ldap ldap     24576 5月  22 13:42 __db.001
-rw-------. 1 ldap ldap   9093120 5月  22 13:42 __db.002
-rw-------. 1 ldap ldap 335552512 5月  22 13:42 __db.003
-rw-------. 1 ldap ldap   2359296 5月  22 13:42 __db.004
-rw-------. 1 ldap ldap    753664 5月  22 13:42 __db.005
-rw-------. 1 ldap ldap     32768 5月  22 13:42 __db.006
-rw-r--r--. 1 root root       921 5月  22 13:42 DB_CONFIG
-rw-------. 1 ldap ldap      8192 5月  22 13:42 dn2id.bdb
-rw-------. 1 ldap ldap     32768 5月  22 13:42 id2entry.bdb
-rw-------. 1 ldap ldap  10485760 5月  22 13:42 log.0000000001
  •  检查搜索域
-x 信息排序
-b 指定搜索范围起点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@openldap-master openldap]# ldapsearch -x -b "dc=openldap,dc=54im,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=openldap,dc=54im,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
  • 数据录入
服务器正常运作后,就可以录入信息了。信息的录入有三种方法,一种是手工录入,一种是.ldif文件格式录入,一种是web界面录入(下面会介绍phpldapadmin录入)。信息录入用到ldapadd这个程序。这里我们介绍用.ldif方式录入
  • 创建待认证的用户 
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@openldap-master openldap]# mkdir /54im_home
[root@openldap-master openldap]# useradd -u 8001 -d /54im_home/ivon01 ivon01
[root@openldap-master openldap]# useradd -u 8002 -d /54im_home/ivon02 ivon02
[root@openldap-master openldap]# useradd -u 8003 -d /54im_home/ivon03 ivon03
[root@openldap-master openldap]# echo "54im.com" |passwd --stdin ivon01
更改用户 ivon01 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@openldap-master openldap]# echo "54im.com" |passwd --stdin ivon02
更改用户 ivon02 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@openldap-master openldap]# echo "54im.com" |passwd --stdin ivon03
更改用户 ivon03 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
  •  安装及配置迁移工具
1
2
3
4
5
6
7
8
[root@openldap-master openldap]# yum install migrationtools -y
[root@openldap-master openldap]# cd /usr/share/migrationtools/
[root@openldap-master migrationtools]# vi migrate_common.ph
     70 # Default DNS domain
     71 $DEFAULT_MAIL_DOMAIN = "openldap.54im.com";
     72
     73 # Default base
     74 $DEFAULT_BASE = "dc=openldap,dc=54im,dc=com";
  •  创建认证账户文件

主要的概念:

dn:唯一区分名

dc:所属区域

ou:所属组织

cn/uid:全名/登录ID

运行脚本migrate_base.pl,它会创建根项,并为 Hosts、Networks、Group和 People 等创建低一级的组织单元,指定为base.ldif文件,这里我们只有下面这3个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@openldap-master migrationtools]# ./migrate_base.pl >base.ldif
[root@openldap-master migrationtools]# vi base.ldif
dn: dc=openldap,dc=54im,dc=com
dc: openldap
objectClass: top
objectClass: domain
dn: ou=People,dc=openldap,dc=54im,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=openldap,dc=54im,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

创建用户和组的数据库文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@openldap-master migrationtools]# grep ivon /etc/passwd >user.txt
[root@openldap-master migrationtools]# ./migrate_passwd.pl user.txt ./user.ldif
[root@openldap-master migrationtools]# grep ivon /etc/group >group.txt
[root@openldap-master migrationtools]# ./migrate_group.pl group.txt ./group.ldif
[root@openldap-master migrationtools]# ll base.ldif user.ldif group.ldif
-rw-r--r--. 1 root root  285 5月  22 13:57 base.ldif
-rw-r--r--. 1 root root  426 5月  22 13:59 group.ldif
-rw-r--r--. 1 root root 1335 5月  22 13:58 user.ldif
[root@openldap-master migrationtools]# ldapsearch -x -b -L "dc=openldap,dc=54im,dc=com"
# extended LDIF
#
# LDAPv3
# base <-L> with scope subtree
# filter: dc=openldap,dc=54im,dc=com
# requesting: ALL
#
# search result
search: 2
result: 34 Invalid DN syntax
text: invalid DN
# numResponses: 1
  •  迁移系统用户到ldap数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@openldap-master migrationtools]# /etc/init.d/slapd restart
停止 slapd:[确定]
正在启动 slapd:[确定]
[root@openldap-master migrationtools]# ldapadd -D "cn=Manager,dc=openldap,dc=54im,dc=com" -W -x -f /usr/share/migrationtools/base.ldif
Enter LDAP Password:
adding new entry "dc=openldap,dc=54im,dc=com"
adding new entry "ou=People,dc=openldap,dc=54im,dc=com"
adding new entry "ou=Group,dc=openldap,dc=54im,dc=com"
[root@openldap-master migrationtools]# ldapadd -D "cn=Manager,dc=openldap,dc=54im,dc=com" -W -x -f /usr/share/migrationtools/user.ldif
Enter LDAP Password:
adding new entry "uid=ivon01,ou=People,dc=openldap,dc=54im,dc=com"
adding new entry "uid=ivon02,ou=People,dc=openldap,dc=54im,dc=com"
adding new entry "uid=ivon03,ou=People,dc=openldap,dc=54im,dc=com"
[root@openldap-master migrationtools]# ldapadd -D "cn=Manager,dc=openldap,dc=54im,dc=com" -W -x -f /usr/share/migrationtools/group.ldif
Enter LDAP Password:
adding new entry "cn=ivon01,ou=Group,dc=openldap,dc=54im,dc=com"
adding new entry "cn=ivon02,ou=Group,dc=openldap,dc=54im,dc=com"
adding new entry "cn=ivon03,ou=Group,dc=openldap,dc=54im,dc=com"

如果出现错误:
ldap_bind: Invalid credentials (49)
就表示你要么给出了错误的”cn=”条目,要么给出了错误的密码
Enter LDAP Password:(输入你刚才设置的密码),正确之后会显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@openldap-master migrationtools]# ldapsearch -x -b  "dc=openldap,dc=54im,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=openldap,dc=54im,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# openldap.54im.com
dn: dc=openldap,dc=54im,dc=com
dc: openldap
objectClass: top
objectClass: domain
# People, openldap.54im.com
。。。。省略
search: 2
result: 0 Success
# numResponses: 10
# numEntries: 9

如果有防火墙,记得打开389端口

4. phpldapadmin安装

yum安装apache+php环境

1
yum install httpd php php-bcmath php-gd php-mbstring php-xml php-ldap

yum安装phpldapadmin

1
yum install phpldapadmin  #要有epel源

我这里是yum安装的,所以config.d下面有phpldapadmin.conf,改下httpd.conf中的servername就可以。

注意:如果是下载的phpldapadmin包接下的话需要修改httpd.conf配置文件,最文件最后新增

1
2
3
4
5
6
7
8
9
10
11
vi /etc/httpd/conf/httpd.conf 
ServerName openldap.54im.com
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 192.168.1.0/24
  Allow from ::1
</Directory>

修改phpldapadmin配置文件

1
2
3
4
[root@openldap-master ~]# vi /etc/phpldapadmin/config.php
# line 397: uncomment, line 398: make it comment
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

重启httpd服务后访问

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

登录ldap

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

登录后即可新增用户和组等操作,看了到我们迁移进去的3个用户和组

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

5.ldap客户端配置

我这里客户端安装在192.168.1.111 这台服务器上,这台后面也会做证书服务器。

1
[root@openldap-ca ~]#  yum  install openldap-clients nss-pam-ldapd

我们可以在终端使用图像化界面配置,在crt里面输入  authconfig-tui

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

这里注意,如果有dns的情况下话,可以用域名,否则要绑定hosts或者用IP,TLS这里我们先不选,后面再介绍
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
authconfig-tui会修改很多配置文件,先来检查下

1
2
3
4
[root@openldap-ca ~]# grep -v "#" /etc/openldap/ldap.conf |grep -v "^$"
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://openldap.54im.com/
BASE dc=openldap,dc=54im,dc=com
1
2
3
4
5
6
7
[root@openldap-ca ~]# grep -v "#" /etc/nslcd.conf |grep -v "^$"
uid nslcd
gid ldap
uri ldap://openldap.54im.com/
base dc=openldap,dc=54im,dc=com
ssl no
tls_cacertdir /etc/openldap/cacerts
1
2
3
4
5
6
[root@openldap-ca ~]# grep -v "#" /etc/pam_ldap.conf |grep -v "^$"
base dc=openldap,dc=54im,dc=com
uri ldap://openldap.54im.com/
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@openldap-ca ~]# grep -v "#" /etc/nsswitch.conf |grep -v "^$"
passwd:     files ldap
shadow:     files ldap
group:      files ldap
hosts:      files dns
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files sss
netgroup:   files ldap
publickey:  nisplus
automount:  files ldap
aliases:    files nisplus
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@openldap-ca ~]# grep -v "#" /etc/pam.d/system-auth|grep -v "^$"
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so
account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so
password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so
session     optional      pam_ldap.so
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam__mkhomedir.so skel=/etc/skel umask=077
1
2
3
[root@openldap-ca ~]# grep "USELDAP" /etc/sysconfig/authconfig
USELDAPAUTH=yes
USELDAP=yes

启动nslcd服务,并设置为开机启动

1
2
service nslcd start
chkconfig nslcd on

验证:

1
2
3
4
5
6
7
8
[root@openldap-ca ~]# id ivon01
uid=8001(ivon01) gid=8001(ivon01) 组=8001(ivon01)
[root@openldap-ca ~]# id ivon02
uid=8002(ivon02) gid=8002(ivon02) 组=8002(ivon02)
[root@openldap-ca ~]# id ivon03
uid=8003(ivon03) gid=8003(ivon03) 组=8003(ivon03)
[root@openldap-ca ~]# su - ivon01
su: 警告:无法切换到目录/54im_home/ivon01: 没有那个文件或目录

显示如上信息,说明账户可以登录,但没找到用户主目录。这需要在本地配置nfs并通过autofs自动挂载服务器家目录到本地客户端

6.用户目录自动挂载

6.1 服务器端配置

nfs在openldap服务器上配置,默认centos 6上已经安装了nfs

1
2
3
4
5
6
7
8
9
10
11
[root@openldap-master ~]# /etc/init.d/rpcbind start
[root@openldap-master ~]# /etc/init.d/nfslock start
[root@openldap-master ~]# /etc/init.d/nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额:[确定]
启动 NFS mountd:[确定]
启动 NFS 守护进程:[确定]
正在启动 RPC idmapd:[确定]
[root@openldap-master ~]# chkconfig rpcbind on
[root@openldap-master ~]# chkconfig nfslock on
[root@openldap-master ~]# chkconfig nfs on

配置nfs

1
2
[root@openldap-master ~]# vi /etc/exports
/54im_home 192.168.1.0/24(rw,sync)

如果开了selinux,则需要 setsebool  -P    use_nfs_home_dirs   on

vi /etc/sysconfig/nfs,去掉一些端口的注释符(可选,如果不取消这些端口注释,客户端showmount的时候会报错,不影响挂载)

1
2
3
4
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662

重启nfs

配置防火墙

1
2
3
4
5
6
7
8
9
10
11
vi /etc/sysconfig/iptables
-A INPUT –p tcp –m state --state NEW –m tcp --dport 111 –j ACCEPT
-A INPUT –p udp –m state --state NEW –m udp --dport 111 –j ACCEPT
-A INPUT –p tcp –m state --state NEW –m tcp --dport 662 –j ACCEPT
-A INPUT –p udp –m state --state NEW –m udp --dport 662 –j ACCEPT
-A INPUT –p tcp –m state --state NEW –m tcp --dport 892 –j ACCEPT
-A INPUT –p udp –m state --state NEW –m udp --dport 892 –j ACCEPT
-A INPUT –p tcp –m state --state NEW –m tcp --dport 2049 –j ACCEPT
-A INPUT –p udp –m state --state NEW –m udp --dport 2049 –j ACCEPT
-A INPUT –p tcp –m state --state NEW –m tcp --dport 32803 –j ACCEPT
-A INPUT –p udp –m state --state NEW –m udp --dport 32769 –j ACCEPT

在客户端检查下nfs输出

1
2
3
[root@openldap-ca ~]# showmount -e openldap.54im.com
Export list for openldap.54im.com:
/54im_home 192.168.1.0/24

6.2 客户端配置

默认情况下,centos 6已经安装了nfs及autofs,如果没有,则使用yum –y install nfs-utils autofs

1
2
3
4
5
(1)service rpcbind start ,chkconfig rpcbind on
(2)service rpcidmapd start ,chkconfig rpcidmapd on
(3)service nfslock start ,chkconfig nfslock on
(4)service netfs start ,chkconfig netfs on
(5)service autofs start ,chkconfig autofs on

配置autofs服务

1
2
3
4
5
vi /etc/auto.master ,在最后一行后面加入:
/54im_home /etc/auto.nfs
vi /etc/auto.nfs,输入如下内容并保存:
*       -rw,soft,intr      192.168.1.137:/54im_home/&

重启下autofs服务:service autofs restart

客户端测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@openldap-ca ~]# su - ivon01
[ivon01@openldap-ca ~]$ pwd
/54im_home/ivon01
[ivon01@openldap-ca ~]$ ls
[ivon01@openldap-ca ~]$ mkdir 54im.com
[root@openldap-ca ~]# su - ivon02
[ivon02@openldap-ca ~]$ df -H
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root      19G  2.6G   16G  15% /
tmpfs                            258M     0  258M   0% /dev/shm
192.168.1.137:/54im_home/ivon01   19G  2.4G   16G  14% /54im_home/ivon01
192.168.1.137:/54im_home/ivon02   19G  2.4G   16G  14% /54im_home/ivon02
然后在openldap服务器上查看nfs共享目录
[root@openldap-master ~]# ls /54im_home/ivon01/
54im.com

注意事项:

对/etc/auto.nfs文件使用*及&通配符时,则/etc/auto.master里的挂载点必须与服务器的挂载点同名同目录/nfshome,否则客户端su – 切换时会提示找不到目录。

不建议把ldap用户直接创建在/home文件夹里。否则由于/etc/auto.nfs文件里的*及&符号的自动匹配的作用,客户autofs会自动在内存中创建/home目录,会隐藏掉实际的/home目录

7.配置TLS传输加密

配置openldap的加密,可以用自签名证书,也可以用CA中心签名,这里我的CA中心签名,CA服务器是 192.168.1.111

前言:

为啥要用TLS?

Openldap默认使用简单验证,对slapd的所有访问都使用明文密码通过未加密通道进行。为了确保信息安全,需要对信息进行加密传输,SSL(Secure Sockets Layer)是一个可靠的解决方案。

它使用 X.509 证书,由可信任第三方(Certificate Authority (CA))进行数字签名的一个标准格式的数据。有效的数字签名意味着已签名的数据没有被篡改。如果签名的数据被更改,将不会通过验证

SSL/TLS 加密原理简介

SSL/TLS 是基于 PKI 机制的加密方式,包括证书认证、密钥交换、非对称加密、对称加密。SSL/TLS 采用 CA 作为服务端和客户端都信赖的具有权威性的组织,证书的颁发和认证都依赖于 CA,并假定 CA 颁发的证书是可靠的、可信赖的,证书里面的内容是真实的、有效的,并可用于客户机和服务器进行安全的可靠的通信加密。

SSL/TLS 证书用来认证服务器和客户机双方的身份,并用于密钥交换时候的非对称加密。密钥交换完毕之后,就可以用这个密钥做通信数据的对称加密了,具体的加密算法是由客户机和服务器互相协商得来。服务器和客户机由于 SSL/TLS 库的不同以及用户的配置不同,双方支持的算法列表不完全相同,当双方做 SSL/TLS 握手的时候,就需要将自己支持的算法列表及优先顺序告知对方,一旦对方按照优先顺序找到了第一个支持的算法,那么协商完成,否则双方协商失败,SSL/TLS 连接断开

  • 安装openssl

yum install openssl

  • 准备工作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@openldap-ca ~]# cd /etc/pki/CA/
[root@openldap-ca CA]# ls
certs  crl  newcerts  private
[root@openldap-ca CA]# touch index.txt
[root@openldap-ca CA]# echo 01 >serial
[root@openldap-ca CA]# ls
certs  crl  index.txt  newcerts  private  serial
[root@openldap-ca CA]#vi /etc/pki/tls/openssl.cnf
dir             = /etc/pki/CA           # 根目录
certs           = $dir/certs            # 公钥目录
crl_dir         = $dir/crl              # 过期,吊销证书目录
database        = $dir/index.txt        # 证书签名记录文件
#unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
new_certs_dir   = $dir/newcerts         # 新的公钥证书目录
certificate     = $dir/CA.crt           # CA中心的公钥
serial          = $dir/serial           # 每次签名序号自动+1
crlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRL
crl             = $dir/crl.pem          # 吊销的证书
private_key     = $dir/private/CA.key   # 私钥
RANDFILE        = $dir/private/.rand    # private random number file
省略若干
default_days             = 365 证书有效期(默认一年)
default_crl_days      = 30 吊销列表更新周期
[ policy_match ] 策略匹配
countryName                              = match 必须匹配(城市名)
stateOrProvinceName              = match (国家或州名)
organizationName                     = match (组织名)
organizationalUnitName          = optional可选的匹配(单位名)
commonName                   = supplied用户提供的,必须不一样 (常用名)
emailAddress                              = optional 邮件地址,可以不填
...
[ req_distinguished_name ]
countryName_default     = CN 设置国家
stateOrProvinceName_default        = BeiJing 省
localityNmae_default      = BeiJing 城市
0.organizationName_default           = Example, Inc. 组织
  •  CA服务器生存自己的私钥,公钥(证书)
1
2
3
4
5
[root@openldap-ca CA]# (umask 077;openssl genrsa -out private/CA.key)
Generating RSA private key, 1024 bit long modulus
................++++++
..............++++++
e is 65537 (0x10001)

利用刚才创建的RSA私钥创建自签署的根证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@openldap-ca CA]# openssl req -new -x509 -key private/CA.key >CA.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:SHANGHAI
Locality Name (eg, city) [Default City]:BAOSHAN
Organization Name (eg, company) [Default Company Ltd]:54IM
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:openldap-ca.54im.com
Email Address []:474356107@qq.com
  •  openldap服务器生成私钥,并生成证书请求文件
在192.168.1.137这台服务器上执行,生成私钥的时候我选择了不要密码,否则启动服务的时候还要输入次密码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@openldap-master ~]# openssl genrsa -out 54im-ldap.key
Generating RSA private key, 1024 bit long modulus
....................++++++
......................++++++
e is 65537 (0x10001)
[root@openldap-master ~]# openssl req -new -key 54im-ldap.key -out 54im-ldap.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:SHANGHAI
Locality Name (eg, city) [Default City]:BAOSHAN
Organization Name (eg, company) [Default Company Ltd]:54IM
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:openldap.54im.com
Email Address []:474356107@qq.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
  •  向CA服务器请求证书
1
2
3
[root@openldap-master ~]# scp 54im-ldap.csr openldap-ca.54im.com:/tmp
root@openldap-ca.54im.com's password:
54im-ldap.csr                                                                                                                                                               100%  700     0.7KB/s   00:00
  •  CA服务器颁发证书
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[root@openldap-ca CA]# openssl ca -in /tmp/54im-ldap.csr -out /tmp/54im-ldap.crt
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: May 22 07:58:15 2014 GMT
            Not After : May 22 07:58:15 2015 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = SHANGHAI
            organizationName          = 54IM
            organizationalUnitName    = IT
            commonName                = openldap.54im.com
            emailAddress              = 474356107@qq.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                7D:50:67:5B:69:36:B8:FD:9F:9B:8E:E9:EB:4D:08:C0:A1:8D:3C:FC
            X509v3 Authority Key Identifier:
                keyid:92:7C:3D:9C:5E:03:34:02:07:3B:0C:16:1A:BD:85:21:FE:53:54:39
Certificate is to be certified until May 22 07:58:15 2015 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
  •  openldap服务器下载自己的证书
1
2
3
4
5
6
7
[root@openldap-ca tmp]# scp -r /tmp/54im-ldap.crt openldap.54im.com:/root
root@openldap.54im.com's password:
54im-ldap.crt          
[root@openldap-ca CA]# scp -r CA.crt openldap.54im.com:/root
root@openldap.54im.com's password:
CA.crt
  • openldap服务器安装证书:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@openldap-master ~]# vi /etc/openldap/ldap.conf
URI     ldap://127.0.0.1/
BASE    dc=openldap,dc=54im,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
[root@openldap-master ~]#/etc/openldap/slapd.conf
TLSCACertificateFile /etc/openldap/cacerts/CA.crt
TLSCertificateFile /etc/openldap/cacerts/54im-ldap.crt
TLSCertificateKeyFile /etc/openldap/cacerts/54im-ldap.key
[root@openldap-master ~]# mkdir /etc/openldap/cacerts/
[root@openldap-master ~]# cp /root/CA.crt /etc/openldap/cacerts/
[root@openldap-master ~]# cp /root/54im-ldap. /etc/openldap/cacerts/
54im-ldap.crt  54im-ldap.csr  54im-ldap.key  
[root@openldap-master ~]# cp /root/54im-ldap.* /etc/openldap/cacerts/
[root@openldap-master ~]# chown ldap.ldap /etc/openldap/cacerts/
[root@openldap-master ~]# service slapd stop
停止 slapd:[确定]
这里我们采用这种方式来启动ldap,这样可以监听加密和非加密的端口,
[root@openldap-master ~]# slapd -h "ldap:/// ldaps:///"
如果只想监听加密的
[root@openldap-master ~]# slapd -h "ldaps:///"
[root@openldap-master ~]# netstat -ntpl |grep slapd
tcp        0      0 0.0.0.0:636                 0.0.0.0:*                   LISTEN      25671/slapd        
tcp        0      0 0.0.0.0:389                 0.0.0.0:*                   LISTEN      25671/slapd        
tcp        0      0 :::636                      :::*                        LISTEN      25671/slapd        
tcp        0      0 :::389                      :::*                        LISTEN      25671/slapd
  • CA服务器发布自己的公钥,openldap客户端下载公钥
客户端有图像界面的话可以用setup配置,运行system-config-authentication,然后勾选使用TLS,输入证书链接(可以用ftp或者http把CA服务器的公钥共享出来)
我这里直接scp过去(由于客户端和我ca服务器在一台,这里我只要复制下就可以,其他同学该rz的rz,该scp的scp吧)
cp /etc/pki/CA/private/CA.key /etc/openldap/cacerts/
  • openldap客户端修改配置
之前的是ldap,现在改为ldaps
1
2
3
4
[root@openldap-ca CA]# cat /etc/openldap/ldap.conf
TLS_CACERTDIR /etc/openldap/cacerts
URI ldaps://openldap.54im.com/
BASE dc=openldap,dc=54im,dc=com

然后重启/etc/init.d/nslcd restart

  • openldap客户端测试
1
2
3
4
5
6
[root@openldap-ca CA]# ldapwhoami -v -x -Z
ldap_initialize( <DEFAULT> )
ldap_start_tls: Operations error (1)
        additional info: TLS already started
anonymous
Result: Success (0)

如果遇到如下错误:

1
2
3
4
5
#ldapwhoami -v -x -Z
ldap_initialize( )
ldap_start_tls: Can’t contact LDAP server (-1)
additional info: TLS error -8172:Peer’s certificate issuer has been marked as not trusted by the user.
ldap_sasl_bind(SIMPLE): Can’t contact LDAP server (-1)

在客户端的ldap.conf中加了“TLS_REQCERT allow”,重启nslcd 后出现了正常结果

  •  ldap验证帐号密码
这里的密码就是之前在openldap服务器端创建的系统帐号密码
1
2
3
4
5
[root@openldap-ca CA]# ldapwhoami -D "uid=ivon01,ou=People,dc=openldap,dc=54im,dc=com" -W -H ldaps://openldap.54im.com -v
ldap_initialize( ldaps://openldap.54im.com:636/??base )
Enter LDAP Password:
dn:uid=ivon01,ou=People,dc=openldap,dc=54im,dc=com
Result: Success (0)
  •  搜索ldap服务器域信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@openldap-ca CA]# ldapsearch -x -b "dc=openldap,dc=54im,dc=com" -H ldaps://openldap.54im.com
# extended LDIF
#
# LDAPv3
# base <dc=openldap,dc=54im,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# openldap.54im.com
dn: dc=openldap,dc=54im,dc=com
dc: openldap
objectClass: top
objectClass: domain

8.配置openldap双主实现高可用 mirrorMode

首先我们来配置一台和主一样的openldap,保证以下条件

一、保证两台服务器里都配置的一样的根dc,比如我的是:dc=openldap,dc=54im,dc=com。

二、两边的管理帐户都有cn=Manager,dc=openldap,dc=54im,dc=com,密码都为54im.com。

三、保证目前AB两台服务器的数据完全一致。如果闲麻烦可以先导出所有数据,然后删除当作全新安装,待同步完成后从其中一台导入即可。

前言:

Openldap 2.4的同步机制已经和2.3完全不同,我这里的同步机制采用的是镜像模式,并且双向镜像。

  • yum安装ldap和http php phpldapadmin
1
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap httpd php php-bcmath php-gd php-mbstring php-xml php-ldap phpldapadmin
  •  配置slapd.conf
1
2
3
suffix "dc=ldap,dc=54im,dc=com"
rootdn "cn=Manager,dc=openldap,dc=54im,dc=com"
rootpw {SSHA}hHZMkvQ3bj07PYOb6emsZHZfGtXvd5g8 //这里用上面产生的密码

我这里是yum安装的,所以config.d下面有phpldapadmin.conf,改下httpd.conf中的servername就可以。

注意:如果是下载的phpldapadmin包接下的话需要修改httpd.conf配置文件,最文件最后新增

  • 配置phpldapadmin
1
2
3
4
5
6
7
8
9
10
11
vi /etc/httpd/conf/httpd.conf 
ServerName openldap2.54im.com
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 192.168.1.0/24
  Allow from ::1
</Directory>

最后启动slpad服务

/etc/init.d/slapd start

  • 访问openldap2.54im.com 的phpldapadmin
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
  • 在openldap.54im.com上导出下数据
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
导出后会是文本的形式显示在界面上,我们把内容负责到一个文件里面叫 openldap.ldif
  • 在openldap2.54im.com上导入数据
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
在openldap 节点2上我们可以看到 把openldap.54im.com 上的数据导入进去了,目前为止2边的数据已经完全一致了。
  • 配置openldap.54im.com上的slapd.conf
注意先备份下原来的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
index entryCSN,entryUUID eq //新增
moduleload syncprov.la   //把前面的注释去掉
modulepath /usr/lib/openldap //把前面的注释去掉
modulepath /usr/lib64/openldap //把前面的注释去掉
配置文件末尾新增
serverID 1
overlay syncprov
syncrepl rid=001
        provider=ldap://192.168.1.137:389
        type=refreshAndPersist
        searchbase="dc=openldap,dc=54im,dc=com"
        schemachecking=on
        bindmethod=simple
        binddn="cn=Manager,dc=openldap,dc=54im,dc=com"
        credentials=54im.com
        retry="60 +"
mirrormode on

由于openldap2上我没有配置TLS,所以这里主主同步我用ldap 389来同步。当然我openldap上同时开了 ldap和ldaps

 这里解释下各参数含义
1
2
3
4
5
6
7
8
9
10
11
12
syncrepl rid=001     #和openldap2 服务器保持一致,告诉openldap2 现在和你是同一组。
provider=ldap://192.168.1.137:389   #B服务器LDAP的IP及端口
type=refreshAndPersist   #设置为持续同步
searchbase="dc=openldap,dc=54im,dc=com"     #从B服务器同步dc=openldap,dc=54im,dc=com
schemachecking=on       #schema验证开启
bindmethod=simple     #密码验证为简单模式(即明文,此处你可以改为加密)
binddn="cn=Manager,dc=lhg,dc=com"     #使用cn=Manager,dc=openldap,dc=54im,dc=com用户进行读取(openldap2服务器上必须有该用户)
credentials=54im.com     #密码为54im.com
retry="60 +"     #重试为60秒,60和“+”之间必须有空格
#以上几个都是syncrepl的参数,可以考虑在一行里完成,我这里在最前面用一个TAB做了换行。
mirrormode              on     #开启镜像模式
重启ldap服务
killall -9 slapd
slapd -h ldap:/// ldaps:///
  • 配置openldap2.54im.com上的slapd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
index entryCSN,entryUUID eq //新增
moduleload syncprov.la   //把前面的注释去掉
modulepath /usr/lib/openldap //把前面的注释去掉
modulepath /usr/lib64/openldap //把前面的注释去掉
配置文件末尾新增
serverID 2
overlay syncprov
syncrepl rid=001
        provider=ldap://192.168.1.143:389
        type=refreshAndPersist
        searchbase="dc=openldap,dc=54im,dc=com"
        schemachecking=on
        bindmethod=simple
        binddn="cn=Manager,dc=openldap,dc=54im,dc=com"
        credentials=54im.com
        retry="60 +"
mirrormode on
openldap2 服务器上我没有配置TLS,这里我可以直接重启ldap服务  /etc/init.d/slapd restart
  • 在openldap.54im.com上新增用户
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
这里可以指定用户所属组,用户的shell
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
确定信息无误,点提交就完成新建用户
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
可以看到在People这个ou已经有我们新建的用户了
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
  • 在openldap2.54im.com上查看用户是否同步,并删掉用户,
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
  • 在openldap2.54im.com上新增组,然后看openldap.54im.com上是否也进行同步
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

9.另一个ldap管理工具 LDAP Account Manager

如果平时帐号操作比较频繁的话,推荐使用ldap account manager这个工具。
LDAPAccountManager(LAM)是一个用来管理储存在一个LDAP目录中的用户的web前端应用程序,管理系统,管理员可以通过加密的方式进行操作,增强了安全性。LAM支持管理的帐号类型有Samba2/3、Unix地址簿接口和计算机需要的信息,包括NIS映射、E-mail假名,MAC地址等。

LDAP Account Manager强大功能

1、使用LAM,可以通过Web接口较为直观的、简便的管理存储在LDAP目录里的用户、用户组和计算机系统账户。

2、管理Unix的用户、用户组、主机、域名。

3、强大的过滤和排序功能。

4、帐号属性管理。

5、多构造属性。

6、直观树状查看模式。

7、计划查看模式。

8、通过文件上传创建帐号。

9、所有帐号可导出为PDF文件格式。

10、管理用户、用户组、配额和自动创建删除用户的Home目录。

11、支持LDAP+SSL加密模式。

12、多国语言支持,如Catalan、Chinese(Traditional)等。

安装需求

1、PHP5语言环境和Perl语言环境。

2、OpenLDAP2.0或更高版本。

3、支持CSS的网页浏览器。

4、Apache WebServer,建议安装SSL、PHP-Module(PHP-Module with ldap、Gettext、XML、Mcrypt+mhash)等模块。

在CentOS6.5安装LDAP Account Manager比较方便,只用用官方提供的rpm包安装。

  • 下载安装:
1
2
wget http://prdownloads.sourceforge.net/lam/ldap-account-manager-4.5-0.fedora.1.noarch.rpm
rpm -ivh ldap-account-manager-4.5-0.fedora.1.noarch.rpm

这里会自动在httpd.conf生成配置文件,非常方便。

cat /etc/httpd/conf.d/lam.apache.conf

  •  配置文件修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
[root@openldap-master config]# cat /usr/share/ldap-account-manager/config/lam.conf | egrep -v "^#|^$"
serverURL: ldap://localhost:389
admins: cn=Manager,dc=openldap,dc=54im,dc=com
passwd: {SSHA}Nbd31hSBKRDW0BqepRYsGpvzC3f26Iib
treesuffix: dc=openldap,dc=54im,dc=com
defaultLanguage: en_GB.utf8:UTF-8:English (Great Britain)
scriptPath:
scriptServer:
scriptRights: 750
cachetimeout: 5
searchLimit: 0
modules: posixAccount_minUID: 10000
modules: posixAccount_maxUID: 30000
modules: posixAccount_minMachine: 50000
modules: posixAccount_maxMachine: 60000
modules: posixGroup_minGID: 10000
modules: posixGroup_maxGID: 20000
modules: posixGroup_pwdHash: SSHA
modules: posixAccount_pwdHash: SSHA
activeTypes: user,group,host,smbDomain
types: suffix_user: ou=People,dc=openldap,dc=54im,dc=com
types: attr_user: #uid;#givenName;#sn;#uidNumber;#gidNumber
types: modules_user: inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
types: suffix_group: ou=group,dc=openldap,dc=54im,dc=com
types: attr_group: #cn;#gidNumber;#memberUID;#description
types: modules_group: posixGroup,sambaGroupMapping
types: suffix_host: ou=machines,dc=openldap,dc=54im,dc=com
types: attr_host: #cn;#description;#uidNumber;#gidNumber
types: modules_host: account,posixAccount,sambaSamAccount
types: suffix_smbDomain: dc=openldap,dc=54im,dc=com
types: attr_smbDomain: sambaDomainName:Domain name;sambaSID:Domain SID
types: modules_smbDomain: sambaDomain
lamProMailSubject: Your password was reset
lamProMailText: Dear @@givenName@@ @@sn@@,+::++::+your password was reset to: @@newPassword@@+::++::++::+Best regards+::++::+deskside support+::+
  •  登录:
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
配置文件中有机器这个OU,数据库中没有,所以这里提示创建machines这个OU
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置
可以按树形结构查看
Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

10.windown上对openldap进行验证

在windows想验证自己搭建的openldap是否配置成功,有个图像化的操作界面,首先电脑上得安装java软件jdk-8u5-windows-x64.exe。(不是浏览器那个java插件)

软件下载:http://pan.baidu.com/s/1ntHQF4P

软件解压后,运行lbe.bat这个

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

11.关闭openldap匿名查询

默认openldap匿名查询开了,所以只要别人知道你的openldap服务器ip就可以扫描到你的组织架构,OU,用户等信息,这些对外公布是不安全的。

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

比如上面这个图,我只输入了openldap的域名,勾上匿名,就可以查到你得额Base DN,然后保存后,就可以连接看到你整个组织架构了。

怎么关闭openldap的匿名查询呢,只要在slapd.conf配置文件中加入disallow bind_anon即可(加在 allow bind_v2 这行后面)。

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

发现已经连接不上我们的openldap了。

12.  附录

12.1. OpenSSL相关命令:

创建CA中心:( umask 77; openssl genrsa -out private/my-ca.key -des3 2048 )

openssl req -new -x509 -key private/my-ca.key -days 365 > my-ca.crt

私钥加密:openssl rsa -in encrypted.key -out unencrypted.key

私钥解密:openssl rsa -in unencrypted.key -out encrypted.key

生成私钥:( umask 77; openssl genrsa 1024 > dovecot.key )

生成CSR:(umask 77; openssl req -new -key somefile.key -out somefile.csr )

可用/etc/pki/tls/certs/Makefile创建CSR

查看CSR:openssl req -noout -in somefile.csr -text

创建CA签名证书:openssl ca -in my.csr -out my.crt

证书吊销:openssl ca -revoke badcert.crt

生成证书吊销列表CRL:openssl ca -gencrl -out revoked.crl

生成DER供firefox使用:openssl crl -in revoked.crl -outform. DER -out revoked.der.crl

检查CRL内容:openssl crl -in revoked.crl -noout -text

12.2 快速清除openldap配置

附:两种快速清除配置、重新导入数据的配置命令

==================     前面五行都是相同的   =====================

1
2
3
4
5
service slapd stop
rm -rf /etc/openldap/slapd.d/*
rm -rf /var/lib/ldap/*
cp /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG
cd  /usr/share/migrationtools

==================     以下为第一种方法   =====================

1
2
3
4
5
6
7
slapadd -v -l frontend.ldif
slapadd -v -l user.ldif
slapadd -v -l groups.ldif
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /var/lib/ldap
chown -R ldap:ldap /etc/openldap/slapd.d
service slapd start          //使用slapadd添加完档案后才启动数据库

==================     以下为第二种方法   =====================

1
2
3
4
5
6
7
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /var/lib/ldap
chown -R ldap:ldap /etc/openldap/slapd.d
service slapd start          //lapdadd命令必须先启动数据库
ldapadd -x -D cn=Manager,dc=kingmed,dc=com -W -f frontend.ldif
ldapadd -x -D cn=Manager,dc=kingmed,dc=com -W -f user.ldif
ldapadd -x -D cn=Manager,dc=kingmed,dc=com -W -f groups.ldif

12.3 手工数据录入

手动录入方法

第一步是要建立DN:

1
2
3
4
5
6
7
    # ldapadd -x -D 'cn=root,dc=openldap,dc=54im,dc=com' -W
    dn: dc=openldap,dc=54im,dc=com
    objectClass: dcObject
    objectClass: organization
    dc: openldap
    o: Corporation
    description: d Corporation

注意:如果你用复制/粘贴功能把以上内容拷贝过去,一定要注意每行后面不要有空格,建议还是手工输入,按Ctrl+d存盘。

第二步是建立RDN:

1
2
    # ldapadd -x -D 'cn=root,dc=openldap,dc=54im,dc=com' -W        
    #-x表示用简单验证,-D表示指定目录,-W表示弹出密码输入提示

输入密码,这里的密码是在配置文件中rootpw项设置的密码,不是操作系统中root用户的密码。验证通过后就可输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    dn: uid=qq,dc=openldap,dc=54im,dc=com
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    uid: qq
    cn: qq
    sn: qq
    telephoneNumber: 138888888
    description: openldap test
    telexNumber: tex-8888888
    street: my street
    postOfficeBox: postofficebox
    displayName: qqdisplay
    homePhone: home1111111
    mobile: mobile99999
    mail:qq@qq.com

输入完所有信息后,按Ctrl+d结束存盘。如果出现出错信息,请查一下对象类和属性的对应关系有没有错或输入失误。初学者就容易出错的地方是对象类和属性的对应关系没有处理好。对象类和属性是在schema文档中定义的。它们之间的关系是这样的,对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。

输入以下命令可查询到刚才输入的信息。

1
2
# ldapsearch -x -b 'dc=openldap,dc=54im,dc=com'            
-b选项是设置目录起点,如果设置了客户端的BASE配置参数,该项可不用。

如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的userPassword and mail。要查询到这些受限内容,需要通过验证才可以:

1
2
# ldapsearch -x -LLL -h openldap.54im.com -b 'dc=openldap,dc=54im,dc=com' -D 'uid=qq,dc=openldap,dc=54im,dc=com' -W 'uid=qq'
接着提示输入密码。输入userPassword的密码回车,所有信息就都出来了。

本文参考:

http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=4

http://iceblood.blog.163.com/blog/static/11331322720125843938486/

http://blog.sina.com.cn/s/blog_92dc41ea0101fyh9.html

http://blog.sina.com.cn/s/blog_64aac6750101gwst.html

http://mosquito.blog.51cto.com/2973374/1098456