System:Centos 7.6
OpenLDAP:2.4.49
一、简介
1、OpenLDAP
OpenLDAP是一款轻量级目录服务器,以较低资源实现大部分目录服务器的功能,因此受到大家欢迎。
2、PAM
PAM主要是由一组共享库文件(.so 文件)和一些配置文件组成。当用户请求服务时,具有 PAM 认证功能的应用程序将与这些.so 文件进行交互,以此判断是否可以授权给发起请求的用户来使用服务,比如 su、vsftp、httpd 等。如果认证成功,那么用户便可以使用该服务或命令;如果认证失败,用户将不能使用该服务,同时,PAM 将向指定的 log 文件写入警告信息。PAM 不依赖于任何应用或服务,用户完全可以升级这些应用或服务而不必管 PAM 的共享库的更新或升级,反之亦然。所以它非常的灵活
二、配置过程
1、OpenLDAP安装
下载openldap-2.4.49.tgz
由于bdb和hdb在2.4之后的版本将被废弃(新版bdb已经不再支持OpenLDAP后续版本),所以我们不再配置berkeylayDB,而使用OpenLDAP默认推荐的mdb(LMDB内存映射数据库,所以再configure中不开启bdb和hdb,这样就不会有bdb数据库报错。
tar -xvf openldap-2.4.49.tgz
cd openldap-2.4.49
./configure --enable-bdb=no --enable-hdb=no
进一步进行编译安装,源码安装默认文件夹为/usr/local/etc/openldap/
执行文件slapd位于/usr/local/libexec/slapd
配置文文件位于/usr/local/etc/openldap/ (包含slapd.conf、slapd.ldif、ldap.conf等)
make depend
make
make install
编译安装后可以执行测试,当然也可以跳过
make test
2、OpenLDAP配置
OpenLDAP配置方法一共有两种,老版本使修改slapd.conf方式修改配置,2.4以后的新版本推荐修改slapd.ldif,当然新2.4.49的版本也兼容使用slapd.conf。
因此我们介绍两种方式配置:
2.1、采用slapd.conf配置(简单,但是未来版本会抛弃)
切换到配置目录/usr/local/etc/openldap/
cd /usr/local/etc/openldap/
vi /usr/local/etc/openldap/slapd.conf
原先只有core.schema,我们再添加新的schema数据库配置文件
include /usr/local/etc/openldap/schema/collective.schema
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/duaconf.schema
include /usr/local/etc/openldap/schema/dyngroup.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/pmi.schema
include /usr/local/etc/openldap/schema/ppolicy.schema
loglevel -1
suffix "dc=sys,dc=com"
rootdn "cn=admin,dc=sys,dc=com"
rootpw 123456
需要添加loglevel -1以输出报错信息,建议空格用TAB键
dc=sys,dc=com表示你的域名是sys.com
rootdn为LDAP的root用户
rootpw为密码
配置完成后可以执行程序
/usr/local/libexec/slapd
通过以下多种命令查看是否成功(任选)
netstat -tunlp | grep 389
ps -ef | grep slapdldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
ps aux | grep slapd
杀死slapd进程方式(任选)
cat /usr/local/var/run/slapd.pid
kill -9 该pid数字
kill slapd
2.2采用slapd.ldif配置(比较繁琐,但是新版本将一直支持)
vi slapd.ldif
include /usr/local/etc/openldap/schema/collective.schema
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/duaconf.schema
include /usr/local/etc/openldap/schema/dyngroup.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/pmi.schema
include /usr/local/etc/openldap/schema/ppolicy.schema
loglevel -1
olcSuffix: dc=sys,dc=com
olcRootDN: cn=admin,dc=sys,dc=com
olcRootPW: 12345
重点来了,创建一个slapd.d数据库配置目录,以后slapd指定以该目录启动启动(请提前mkdir /usr/local/etc/slapd.d)
mkdir /usr/local/etc/slapd.d
/usr/local/sbin/slapadd -n 0 -F /usr/local/etc/slapd.d -l /usr/local/etc/openldap/slapd.ldif
slapd指定以该目录启动(若无指定目录,则以默认slapd.conf目录启动,那么则以slapd.conf配置启动)
/usr/local/libexec/slapd -F /usr/local/etc/slapd.d
目前为止,配置问题结束,可以通过上述多种命令查看是否成功,推荐
ps -ef | grep slapdldapsearch -x -b ‘’ -s base ‘(objectclass=*)’ 命令,因为可以看到你配置域名是否正确,系统默认是my-domin.com,所以你修改以后看看是否正确启动
3、phpLDAPadmin配置
既然已经完成了服务器配置,那么我们看看用什么方式连接OpenLDAP服务器,这里推荐phpLDAPadmin,非常方便
yum install -y phpldapadmin
修改该工具配置文件
vi /etc/httpd/conf.d/phpldapadmin.conf
注意,Apache2.4以后的版本,允许所有访问改为了: Require all granted
而Allow from all是2.2之前版本
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
<IfModule mod_authz_core.c>
# Apache 2.4
#Require local
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
修改完成后重启httpd服务
service httpd restart
或者
systemctl httpd restart
浏览器访问:ip地址/ldapadmin
配置完成,那么登录的话注意修改,我们采用cn登录而不是uid
修改配置文件:vim /etc/phpldapadmin/config.php
$servers->setValue('login','attr','dn'); 这一行的注释去掉
//$servers->setValue('login','attr','uid'); 这一行注释掉
再重启httpd服务即可,然后点击登录,输入完整的条目名称和密码
登录成功!!!
接下来我们进行OpenLDAP配置用户登录服务
4、OpenLDAP和PAM配置用户登录