OpenLDAP 编译安装

使用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。随着 Linux® 的不断成熟,已经出现了很多工具用来简化用户帐号信息到 LDAP 目录的迁移。还开发了一些工具用来在客户机和目录服务器之间启用加密通信配置,并通过复制提供容错性。

本文安装背景:

  • 新建ldap用户并赋予sudo权限;

  • 用ldap用户登陆;

下载OpenLDAP:

下载openldap-2.4.44.tgz

上传并解压OpenLDAP:

1
2
3
4
5
6
7
8
9
tar zxf openldap-2.4.44.tgz;

mv openldap-2.4.44 openldap-2.4.44_install;

cd openldap-2.4.44_install;

cat README;

cd -;

根据README中以下提示选择下载推荐的Berkeley DB版本:

1
2
SLAPD:  
BDB and HDB backends require Oracle Berkeley DB 4.4 - 4.8,or 5.0 - 5.1. It is highly recommended to apply the patches from Oracle for a given release.

从以下地址下载BerkeleyDB:

注意先查看OpenLADP解压后的README文件进行版本选择。

下载BerkeleyDB

安装BerkeleyDB:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
tar zxf db-5.1.29.tar.gz;

mv db-5.1.29 db-5.1.29_install;

cd db-5.1.29_install/build_unix;

../dist/configure --prefix=/home/ldap/db-5.1;

sudo make && sudo make install;

cd -;

sudo sh -c "echo '/home/ldap/db-5.1/lib' > /etc/ld.so.conf.d/bdb.conf";

sudo ldconfig -v;

sudo ln -sv /home/ldap/db-5.1/include /usr/include/bdb;

安装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
31
32
33
34
35
sudo yum install *ltdl*

export CPPFLAGS="-I/home/ldap/db-5.1/include -D_GNU_SOURCE";

export LDFLAGS="-L/home/ldap/db-5.1/lib";

cd openldap-2.4.44_install;

sudo ./configure --prefix=/home/ldap/openldap-2.4 --enable-syslog --enable-modules --with-tls;

sudo make depend && sudo make;

sudo make test; # make test 耗时较长,可忽略。

sudo make install;

sudo chown -R ldap:ldap /home/ldap/openldap-2.4;

cd -;

echo "
#### LDAP PATH ####
PATH=\$PATH:\$HOME/openldap-2.4/sbin:\$HOME/openldap-2.4/bin:\$HOME/openldap-2.4/libexec
export PATH
" >> ${HOME}/.bash_profile;

. ${HOME}/.bash_profile;

sudo sh -c "echo '/home/ldap/openldap-2.4/lib' > /etc/ld.so.conf.d/openldap.conf";

sudo ldconfig -v;

sudo ln -sv /home/ldap/openldap-2.4/include /usr/include/openldap;

cp /home/ldap/openldap-2.4/etc/openldap/DB_CONFIG.example /home/ldap/openldap-2.4/var/openldap-data/DB_CONFIG;

检查OpenLDAP是否安装成功:

1
ls -1 openldap-2.4/etc/openldap/schema/*.schema;

初始化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
31
32
33
vi /home/ldap/openldap-2.4/etc/openldap/slapd.conf;

#### 按自己的信息和需要添加或修改以下内容 ####

include /home/ldap/openldap-2.4/etc/openldap/schema/core.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/collective.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/corba.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/cosine.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/duaconf.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/dyngroup.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/inetorgperson.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/java.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/misc.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/nis.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/openldap.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/pmi.schema
include /home/ldap/openldap-2.4/etc/openldap/schema/ppolicy.schema

loglevel 256

database bdb
suffix "dc=huangzhongzhang,dc=cn"
rootdn "cn=root,dc=huangzhongzhang,dc=cn"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}hxKX8DhWY3dsaGkB4VPWlP0AouIfe0mv #使用slappasswd命令获取
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /home/ldap/openldap-2.4/var/openldap-data
# Indices to maintain
index objectClass eq
1
2
3
4
5
6
7
8
9
vi /home/ldap/openldap-2.4/etc/openldap/ldap.conf;

#### 按自己的信息和需要添加或修改以下内容 ####

#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666

BASE dc=huangzhongzhang,dc=cn
URI ldap://:10086

增加日志输出

1
2
3
4
5
sudo sh -c "echo 'local4.*                                                /home/ldap/openldap-2.4/var/slapd.log' >> /etc/rsyslog.conf";

touch /home/ldap/openldap-2.4/var/slapd.log;

sudo /etc/init.d/rsyslog restart;

启动OpenLDAP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
slapd -h ldap://:10086 -d any; #尝试启动并查看日志是否正常

slaptest; #测试配置,monitoring disabled 提示可忽略

cd openldap-2.4/etc/openldap;

mkdir slapd.d;

slaptest -f slapd.conf -F slapd.d; #创建cn=config配置,官方推荐直接通过cn=config进行配置

mv ldap.conf ldap.conf_bak;mv slapd.conf slapd.conf_bak; #备份并屏蔽conf文件,避免误操作把cn=config还原

cd -;

slapd -h ldap://:10086; #以指定端口启动

测试写入和查询:

创建测试文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
echo "
dn: dc=huangzhongzhang,dc=cn
objectClass: dcObject
objectClass: organization
dc: huangzhongzhang
o: huangzhongzhang.cn

dn: cn=root,dc=huangzhongzhang,dc=cn
objectClass: organizationalRole
cn: root

dn: ou=dba,dc=huangzhongzhang,dc=cn
objectClass: organizationalUnit
ou: dba

dn: cn=zhongzhang,ou=dba,dc=huangzhongzhang,dc=cn
objectClass: inetOrgPerson
objectClass: organizationalPerson
ou: dba
cn: zhongzhang
sn: huangzhongzhang
" > test.ldif

插入数据

1
ldapadd -H ldap://:10086 -x -D "cn=root,dc=huangzhongzhang,dc=cn" -W -f test.ldif;

验证数据

1
ldapsearch -H ldap://:10086 -x -b "dc=huangzhongzhang,dc=cn";

使用 LdapAdmin 对 OpenLDAP 进行管理

下载软件和语言包:

下载LdapAdmin

下载中文包

解压LdapAdmin,把下载的Chinese-utf8.llf放入解压后的LdapAdmin目录。

打开软件并设置语言:

双击打开软件,”Tools”——“Language”——“中文UTF-8(U)”

配置连接:

“开始”——“连接”——“新建连接”

OpenLDAP配置

配置完成后,点击”测试连接”:

验证配置

测试成功后,就可以登录进行管理了:

登陆管理

使用 Apache Directory Studio 对 OpenLDAP 进行管理

对于使用 Linux 或 Mac 的童鞋,可以使用 Apache 开发的工具 Apache Directory Studio 对 OpenLDAP 进行管理。具体操作也十分简单,这里就不做累述。

Done!