网站搜索

如何安装 OpenLDAP 服务器进行集中身份验证


轻量级目录访问协议(简称LDAP)是一组用于访问目录服务的行业标准、轻量级、广泛使用的协议。目录服务是一种共享信息基础设施,用于访问、管理、组织和更新日常项目和网络资源,例如用户、组、设备、电子邮件地址、电话号码、卷和许多其他对象。

LDAP 信息模型基于条目。 LDAP 目录中的条目代表单个单元或信息,并由所谓的专有名称 (DN) 唯一标识。每个条目的属性都有一个类型和一个或多个值。

属性是与条目关联的一条信息。这些类型通常是助记符字符串,例如“cn”表示常用名称,或“mail”表示电子邮件地址。每个属性都分配有一个或多个由空格分隔的列表组成的值。

下图说明了 LDAP 目录中信息的排列方式。

在本文中,我们将展示如何在 Ubuntu 16.04/18.04CentOS 7 中安装和配置 OpenLDAP 服务器进行集中身份验证。

第 1 步:安装 LDAP 服务器

1. 首先使用以下命令安装 OpenLDAP,这是 LDAP 的开源实现以及一些传统的 LDAP 管理实用程序。

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

Ubuntu 上,在软件包安装过程中,系统将提示您输入 LDAP 目录中管理员条目的密码,设置安全密码并确认。

安装完成后,您可以按照下面的说明启动该服务。

2.CentOS 7上,运行以下命令启动openldap服务器守护进程,使其在启动时自动启动,并检查是否它已启动并正在运行(在 Ubuntu 上,该服务应该在 systemd 下自动启动,您可以简单地检查其状态):

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. 接下来,允许通过防火墙向 LDAP 服务器守护程序发出请求,如图所示。

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

第2步:配置LDAP服务器

注意:不建议手动编辑LDAP配置,需要将配置添加到文件中并使用ldapaddldapmodify 命令将它们加载到 LDAP 目录,如下所示。

4. 现在创建一个 OpenLDAP 管理用户并为该用户分配一个密码。在下面的命令中,为给定的密码创建一个哈希值,记下它,您将在 LDAP 配置文件中使用它。

slappasswd

5. 然后创建一个 LDIF 文件 (ldaprootpasswd.ldif),用于向 LDAP 目录添加条目。

sudo vim ldaprootpasswd.ldif

在其中添加以下内容:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

解释上面的属性值对:

  • olcDatabase:表示特定的数据库实例名称,通常可以在/etc/openldap/slapd.d/cn=config中找到。
  • cn=config:表示全局配置选项。
  • PASSWORD:是创建管理用户时获得的散列字符串。

6. 接下来,通过指定引用 ldap 服务器和上面文件的 URI 添加相应的 LDAP 条目。

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

步骤 3:配置 LDAP 数据库

7. 现在将 slapd 的示例数据库配置文件复制到 /var/lib/ldap 目录中,并对该文件设置正确的权限。

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. 接下来,从 /etc/openldap/schema 目录导入一些基本的 LDAP 模式,如下所示。

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif 
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

9. 现在将您的域添加到 LDAP 数据库中,并为您的域创建一个名为 ldapdomain.ldif 的文件。

sudo vim ldapdomain.ldif 

在其中添加以下内容(将 example 替换为您的域名,将 PASSWORD 替换为之前获得的哈希值):

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=example,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read

10. 然后使用以下命令将上述配置添加到 LDAP 数据库中。

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. 在此步骤中,我们需要向 LDAP 目录添加一些条目。使用以下内容创建另一个名为 baseldapdomain.ldif 的文件。

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

保存文件,然后将条目添加到 LDAP 目录。

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12.下一步是为examplehowtoing创建一个LDAP用户,并为该用户设置密码,如下所示。

sudo useradd tecmint
sudo passwd tecmint

13. 然后在名为 ldapgroup.ldif 的文件中使用以下内容创建 LDAP 组的定义。

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

在上面的配置中,gidNumber/etc/grouphowtoingGID,并将其添加到OpenLDAP中目录。

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. 接下来,创建另一个名为 ldapuser.ldifLDIF 文件,并添加用户 howtoing 的定义。

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

然后将配置加载到 LDAP 目录。

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

设置用于身份验证的中央服务器后,最后一部分是使客户端能够使用 LDAP 进行身份验证,如本指南中所述:

  1. 如何配置 LDAP 客户端以连接外部身份验证

有关更多信息,请参阅 OpenLDAP 软件文档目录中的相应文档,Ubuntu 用户可以参阅 OpenLDAP 服务器指南。

概括

OpenLDAP 是 Linux 中 LDAP 的开源实现。在本文中,我们展示了如何在 Ubuntu 16.04/18.04 和 CentOS 7 中安装和配置 OpenLDAP 服务器以进行集中身份验证。如果您有问题或想法要分享,请随时通过下面的评论表与我们联系。