首页>云计算大数据

在 RHEL 7 中设置基于 LDAP 的认证!

更新时间:2015-10-13

在这篇文章中,我们将首先罗列一些 LDAP 的基础知识(它是什么,它被用于何处以及为什么会被这样使用),然后向你展示如何使用 RHEL 7 系统来设置一个 LDAP 服务器以及配置一个客户端来使用它达到认证的目的。

正如你将看到的那样,关于认证,还存在其他可能的应用场景,但在这篇指南中,我们将只关注基于 LDAP 的认证。另外,请记住,由于这个话题的广泛性,在这里我们将只涵盖它的基础知识,但你可以参考位于总结部分中列出的文档,以此来了解更加深入的细节。

基于相同的原因,你将注意到:为了简洁起见,我已经决定省略了几个位于 man 页中 LDAP 工具的参考,但相应命令的解释是近在咫尺的(例如,输入 man ldapadd)。

那还是让我们开始吧。

我们的测试环境

我们的测试环境包含两台 RHEL 7机器:


  1. Server: 192.168.0.18. FQDN: rhel7.mydomain.com

  2. Client: 192.168.0.20. FQDN: ldapclient.mydomain.com

如若你想,你可以使用在 RHCSA 系列(十二): 使用 Kickstart 完成 RHEL 7 的自动化安装 中使用 Kickstart 安装的机子来作为客户端。

LDAP 是什么?

LDAP 代表轻量级目录访问协议Lightweight Directory Access Protocol,并包含在一系列协议之中,这些协议允许一个客户端通过网络去获取集中存储的信息(例如所登录的 shell 的路径,家目录的绝对路径,或者其他典型的系统用户信息),而这些信息可以从不同的地方访问到或被很多终端用户获取到(另一个例子是含有某个公司所有雇员的家庭地址和电话号码的目录)。

对于那些被赋予了权限可以使用这些信息的人来说,将这些信息进行集中管理意味着可以更容易地维护和获取。

下面的图表提供了一个简化了的关于 LDAP 的示意图,在下面将会进行更多的描述:

 

下面是对上面示意图的一个详细解释。

  • 在一个 LDAP 目录中,一个

    条目entry

    代表一个独立单元或信息,被所谓的

    区别名DN,Distinguished Name

    唯一识别。

  • 一个

    属性attribute

    是一些与某个条目相关的信息(例如地址,有效的联系电话号码和邮箱地址)。

  • 每个属性被分配有一个或多个

    value

    ,这些值被包含在一个以空格为分隔符的列表中。每个条目中那个唯一的值被称为一个

    相对区别名RDN,Relative Distinguished Name

接下来,就让我们进入到有关服务器和客户端安装的内容。

安装和配置一个 LDAP 服务器和客户端

在 RHEL 7 中, LDAP 由 OpenLDAP 实现。为了安装服务器和客户端,分别使用下面的命令:


  1. # yum update && yum install openldap openldap-clients openldap-servers

  2. # yum update && yum install openldap openldap-clients nss-pam-ldapd

一旦安装完成,我们还需要关注一些事情。除非显示地提示,下面的步骤都只在服务器上执行:

1. 在服务器和客户端上,为了确保 SELinux 不会妨碍挡道,长久地开启下列的布尔值:


  1. # setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0

其中 allow_ypbind 为基于 LDAP 的认证所需要,而 authlogin_nsswitch_use_ldap则可能会被某些应用所需要。

2. 开启并启动服务:


  1. # systemctl enable slapd.service

  2. # systemctl start slapd.service

记住你也可以使用 systemctl 来禁用,重启或停止服务:


  1. # systemctl disable slapd.service

  2. # systemctl restart slapd.service

  3. # systemctl stop slapd.service

3. 由于 slapd 服务是由 ldap 用户来运行的(你可以使用 ps -e -o pid,uname,comm | grep slapd 来验证),为了使得服务器能够更改由管理工具创建的条目,该用户应该有目录/var/lib/ldap 的所有权,而这些管理工具仅可以由 root 用户来运行(紧接着有更多这方面的内容)。

在递归地更改这个目录的所有权之前,将 slapd 的示例数据库配置文件复制进这个目录:


  1. # cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

  2. # chown -R ldap:ldap /var/lib/ldap

4. 设置一个 OpenLDAP 管理用户并设置密码:


  1. # slappasswd

正如下一幅图所展示的那样:

 

然后以下面的内容创建一个 LDIF 文件(ldaprootpasswd.ldif):


  1. dn: olcDatabase={0}config,cn=config

  2. changetype: modify

  3. add: olcRootPW

  4. olcRootPW: {SSHA}PASSWORD

其中:

  • PASSWORD 是先前得到的经过哈希处理的字符串。

  • cn=config 指的是全局配置选项。

  • olcDatabase 指的是一个特定的数据库实例的名称,并且通常可以在 /etc/openldap/slapd.d/cn=config 目录中发现。

根据上面提供的理论背景,ldaprootpasswd.ldif 文件将添加一个条目到 LDAP 目录中。在那个条目中,每一行代表一个属性键值对(其中 dn,changetype,add 和 olcRootPW 为属性,每个冒号右边的字符串为相应的键值)。

随着我们的进一步深入,请记住上面的这些,并注意到在这篇文章的余下部分,我们使用相同的通用名Common Names

上一篇:使用 Kickstart 完成 RHEL 7 的自动化安装!...

下一篇:2015 年 10 月份工商银行(上海)数据中心,Python 基础培训+自动化培训,圆满成功...

金源在线客服

QQ在线咨询

咨询电话
010-82601028

在线咨询