推广 热搜: 未来    中国  企业  服务  政策  公司  快速  上海  设备 

LDAP基础安装与简单入门使用

   日期:2024-11-05     作者:caijiyuan    caijiyuan   评论:0    移动:http://lzlz0618.dbeile.cn/news/466.html
核心提示:0x00 前言简述主要产品基本模型应用场景0x01 环境安装基于 yum 安装基于 Docker 安装0x02 LDAP配置命令slapd 命
  • 0x00 前言简述

    LDAP基础安装与简单入门使用

    • 主要产品

    • 基本模型

    • 应用场景

  • 0x01 环境安装

    • 基于 yum 安装

    • 基于 Docker 安装

  • 0x02 LDAP配置&命令

    • slapd 命令

    • ldapsearch 命令

    • ldapadd 命令

    • ldapmodify 命令

    • ldapdelete 命令

    • slappasswd 命令

    • ldappasswd 命令

  • 0x03 LDAP客户端

    • LDAPAccountManager

    • PHPLdapAdmin

    • LDAPAdmin

    • Apache Directory Studio

    • Migrationtools

    • JNDI方式

0x00 前言简述

由于其公司内部都内部各种运维系统等,当每个新员工入职就需要一个挨一个的登录到每个系统的后台给新员工开通账号,设置密码,然后员工离职还得去到每个系统后台去关闭账号,想想多浪费时间那么能不能维护一套账号,对所有系统生效呢

在深入学习LDAP协议之前我们需要了解什么是目录服务?

1.描述:目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。如:。
2.特点:是动态的,灵活的,易扩展的。
3.目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。

什么是LDAP?

答:维基百科:它是一个轻型目录访问协议(英文,缩写:LDAP,/ˈɛldæp/)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。LDAP目录服务是由目录数据库和一套访问协议组成的系统,它是基于X.500标准的轻量级目录访问协议有时被称为。也是IETF下的一项标准,目前最新的RFC为 RFC4510 ;

LDAP有什么用?

答:构建一个统一的账号管理、身份验证平台,实现SSO单点登录机制,即用户可以在多个应用服务系统中使用同一个密码,通常用于公司内部网站的登录以及域内机器登陆管理

特点:

  • 使用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。

  • 目录数据库和关系数据库不同,它有;

LDAP协议版本:

  • LDAPv2

  • LDAPv3

为什么要使用LDAP?

答:LDAP是开放的Internet标准,支持跨平台的Internet协议,在业界中得到广泛认可的,并且市场上或者开源社区上的大多产品都加入了对LDAP的支持,因此对于这类系统,不需单独定制,只需要通过LDAP做简单的配置就可以与服务器做认证交互;

LDAP目录与普通数据库有何异同

1.主要不同之处在于数据的组织方式,它是一种有层次的、树形结构。所有条目的属性的定义是对象类object class的组成部分,并组成在一起构成schema;那些在组织内代表个人的schema被命名为white pages schema。

2.数据库内的每个条目都与若干对象类联系,而这些对象类决定了一个属性是否为可选和它保存哪些类型的信息。属性的名字一般是一个易于记忆的字符串,例如用cn为通用名(common name)命名,而"mail"代表e-mail地址。例如mail属性包含值“user@example.com”。

主要产品

简单了解下基于 LDAP 协议的产品有一下:

厂商产品简介OpensourceOpensourceOpenLDAP 开源的项目,速度很快,但是非主流应用,但是在社区的影响下逐渐成熟。MicrosoftMicrosoft Active Directory基于win系统用户在域控中使用,对大数据量处理速度一般,但维护容易,生态圈大,管理相对简单。IBMIBM Directory Server基于DB2 的的数据库,速度一般。NovellNovell Directory Server基于文本数据库的存储,速度快, 不常用到。OracleOracle Internet Directory简称OID是Oracle 用来集中存储和管理网络服务名称的解决方案,用于查询和修改任何类似目录的实体;ApacheApache Directory Server广泛使用在Apache基金会下面所属软件中比如Apache http,进行目录的索引以及展示;如OpenLDAP Apache HTTP Server使用代理服务器(通过模块mod_proxy)支持LDAP。
基本模型

每一个系统、协议都会有属于自己的模型,当然LDAP也不例外

在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树概念

  1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的一个节点称之为条目(Entry,条目包含了该节点的属性及属性值。

  2. 条目:由属性(attribute)的一个聚集组成每个条目就是一条记录,并由一个唯一性的名字引用,即专有名称,可描述一个层次结构,这个结构可以反映一个政治、地理或者组织的范畴。

  3. 对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。

  4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。补充:属性取值依赖于其类型,并且LDAPv3中一般非二进制值都遵从UTF-8字符串语法。

关键字&术语说明:
:LDAP中的每个单元都认为是条目。

术语说明Directory目录,用于存放信息的单元Entry条目,实体LDAP的基本信息单元LDIF全称:LDAP Interchange Format , 在RFC2849中定义的标准,用于规范LDAP的配置和目录内容等详细信息的保存,后续的例子中将会较多地使用LDIF进行增删改查的操作。
关键字全称简述DNDistinguished Name专有名称 , DN值"uid=admin,ou=people,dc=weiyigeek,dc=top", 一条记录的位置(全局唯一)DCDomain Component -域名组件 , 域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置)CNCommon Name公共名称 , 如“Admin(一条记录的名称"或者人名或对象名称OUOrganization Unit组织单位,组织单位可以包含其他各种对象(包括其他组织单元,如“oa组”(一条记录的所属组织)UIDUser Id用户ID username(一条记录的ID)SNSurname姓,如“文”RDNRelative dn相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=admin”或“cn=ADMIN”

参照 YAPI 中的 LDAP 配置

(1) 信息模型

描述:在LDAP中的信息以树状方式组织,在树状信息中的基本数据单元是条目,而且每个条目由属性构成,属性中存储由属性值

(2) 命名模型

描述:LDAP中的命名模型即LDAP中的条目定位方式,在LDAP中每个条目均有自己的DN 是该条目在整个树中的唯一名称标识;

LDAP树形结构的构成方式而一般有两种方式:

  • 传统方式:聚焦于国别以及地理信息为上层构成,然后按照地理信息进行继续下行,最后精确到人的姓名以及住址;

  • 互联网域名方式: 上层构成直接使用域名,能结合DNS相关的技术;

(3) 功能模型

描述:在LDAP中共有四类10种操作:

  • 查询类操作,如搜索、比较

  • 更新类操作,如添加条目,删除条目,修改条目以及修改条目名

  • 认证类操作,如绑定,解绑

  • 其它操作,如放弃和扩展操作(除了扩展操作,另外9种是LDAO的标准操作,扩展操作是LDAP中为了增加新的功能,而提供的一种标准扩展框架,当前已经成为LDAP标准的扩展操作,有修改密码和startTLS扩展,在新的RFC标准和草案中正在增加一些新的扩展操作,不同的LDAP厂商也均定义了自己的扩展操作

(4) 安全模型

描述:LDAP中的安全模型主要通过身份认证、安全通道和访问控制来进行实现;

应用场景

描述:由于LDAP主要运用于,而其主要是改变原有的认证策略,使需要认证的软件都通过LDAP进行认证,在统一身份认证之后,用户的所有信息都存储在AD Server中。终端用户在需要使用公司内部服务的时候,都需要通过AD服务器的认证。

那么程序中是如何访问的呢

  1. 连接到LDAP服务器

  2. 绑定到LDAP服务器

  3. 在LDAP服务器上执行所需的任何操作

  4. 释放LDAP服务器的连接

我们以PHP脚本作为例子如下

0x01 环境安装

描述:在上文中我们对LDAP产品进行列举,在厂商得持续开发迭代下提供LDAP服务的软件有很多商业上获得成功的,其中以使用最为广泛,而开源领域则是OpenLdap(全文实验也是基于此版本);

什么是OpenLDAP?
OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。
官网:http://www.openldap.org

它主要包括下述4个部分

  • slapd - 独立LDAP守护服务

  • slurpd - 独立的LDAP更新复制守护服务

  • 实现LDAP协议的库

  • 工具软件和示例客户端

端口说明:

端口号备注389未加SSL缺省端口(明文数据传输)689SSL加密端口636加密监听端口(加密数据传输)
基于 yum 安装

环境准备:

修改配置文件完成后进行验证配置文件以及权限设置

注意:

参考文档:

  • https://blog.51cto.com/skypegnu1/1939302

  • https://www.cnblogs.com/dmjx/p/9071068.html

  • https://www.58jb.com/html/120.html

基于 Docker 安装

描述:由于openldap的osixia的镜像所内置的缺省的dc即LDAP结构采用互联网域名方式;
Docker镜像:https://github.com/osixia/docker-openldap

建立数据持久化目录:

docker-compose.yml (v1.3.0)
安装OpenLDAP版本:

环境变量说明:

拉取并运行镜像:

容器内部查询:

0x02 LDAP配置&命令

描述:Yum安装ldap后的配置文件说明:

openLDAP的打开日志信息

注意事项:

  • 从OpenLDAP2.4.23版本开始所有配置数据都保存在 中,建议不再使用slapd.conf作为配置文件。

  • 线上ACL控制配置解析希望能达到的效果是:;

slapd 命令
ldapsearch 命令

描述:LDAP一般用于SSO的单点登录,所以其他机器能够连接进行验证是最基础的,客户端安装openldap-client包进行登录LDAP并进行查询使用;

基础语法:

补充事项:

  • 1.查询到的是经过base64编码的字符串,通过解码得到SSHA加密后密匙

  • 2.过滤条件实例

    • 下列过滤器将搜索包含一个或多个 manager 属性值的条目称为存在搜索:manager=*

    • 下列过滤器将搜索包含通用名 WeiyiGeek 的条目。这也称为等价搜索:cn=WeiyiGeek

    • 下列过滤器返回所有不包含通用名 WeiyiGeek 的条目:(!(cn=WeiyiGeek))

    • 下列过滤器返回的所有条目中都有包含子字符串 X.500 的说明属性:description=X.500

    • 下列过滤器返回所有组织单元为 Marketing 且说明字段中不包含子字符串 X.500 的条目:(&(ou=Marketing)(!(description=X.500)))

    • 下列过滤器返回所有组织单元为 Marketing 且 manager 为 WeiyiGeek 或 Cindy Zwaska 的条目:(&(ou=Marketing)(|(manager=cn=WeiyiGeek,ou=Marketing,dc=siroe,dc=com)(manager=cn=Cindy Zwaska,ou=Marketing,dc=siroe,dc=com)))

    • 下列过滤器返回所有不代表人员的条目:(!(objectClass=person))

    • 下列过滤器返回所有不代表人员且通用名近似于 printer3b 的条目:(&(!(objectClass=person))(cn~=printer3b))

    • 下列过滤器返回对象类为inetOrgPerson或者为groupOfUniqueNames的条目:

ldapadd 命令
ldapmodify 命令

描述:该命令用于进行数据添加,实际上ldapadd只是采用了一个软链接指向ldapmodify,所以此处我们统一进行说明;

命令参数:

测试添加的LDIF文件内容:

Question:中的ldapadd替换称ldapmodify是否能够完全一致的动作
Ask:不行,其报错信息:,需要加上-a参数即可;

注意事项:

  • 当部门和人员的信息还未进行关联,当然最简单的方式是先创建部门,然后在人员信息中添加相关内容即可

  • 添加部门关键信息则为organisationalUnit,添加用户时候关键的objectclass是inetOrgPerson

ldapdelete 命令
slappasswd 命令
ldappasswd 命令

描述:LDAP有三种方式可以进行修改密码即

  • slappasswd命令: 管理员密码修改

  • ldappasswd命令: 用户密码修改

  • ldapmodify命令结合ldif文件

ldappasswd 参数:

0x03 LDAP客户端
LDAPAccountManager

采用 docker 容器部署LDAPAccountManager:

简单置流程:

  • (1) 我们访问进行LAM基础配置,首次登录点击,然后选择;

  • (4) 至此,已经完成docker版的openldap和LDAP Account Manager的安装配置。

PHPLdapAdmin

描述:phpLDAPadmin(也称为PLA)是一个基于Web的LDAP客户端。它为LDAP服务器提供简单,随处可访问的多语言管理。phpLDAPadmin是LDAP专业人员和新手的完美LDAP浏览器。其分层树查看器和高级搜索功能使您可以直观地浏览和管理LDAP目录。由于它是一个Web应用程序,因此该LDAP浏览器可在许多平台上运行,使您可以从任何位置轻松管理LDAP服务器。

官网:http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page

比如采用Docker进行安装:`如果开启HTTPS,需要配置443端口映射:-p 8443:443,并采用https访问

基础配置
Step1. 访问phpldapAdmin打开浏览器访问:http://192.168.172.245:6080

Step2.登录phpLdapAdmin添加组以及ldap账号流程步骤如下:

  • 点击新建实体

  • 回到首页,再次创建条目Templates选择:创建组 ,输入组名称然后提交

  • 回到首页,点击创建的OU:Development组织,然后点击 创建创建一个子条目

Step3.采用创建的账号进行登陆LDAP;

LDAPAdmin

描述:Ldap Admin是一个用于LDAP目录管理的免费Windows LDAP客户端和管理工具。此应用程序允许您在LDAP服务器上浏览,搜索,修改,创建和删除对象。它还支持更复杂的操作,例如目录复制和在远程服务器之间移动,并扩展常用编辑功能以支持特定对象类型(例如组和帐户), 支持多类型系统:Winndows&Linux
官网:http://www.ldapadmin.org/

下载安装LDAP Admin客户端,新增连接如下

Apache Directory Studio

描述: 设计用来和各种LDAP服务器进行交互操作,提供了一个使用方便的客户端操作平台。除了Apache DS之外,诸如OpenLdap也可以很好地进行交互,对于不习惯不喜欢命令行方式的用户,Apache Directory Studio也是选择之一。

官方网址:http://directory.apache.org/studio/
支持OS:跨平台,支持MacOS/Windows/Linux
下载地址:http://directory.apache.org/studio/downloads.html

导入与导出

  • File->右键  选择 Export 进行导出格式为LDIF

  • File->右键  选择 import 进行导入格式为LDIF的备份文件,还能通过直接修改ldif文件进行;

入坑解决:
(1)import的失败请按照如下顺序进行原因确认

  1. ldif文件的多个entry的格式,包括全角字符等

  2. ldif文件内容是否有缺失,拼写是否有错误

  3. ldif文件的内容依赖的部分,这个只能你自己根据系统的情况自行确认,本身ldap就是一个类似目录层级的方式,比如上层目录没有试图添加下层,自然会出错

  4. ldap的权限设定与配置 一般来说都是既存的数据和ldif文件中的某个entry写错了导致的问题,请首先排除这个方面的问题

Migrationtools

描述:采用migrationtools工具包,实现导入系统账号的相关信息;

  1. 创建两个测试用户及用户组,并修改密码

  1. 将刚创建的两个用户导入至openldap数据文件

  1. 使用migrationtools将两个临时用户生成ldif文件

4.把用户导入至openLDAP的数据文件并查询导入的数据

JNDI方式

描述:我们可以使用Java中使用javax.naming可以对Ldap用户信息进行验证,使用这点可以完成SSO之类功能的集成;

简单的基础示例:

执行结果:

其它博主的代码:

Java连接LDAP-JNDI参考:

本文地址:http://www.dbeile.cn/news/466.html    多贝乐 http://www.dbeile.cn/ , 查看更多
 
标签: 简单 安装 基础
 
更多>同类行业资讯
0相关评论

新闻列表
企业新闻
推荐企业新闻
推荐图文
推荐行业资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2023001713号