基于OpenLDAP和PAM用户登录系统

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
基于OpenLDAP和PAM用户登录系统_第1张图片配置完成,那么登录的话注意修改,我们采用cn登录而不是uid
修改配置文件:vim /etc/phpldapadmin/config.php

$servers->setValue('login','attr','dn');    这一行的注释去掉
//$servers->setValue('login','attr','uid');  这一行注释掉

再重启httpd服务即可,然后点击登录,输入完整的条目名称和密码
基于OpenLDAP和PAM用户登录系统_第2张图片基于OpenLDAP和PAM用户登录系统_第3张图片
登录成功!!!

接下来我们进行OpenLDAP配置用户登录服务

4、OpenLDAP和PAM配置用户登录

你可能感兴趣的:(OpenLDAP)