openLDAP 部署(亲测可用)

前言

最近在搭建openLDAP时候百度了挺多文章,大多都缺失一部分,或者进行不下去。个人整理出文章供大家参考 ,如有错误请指出。

介绍

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

该LDAP信息模型是基于条目。LDAP目录中的条目代表单个单位或信息,并由所谓的专有名称(DN)唯一标识。每个条目的属性都有一个类型和一个或多个值。
  
属性是与条目关联的一条信息。这些类型通常是助记符字符串,例如,“ cn ”代表通用名称,“ mail ”代表电子邮件地址。为每个属性分配一个或多个值,这些值由空格分隔的列表组成。

以下说明了如何在LDAP目录中安排信息。

Ldap信息模型openLDAP 部署(亲测可用)
 
在本文中,我们将展示如何在CentOS 7中安装和配置OpenLDAP服务器以进行集中身份验证。

安装

  • 环境介绍
  • CentOS 7.6
  • 关闭防火墙
  • ldap版本2.4.xx

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

#yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-devel 

2.在CentOS 7上,运行以下命令以启动openldap服务器守护程序,使其在启动时自动启动,并检查其是否启动并运行

# systemctl start slapd
# systemctl enable slapd
# systemctl status slapd
# slapd -VV

配置ldap server

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

  1. 现在创建一个OpenLDAP管理用户,并为该用户分配密码。在以下命令中,将为给定密码创建一个哈希值,请注意该哈希值,您将在LDAP配置文件中使用它。
# slappasswd

openLDAP 部署(亲测可用)

  1. 然后创建一个LDIF文件(ldaprootpasswd.ldif),该文件用于将条目添加到LDAP目录。
# vim ldaprootpasswd.ldif

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

explaining the attribute-value pairs above:

> olcDatabase: indicates a specific database instance name and can be typically found inside /etc/openldap/slapd.d/cn=config.
 cn=config: indicates global config options.
 PASSWORD: is the hashed string obtained while creating the administrative user.

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

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

配置 LDAP 数据

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

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

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

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

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

#  vim ldapdomain.ldif

在其中添加以下内容(将示例替换为您的域,并将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

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

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

5.在这一步中,我们需要向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 

Save the file and then add the entries to the LDAP directory.

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

6.下一步是创建LDAP用户(例如tecmint),并为该用户设置密码,如下所示。

#  useradd tecmint
#  passwd tecmint

7.然后在具有以下内容的名为ldapgroup.ldif的文件中为LDAP组创建定义。

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

在以上配置中,gidNumber是/ etc / group中tecmint的GID,并将其添加到OpenLDAP目录中。

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

8.接下来,创建另一个名为ldapuser.ldif的LDIF文件,并添加用户tecmint的定义。

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进行身份验证,可以使用phpldapadmin或ldapadmin.exe(推荐)

有关更多信息,请参阅《OpenLDAP软件》文档目录中的相应文档

上一篇:用ldap作为django后端用户登录验证


下一篇:Windows Server 2019 搭建DC域控