2020年,手把手教你如何在CentOS7上一步一步搭建LDAP服务器的最新教程

同步滚动:关

什么是LDAP

什么是LDAP?

要想知道一个概念,最简单的办法就是wikipedia,当然也可以百科。

LDAP全称是轻型目录访问协议(Lightweight Directory Access Protocol)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。

简单理解起来就是LADP包含一个数据库存储了树状结构组织数据,和一套协议,第三方可通过这套协议进行数据的查询与搜索的功能。

它用的协议基于X.500标准的轻量级目录访问协议,是一种开放Internet标准,LADP协议是跨平台的Internt协议,

总结来说LDAP是由目录数据库和一套访问协议组成的系统。

为什么用LDAP

要知道为什么,我们就需要了解LDAP能解决什么问题?

众所周知,当一个公司规模之后,会有无数的系统进行工作,如果每一个系统都需要注册自己的用户名,每一个系统的用户名与密码可能都不一样。对个人来说就是一件折腾的事情,从公司的IT安全角度来说更是麻烦。

所以需要统一认证,单点登录。

LDAP就是最适合在单点登录中使用的系统了。

因为LDAP是一个开放的,中立的,工业标准的应用协议,它支持跨平台,数据配置简单且功能单一,稳定性高且查询性能好,使用它做认证服务可降低重复开发和对接的成本。

LDAP 的基本数据模型

LDAP 的基本数据模型就是一种树状的组织数据,但就是这些名称有点叫人哭笑不得。要了解LDAP,至少要了解以下概念。

LDAP的数据是树状结构, 所有条目(或者对象)都定义在树结构中。

条目下的树状结构称为目录信息树(DIT)。

一个完整的条目有唯一可识别的名称,我们叫之为区别名(DN)。

在DN的子节点下的一个单独节点或者路径,我们称之为RDU。

通常一个条目(或者对象)在存储在这两种类型对象中

  1. 容器(container):这种对象本身可以包含其他对象。 例如:root(目录树的根元素,它实际上并不存在),c(国家/地区),ou(组织单位)和dc(域)。 容器(container)与与文件系统中的目录相当。
  2. (叶子节点)leaf:这种对象位于节点的末端,不能再包含其它对象。 例如person,InetOrgPerson,groupofNames。

每一个对象有包含一些属性,属性的值决定了该对象必须遵循的一些规则。

最后还需要记住LDAP里的简称

  • o:organization(组织-公司)
  • ou:organization unit(组织单元-部门)
  • c:countryName(国家)
  • dc:domainComponent(域名)
  • sn:suer name(真实名称)
  • cn:common name(常用名称)

例子:

i例子

例如上图的babs条目中:

DN:uid=babs,ou=people,dc=example,dc=com

相对于ou=people,dc=example,dc=com 节点的RDN:uid=babs ObjectClass:Person

本文只提一些关键的LDAP概念,更详细更具体请自己学习官方文档。

搭建LDAP服务器

使用的环境:OpenLDAP 2.4, Centos7.6

第一步 更新环境

运行: yum update

第二步 安装 OpenLdap

安装OPenLDAP与相关安装包

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

安装

安装完成

安装完之后,可以直接启动服务并且将服务设置为自启动状态。运行如下命令

systemctl start slapd
systemctl enable slapd

启动完之后可以查验slapd服务是否正在运行

netstat -antup | grep -i 389

可看到如下图

安装成功

第三步 创建LDAP的根密码

此密码用于整个安装过程,是LADP的管理员根密码,使用slappasswd 命令生成密码
输入slappasswd后提示输入密码与确认密码,系统会输出一串SSHA加密后的字符串,请Copy出来保存在记事本中。
我设置的密码是Ricman,加密后出来的字符串是
{SSHA}KUYZ4irDCPN8seoOg1zNNVzh70jVr1c8

设置密码

第四步 配置LDAP服务

这是整个过程中最难的地方,目前整个网络上能搜索到的,几乎都是过时配置方式,Ricman也是踩着坑爬出来的,希望此文能给在今后的日子,能帮助道友们少走弯路。

要怎么修改配置,OPenLdap 2.4不再推荐直接使用配置文件方式,并且极容易出错,修改的所有过程,均使用ldapmodify完成

我们可以先看一下目前配置都有哪些文件,执行命令

cd /etc/openldap/slapd.d/cn=config
ls

i查看配置文件

输出如下图,可能些人的结果不一样,但是几乎差不多,注意文件的名称,一会修改配置的时候,会使用到。

当然,你可以使用cat 来查看文件内容,可以看到原始的内容。

文件内容

我们要修改的字段有:

olcSuffix – 用于保存域信息,需要更新为自己的域

olcRootDN – 根的DN(唯一识别名),根的区别名,它用于根管理员在此节点下做所有的管理

olcRootPW – LDAP 管理员的根密码,用刚刚第三步创建出来的密码设置到这里

我们在任意目录下创建 db.ldif文件。Ricman的经验最好不要在/etc/openldap/slapd.d/cn=config目录下创建,因为这目录保存着原始的配置文件,当使用slaptest -u 测试配置时会报错。我偷懒,直接在根目录下创建,运行cd ~便可切换到根目录(在根目录下创建文件是不好行为,为方便说明安装过程,就暂时使用)

修改db文件

这db文件不是数据库文件,只是ldap中配置文件中一个,可能是mdb,也可能是各种*db,Ricman安装的是hdb。

运行 vi db.ldif

在此文件中编辑的内容如下

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

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

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

内容

请注意上面内容中的olcSuffix, olcRootDN, olcRootPW这三个字段,是需要修改成自己的内容的。
特别需要注意是的olcRootPW字段,因为这个字段在刚刚查看olcDatabase={2}hdb.ldif中是不存在的,所以使用add,表示增加,如果字段已经存在,使用replace,表示进行替换内容

完成编辑后,使用ldapmodify让修改的内容生效。

ldapmodify命令可在运行环境中直接修改配置文件并且不需要重启就生效的命令,具体请看ldapmodify官方使用文档。

在db.ldif目录下运行命令

ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif

输出如下图,一定要注意在有三个modifying entry才全部更新成功。

modifying entry

修改monitor文件

与修改db文件相似。在刚刚的db.ldif目录下运行命令

vi monitor.ldif

在此文件中输入以下内容

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=max,dc=localhost" read by * none

请自己修改db.base中的内容,这个等号后面的内容是上面db.ldif中的olcRootDN是一致的。

保存文件后同样使用ldapmodify让其生效。

ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif

输出如下图

monitor

同样,要出现modifying entry才成功。如上图中Ricman在编辑文件时多写了一行,所以出错了。请注意检查自己编辑的monitor文件。

创建ldap 基础库

这里创建的是一个基础库,用于保存数据。安装ldap后会有一个example配置,需要我们复制一份配置文件并赋予它所有权限

运行以下命令

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/*

image.png

完成配置后,我们就可以向数据库中增加schemas,需要增加的有:cosine , nis,inetorgperson

schemas是什么鬼,schemas就是数据库表的定义文件,相当于关系数据库中的表定义。当然稍有区别。具体可以参考文档说明understanding-ldap-schema

执行ldapadd命令增加,命令如下

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

以上三条命令是一条一条执行,每一条输出如下图

base DB

完成以后,就可以创建base.ldif,在库中增加自己管理域下的内容,运行命令

vi base.ldif

在文件中输入以下内容

dn: dc=ricman,dc=localhost
dc: ricman
objectClass: top
objectClass: domain

dn: cn=Manager ,dc=ricman,dc=localhost
objectClass: organizationalRole
cn: Manager
description: LDAP Manager

dn: ou=People,dc=ricman,dc=localhost
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=ricman,dc=localhost
objectClass: organizationalUnit
ou: Group

同样的,需要修改为你自己的域

运行命令将此数据保存到库中去

ldapadd -x -W -D "cn=Manager,dc=ricman,dc=localhost" -f base.ldif

此命令会提示输入ldap的密码,输入的密码同上面第三步创建的密码一致,我这里输入:ricman

输出如下图

更新数据

至此,完成基本的配置

管理Ldap

在网上下载Ldap Admin,我使用的是window7系统,直接使用Ldap admin来管理个人觉得还是很爽的。

连接之前,我们需要设置一下服务器的防火墙,允许ldap例外。

运行命令

firewall-cmd --permanent --add-service=ldap
firewall-cmd --reload

设置防火墙

接下来,可以使用ldap admin进行管理了。点击 connect->new connect

新建立连接

然后设置好 Host,Base以及用户名与密码

用户名要使用管理员,本例子中是 cn=Manager ,dc=ricman,dc=localhost

密码为上面第三步创建的密码,本方使用的密码为ricman

连接设置

点击测试连接,成功后直接点击连接即可进入管理界面,如下图

连接成功

管理工具

就可以使用工具创建自己所需要的用户,组织

卸载 Ldap

如果需要卸载 ,需要先停止服务,然后yum remove
systemctl stop slapd

yum remove ompat-openldap openldap-clients openldap-servers

当然,别忘记了DB_CONFIG以及配置文件,也要将其删除

rm -rf /var/lib/ldap/*
rm -rf /etc/openldap/slapd.d/*

至此全文结束。如有转载,请标明转载来源,谢谢

原文地址:https://www.cnblogs.com/xiaoshou/p/12337620.html

时间: 2024-10-06 21:19:08

2020年,手把手教你如何在CentOS7上一步一步搭建LDAP服务器的最新教程的相关文章

手把手教你在win10系统上安装、配置MySQL 5.7.19数据库

关于数据库这个东东,可能还有很多小伙伴没有接触过,这里简单说一下吧,数据库就是按照数据结构来组织.存储.管理数据的仓库,它可以高效的存储和管理数据,用途及其广泛,比如网站建设开发.软件应用开发等领域,我们常见的数据库有Access.Sqlserver.Mysql.Oracle等,今天亦是美网络小编给大家介绍的是mysql数据库,因为网络上80%以上的网站采用的是PHP+Mysql的搭配组合,想要学习网站建设开发,不了解Mysql数据库是说不过去的哦! 首先下载最新版MySQL数据库安装包,官网下

如何在CentOS7上改变网络接口名

如何在CentOS7上改变网络接口名 传统上,Linux的网络接口被枚举为eth[0123...],但这些名称并不一定符合实际的硬件插槽,PCI位置,USB接口数量等,这引入了一个不可预知的命名问题(例如,由于不确定的设备探测行为),这可能会导致不同的网络配置错误(例如,由无意的接口改名引起的禁止接口或者防火墙旁路).基于MAC地址的udev规则在虚拟化的环境中并不有用,这里的MAC地址如端口数量一样无常. CentOS/RHEL6引入了一致和可预测的网络设备命名网络接口的方法.这些特性可以唯一

手把手教你如何在Ubuntu系统中安装Pycharm

前几天带大家一起安装了Ubuntu14.04系统,没来得及上车的伙伴可以戳这篇文章:手把手教你在VMware虚拟机中安装Ubuntu14.04系统.今天小编带大家一起在Ubuntu14.04中安装Pycharm,具体的教程如下.1.首先在主目录下创建software文件夹,此时该文件夹为空文件夹.这个文件夹下用于放置安装软件,当然这个步骤不是必须的,只是小编习惯的做法. 2.去Pycharm官网上下载Pycharm的Linux安装包,建议下载专业版的,如下图所示. 3.下载到本地之后,将其用fi

《手把手教你》系列进阶篇之2-python+ selenium自动化测试 - python基础扫盲(详细教程)

1. 简介 这篇文章主要是分享讲解一下,如何封装自己用到的方法和类.以便方便自己和别人的调用,这样就可以避免重复地再造轮子. 封装(Encapsulation)是面向对象的三大特征之一(另外两个是继承和多态),它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 就好比使用计算机,我们只需要使用计算机提供的键盘,就可以达到操作计算机的目的,至于在敲击键盘时计算机内部是如何工作,我们根本不需要知道. 封装机制保证了类内部

如何在Centos7上安装docker

Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单.容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止.Docker 帮助系统管理员和程序员在容器中开发应用程序,并且可以扩展到成千上万的节点. 容器和 VM(虚拟机)的主要区别是,容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离.虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短.容器使用宿主操作系统的内核,而虚拟机使用独立的内核. Docker 的局限性之一是,它只能用在 64 位的操作系统上. 在这篇

教大家如何在mac上用终端写代码并调试

1.   ls 2. cd Desktop/ 3. touch a.c 4. open a.c 5. cc a.c 6. ./a.out 口述一下,大致就是首先你必须打开mac终端然后: 1.显示当前目录下面的所有子目录 2.进入桌面 3.创建a.c文件 4.打开a.c文件(然后你自己在.c文件中写你需要运行的代码,之后保存关掉文件就好了) 5.编译a.c文件 6.打印编译的生成的a.out文件.就会看到终端显示结果了 版权声明:本文为博主原创文章,未经博主允许不得转载.

如何在centos7上安装redis

解压缩 tar zxvf redis-3.0.4.tar.gz 进入解压后的目录 cd redis-3.0.4 使用Make 编译源文件 make 安装 进入源文件的目录 cd src 复制 Redis 的服务器和客户端到 /usr/local/bin cp redis-server redis-cli /usr/local/bin 最好也把 sentinel,benchmark 和 check 复制过去 cp redis-sentinel redis-benchmark redis-check

mac 教你如何在Mac上搭建自己的服务器——Nginx

WHAT 本篇主要是基于Nginx在Mac上搭建自己的服务器. 我相信很多朋友肯定是第一次听到Nginx,关于它具有怎样的传奇,这儿肯定说不完也说不透. 有兴趣的朋友可以自行google或者baidu. WHY 为什么要搭建自己的服务器呢. 好处肯定多多,这儿说一条--模拟数据. 很多时候,我们在前端开发的过程中,API接口没有做好. 当我们要铺界面时,如果等待API的开发完成,无疑是件很耽误工作的事情. 还有一点,即使API完成了,我们开发完项目时,需要自测各种极限的数据.例如 约定好返回的是

贝勒爷教你如何在Mac上安装Microsoft Office

1.亲,鼠标双击该安装文件: 2.很好,你将会看到这样一个东东(如果没有看到那就不要来见我了): 3.不错,再次双击红色区域,如果出现以下提示,别怕哈: 4.点击"好"按钮,然后在桌面上点击这个玩意: 5.看到这个了没,"Launchpad",点击它你就会来到这个地方: 6.然后点击红色区域"系统偏好设置",你将来到这个地方: 7.继续,双击红色区域"安全性与隐私",你就看到: 8.点击那把小锁,然后点击"任何来源&