directory server / openldap / Lightweight Directory Access Protocol / Free IPA / phpladpadmin / ladp browser

s

问题列表

问题1:additional info: modify/add: olcRootPW: no equality matching rule

[root@scts08t ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /root/rootpwd.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
ldap_modify: Inappropriate matching (18)
additional info: modify/add: olcRootPW: no equality matching rule

解决1:https://blog.csdn.net/sj349781478/article/details/109510211

修改modify.ldif中对应选项的"add"为"replace"即可

参考资料:

https://www.openldap.org/

基于 CentOS 8 搭建 openLDAP 服务器

https://www.cnblogs.com/leviatan/p/14974237.html

Centos7安装OpenLDAP

https://www.cnblogs.com/chadiandianwenrou/p/9522756.html

Centos7 搭建openldap完整详细教程(真实可用)

https://blog.csdn.net/weixin_41004350/article/details/89521170

完整版的OpenLDAP搭建全过程

https://www.cnblogs.com/lemon-le/p/6266921.html

centos 6.5搭建openldap服务部署和测试(YUM安装)

https://www.cnblogs.com/liwanliangblog/p/9991499.html

LDAP Server / Lightweight Directory Access Protocol

https://www.server-world.info/en/note?os=CentOS_Stream_9&p=openldap&f=1

Welcome to the Symas OpenLDAP Repository!

https://repo.symas.com/

Symas OpenLDAP 2.5 Long Term Support Release
Symas OpenLDAP 2.6 Current Feature Release
Symas OpenLDAP 2.4 for Linux Most Recent Deprecated Release

Index of /repo/rpm/SOFL/rhel8/x86_64

 

[ICO]NameLast modifiedSizeDescription

[PARENTDIR] Parent Directory   -  
[   ] symas-openldap-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 344K  
[   ] symas-openldap-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 344K  
[   ] symas-openldap-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 345K  
[   ] symas-openldap-clients-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 202K  
[   ] symas-openldap-clients-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 203K  
[   ] symas-openldap-clients-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 203K  
[   ] symas-openldap-clients-debuginfo-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 276K  
[   ] symas-openldap-clients-debuginfo-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 278K  
[   ] symas-openldap-clients-debuginfo-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 278K  
[   ] symas-openldap-debuginfo-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 728K  
[   ] symas-openldap-debuginfo-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 729K  
[   ] symas-openldap-debuginfo-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 733K  
[   ] symas-openldap-debugsource-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 1.5M  
[   ] symas-openldap-debugsource-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 1.5M  
[   ] symas-openldap-debugsource-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 1.5M  
[   ] symas-openldap-devel-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 819K  
[   ] symas-openldap-devel-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 819K  
[   ] symas-openldap-devel-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 819K  
[   ] symas-openldap-servers-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 2.2M  
[   ] symas-openldap-servers-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 2.2M  
[   ] symas-openldap-servers-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 2.2M  
[   ] symas-openldap-servers-debuginfo-2.4.57-1.el8.x86_64.rpm 2021-01-19 18:02 2.7M  
[   ] symas-openldap-servers-debuginfo-2.4.58-1.el8.x86_64.rpm 2021-03-16 19:19 2.8M  
[   ] symas-openldap-servers-debuginfo-2.4.59-1.el8.x86_64.rpm 2021-06-04 18:45 2.8M  

Apache/2.4.29 (Ubuntu) Server at repo.symas.com Port 443

LDAP了解

 

[root@localhost ~]# yum list *ldap*  # 检查LDAP默认安装
Last metadata expiration check: 0:04:16 ago on Fri 02 Dec 2022 07:45:22 AM PST.
Installed Packages
openldap.x86_64 2.4.46-18.el8 @anaconda
sssd-ldap.x86_64 2.5.2-2.el8 @anaconda

[root@localhost ~]# tree -f /etc/openldap/
/etc/openldap
├── /etc/openldap/certs
└── /etc/openldap/ldap.conf

1 directory, 1 file

 

https://www.cnblogs.com/wilburxu/p/9174353.html

一、什么是LDAP?

(一)在介绍什么是LDAP之前,我们先来复习一个东西:“什么是目录服务?

    1. 目录服务是一个特殊的数据库,用来保存描述性的、基于属性的详细信息,支持过滤功能。

    2. 是动态的,灵活的,易扩展的。

    如:人员组织管理,电话簿,地址簿。

(二)了解完目录服务后,我们再来看看LDAP的介绍:

LDAP(Light Directory Access Portocol),它是基于X.500标准的轻量级目录访问协议。

目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。

目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。

LDAP目录服务是由目录数据库和一套访问协议组成的系统。

(三)为什么要使用

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

我们拿开源系统(YAPI)做案例,只需做一下简单的几步配置就可以达到LDAP的单点登录认证了:

 

复制代码
{
"ldapLogin": {
      "enable": true,
      "server": "ldap://l-ldapt1.ops.dev.cn0.qunar.com",
      "baseDn": "CN=Admin,CN=Users,DC=test,DC=com",
      "bindPassword": "password123",
      "searchDn": "OU=UserContainer,DC=test,DC=com",
      "searchStandard": "mail"
   }
}
复制代码

 

是不是很方便呢?

二、LDAP的主要产品

LDAP的中文全称是:轻量级目录访问协议,说到底LDAP是一个访问协议,那么我们的数据究竟存储在哪里?

厂商

产品

介绍

SUN

SUNONE Directory Server

基于文本数据库的存储,速度快 。

IBM

IBM Directory Server

基于DB2 的的数据库,速度一般。

Novell

Novell Directory Server

基于文本数据库的存储,速度快, 不常用到。

Microsoft 

Microsoft Active Directory

基于WINDOWS系统用户,对大数据量处理速度一般,但维护容易,生态圈大,管理相对简单。

Opensource

Opensource

OpenLDAP 开源的项目,速度很快,但是非主 流应用。

 没错,就是正常存储数据的地方,而访问这些数据就是通过我们上述所说的LDAP。到这里两者关系了解!

三、LDAP的基本模型

每一个系统、协议都会有属于自己的模型,LDAP也不例外,在了解LDAP的基本模型之前我们需要先了解几个LDAP的目录树概念:

(一)目录树概念

1. 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。

2. 条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。

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

4. 属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。

(二)DC、UID、OU、CN、SN、DN、RDN、slapd

关键字

英文全称

含义

slapd

standard alone ldap daemon

进程监听端口389

进程如:/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:///

ldif

LDAP Data Interchange Format

如/opt/ldap/rootpwd.ldif,一种数据交换文件格式,

key-value形式,value后不能有空格。

# vim /opt/ldap/rootpwd.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}uNbd2c2GGscR3tp5c4LRdjoKg/sCcvCb

# 上面内容解析
# dn = distinguish name , 指定文件/etc/openldap/slapd.d/cn=config/olcDatabase={0}config,cn=config
# changetype = add,delete,modify,replace等
# add: olcRootPW #表示对这个entry新增了一个olcRootPW的属性
# olcRootPW: {SSHA}uNbd2c2GGscR3tp5c4LRdjoKg/sCcvCb指定了密码属性值

dc

Domain Component

域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com(一条记录的所属位置)

uid

User Id

用户ID songtao.xu(一条记录的ID)

ou

Organization Unit

组织单位,组织单位可以包含其他各种对象(包括其他组织单元),如“oa组”(一条记录的所属组织)

cn

Common Name

公共名称,如“Thomas Johansson”(一条记录的名称)

sn

Surname

姓,如“许”

dn

Distinguished Name

“uid=songtao.xu,ou=oa组,dc=example,dc=com”,一条记录的位置(唯一)

rdn

Relative dn

相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”

(三)基本模型:

信息模型:

  命名模型:

  

  功能模型:

  

  安全模型:

  

四、LDAP的使用

那我们是如何访问LDAP的数据库服务器呢?

  

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

那么程序中是如何访问的呢? 我们以PHP脚本作为例子:

$ldapconn = ldap_connect(“10.1.8.78")
$ldapbind = ldap_bind($ldapconn, 'username', $ldappass);
$searchRows= ldap_search($ldapconn, $basedn, "(cn=*)");
$searchResult = ldap_get_entries($ldapconn, $searchRows);
ldap_close($ldapconn);

1. 连接到LDAP服务器;

2. 绑定到LDAP服务器;

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

4. 释放LDAP服务器的连接;

-

LDAP错误码对照

https://www.jianshu.com/p/79707ec11e97

 

-

LDAP安装

1、环境准备:centos8.5 + ldap 2.4.46 

2、本地yum源服务安装

[root@scts08t ~]# yum install openldap openldap-clients openldap-servers

[root@scts08t ~]# rpm -qa | grep ldap   #已安装的ldap软件如下
sssd-ldap-2.5.2-2.el8.x86_64
openldap-2.4.46-18.el8.x86_64
openldap-servers-2.4.46-18.el8.x86_64
openldap-clients-2.4.46-18.el8.x86_64

注:从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。

配置文件的后缀为 ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用ldapmodify命令进行修改

slapd即standard alone ldap daemon,该进程默认监听389端口

环境cents 8.6 ,软件ldap 2.4.46

[root@scts08t ldap]# yum list *ldap*
Last metadata expiration check: 2:30:54 ago on Mon 28 Nov 2022 01:25:57 AM PST.
Installed Packages
openldap.x86_64                         2.4.46-18.el8                                        @anaconda      
openldap-clients.x86_64                 2.4.46-18.el8                                        @media-baseos  
openldap-servers.x86_64                 2.4.46-18.el8                                        @System        
sssd-ldap.x86_64                        2.5.2-2.el8                                          @anaconda      
Available Packages
apr-util-ldap.x86_64                    1.6.1-6.el8                                          media-appstream
cyrus-sasl-ldap.i686                    2.1.27-5.el8                                         media-baseos   
cyrus-sasl-ldap.x86_64                  2.1.27-5.el8                                         media-baseos   
freeradius-ldap.x86_64                  3.0.20-9.module_el8.5.0+898+d2e49574                 media-appstream
krb5-server-ldap.i686                   1.18.2-14.el8                                        media-baseos   
krb5-server-ldap.x86_64                 1.18.2-14.el8                                        media-baseos   
mod_ldap.x86_64                         2.4.37-41.module_el8.5.0+977+5653bbea                media-appstream
nss-pam-ldapd.i686                      0.9.9-3.el8                                          media-appstream
nss-pam-ldapd.x86_64                    0.9.9-3.el8                                          media-appstream
openldap.i686                           2.4.46-18.el8                                        media-baseos   
openldap-devel.i686                     2.4.46-18.el8                                        media-baseos   
openldap-devel.x86_64                   2.4.46-18.el8                                        media-baseos   
openssh-ldap.x86_64                     8.0p1-10.el8                                         media-baseos   
perl-LDAP.noarch                        1:0.66-7.el8                                         media-appstream
perl-Mozilla-LDAP.x86_64                1.5.3-25.el8                                         media-appstream
php-ldap.x86_64                         7.2.24-1.module_el8.2.0+313+b04d0a66                 media-appstream
postfix-ldap.x86_64                     2:3.5.8-2.el8                                        media-appstream
python3-ldap.x86_64                     3.3.1-2.el8                                          media-appstream

-

拷贝数据库配置文件

[root@scts08t ~]#cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@scts08t ~]#chown ldap:ldap /var/lib/ldap/DB_CONFIG

 

-

[root@scts08t ldap]# systemctl start slapd.service
[root@scts08t ldap]# systemctl status slapd.service
● slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-11-28 03:48:16 PST; 2h 0min ago
     Docs: man:slapd
           man:slapd-config
           man:slapd-hdb
           man:slapd-mdb
           file:///usr/share/doc/openldap-servers/guide.html
  Process: 42844 ExecStart=/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:/// (code=exited, status=>
  Process: 42829 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
 Main PID: 42845 (slapd)
    Tasks: 2 (limit: 23516)
   Memory: 3.1M
   CGroup: /system.slice/slapd.service
           └─42845 /usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// ldapi:///

Nov 28 03:48:16 scts08t systemd[1]: Starting OpenLDAP Server Daemon...
Nov 28 03:48:16 scts08t runuser[42832]: pam_unix(runuser:session): session opened for user ldap by (uid=>
Nov 28 03:48:16 scts08t runuser[42832]: pam_unix(runuser:session): session closed for user ldap
Nov 28 03:48:16 scts08t slapd[42844]: @(#) $OpenLDAP: slapd 2.4.46 (Aug 10 2021 05:11:20) $
                                              mockbuild@x86-02.mbox.centos.org:/builddir/build/BUILD/ope>
Nov 28 03:48:16 scts08t slapd[42845]: slapd starting
Nov 28 03:48:16 scts08t systemd[1]: Started OpenLDAP Server Daemon.
lines 1-23/23 (END)
 

-

[root@scts08t ldap]# ls /var/lib/ldap/*   #查看文件
/var/lib/ldap/data.mdb  /var/lib/ldap/DB_CONFIG  /var/lib/ldap/lock.mdb

-

[root@scts08t ldap]# ls /usr/share/openldap-servers #查看文件
DB_CONFIG.example  slapd.ldif

-

[root@scts08t ~]# tree /etc/openldap/

[root@scts08t openldap]# tree /etc/openldap/   #查看目录树内容
/etc/openldap/
├── certs
├── check_password.conf
├── ldap.conf
├── schema
│   ├── collective.ldif
│   ├── collective.schema
│   ├── corba.ldif
│   ├── corba.schema
│   ├── core.ldif
│   ├── core.schema
│   ├── cosine.ldif
│   ├── cosine.schema
│   ├── duaconf.ldif
│   ├── duaconf.schema
│   ├── dyngroup.ldif
│   ├── dyngroup.schema
│   ├── inetorgperson.ldif
│   ├── inetorgperson.schema
│   ├── java.ldif
│   ├── java.schema
│   ├── misc.ldif
│   ├── misc.schema
│   ├── nis.ldif
│   ├── nis.schema
│   ├── openldap.ldif
│   ├── openldap.schema
│   ├── pmi.ldif
│   ├── pmi.schema
│   ├── ppolicy.ldif
│   └── ppolicy.schema
└── slapd.d
    ├── cn=config
    │   ├── cn=schema
    │   │   └── cn={0}core.ldif
    │   ├── cn=schema.ldif
    │   ├── olcDatabase={0}config.ldif
    │   ├── olcDatabase={-1}frontend.ldif
    │   ├── olcDatabase={1}monitor.ldif
    │   └── olcDatabase={2}mdb.ldif
    └── cn=config.ldif

5 directories, 35 files

-

 

LDAP 生成密码

[root@scts08t slapd.d]# slappasswd -s 123456
{SSHA}Mpv58bxd5bZzOHiLTN/PzltV5R9AG0Om

LDAP客户端软件

Softerra LDAP Browser(LDAP客户端软件) V4.5 ,v6.0 / https://ldapbrowserwindows.com/

https://www.downkr.com/ruanjian/270999.html

https://soft.xitongxz.net/202103/SofterraLDAPBrowser_V4.5_XiTongZhiJia.zip

Softerra LDAP Browser是一款功能全面的网络浏览器辅助工具,也可以说是LDAP客户端软件。

其实所谓的LDAP就是轻量目录访问协议,支持TCP/IP,这对访问Internet是必须的,所以说LDAP数据无论是在开发客户端软件以及设计程序的时候都是必不可少的存在。

Softerra LDAP Browser可以浏览LDAP服务器上的用户、用户组及其属性,支持从你的开发服务器上获取数据,可以选择将数据重新编辑,可以将数据插入到您新的编程方案中,可以与任何LDAP服务器协同工作,可以LDAP数据保存在组织收藏夹上。

https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=118969

我们做在ldap相关的认证配置时,经常要使用第三方工具去读取ldap目录接口,比较常用的就是ldapbrower,这里对ldapbrower做一个简单介绍,工具见附件

1 新建profile
<ignore_js_op>
2.输入ldap服务器信息
<ignore_js_op>
3.输入用户名密码
<ignore_js_op>
4.过滤选项,默认读取所有

<ignore_js_op>

5.查看读取到的组织结构

<ignore_js_op>

LDAP中CN OU DC的含义

CN, OU, DC 都是 LDAP 连接服务器的端字符串中的区别名称(DN, distinguished name)
LDAP连接服务器的连接字串格式为:ldap://servername/DN
其中DN有三个属性,分别是CN,OU,DC
在 LDAP 目录中,
· DC (Domain Component) //类似于DNS中的每个元素,类比为盘符
· CN (Common Name) //通用名,类比为文件夹或文件
· OU (Organizational Unit) //组织单位,类比为文件夹
LDAP 目录类似于文件系统目录。
下列目录:
DC=redmond,DC=wa,DC=microsoft,DC=com
如果我们类比文件系统的话,可被看作如下文件路径:
Com\Microsoft\Wa\Redmond
例如:CN=test,OU=developer,DC=domainname,DC=com
在上面的代码中 cn=test 可能代表一个用户名,ou=developer 代表一个 active directory 中的组织单位。这句话的含义可能就是说明 test 这个对象处在domainname.com 域的 developer 组织单元中。

 

 

 

end

posted @ 2022-11-28 11:59  siemens800  阅读(193)  评论(0)    收藏  举报