搭建openldap与phpldapadmin

Posted quietguoguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建openldap与phpldapadmin相关的知识,希望对你有一定的参考价值。

现在很多ldap文档不太适合centos7下安装使用ldap,于是自己搓了一篇作为留底

LDAP基础概念

在开始部署前,要了解一些LDAP知识点:

条目 entry

区别名/唯一标识名 Distinguished Name / DN

属性 attribute

LDAP的条目(entry) 是 具有区别名(Distinguished Named/DN唯一标识名)的属性(attribute)。

DN是用来引用条目的,是唯一的,相当于关系型数据库中的主键。

属性有类型(type)和一个或者多个值(value)组成,相当于关系型数据库中的字段。

Schema

schema是LDAP的一个重要组成部分,类似于​​数据库​​的模式定义,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,比如一个 objectclass会有哪些属性,这些属性又是什么结构等等,schema给LDAP服务器提供了LDAP目录中类别,属性等信息的识别方式,让这些 可以被LDAP服务器识别。

    在LDAP的schema中,有四个重要的元素:

    1. Objectclass

    objectclass定义了一个类别,这个类别会被不同的目录(在LDAP中就是一个Entry)用到,它说明了该目录应该有哪些属性,哪些属性是必须 的,哪些又是可选的。一个objectclass的定义包括名称(NAME),说明(DESC),类型(STRUCTURAL或AUXILARY ,表示是结构型的还是辅助型的),必须属性(MUST),可选属性(MAY)等信息。

    2. Attribute

    attribute就是一个上面objectclass中可能包含的属性,对其的定义包括名称,数据类型,单值还是多值以及匹配规则等。后面用具体的例子来说明。

    3. Syntax

    syntax是LDAP中的“语法”,其实就是LDAP中会用到的数据类型和数据约束,这个语法是遵从X.500中数据约束的定义的。其定义需要有一个ID(遵从X.500)以及说明(DESP)

    4. Matching Rules

    是用来指定某属性的匹配规则,实际上就是定义一个特殊的Syntax的别名,让LDAP服务器可以识别,并对定义的属性进行匹配。

安装配置LDAP

LDAP结构

搭建openldap与phpldapadmin_openldapyum安装、启动LDAP

yum install openldap openldap-clients openldap-servers
service slapd start

初始化LDAP

初始状态下,LDAP是一个空目录,即没有任何数据。可通过程序代码向目录数据库中添加数据,也可使用OpenLDAP客户端工具ldapadd命令来完成添加数据的操作,该命令可将一个LDIF文件中的条目添加到目录。因此,需要首先创建一个LDIF文件,然后再进行添加操作。

生成 LDAP 管理员SSHA口令

这里用123456作示例,注意生成的ssha,后续要用到

slappasswd -h SSHA -s 123456
SSHAmiSysgq9/+ss47VncHRuqyhaHJ2oLI+7

配置管理员信息与DC

OpenLDAP服务器配置文件位于 /etc/openldap/slapd.d/ 。要开始配置LDAP,我们需要更新变量 “olcSuffix” 和 “olcRootDN“

  • olcSuffix - 数据库后缀,它是LDAP服务器提供信息的域名。简单来说,更改为自己的域名。
  • olcRootDN - 具有对LDAP执行所有管理活动的无限制访问权限的用户的根专有名称(DN)条目,如root用户。
  • olcRootPW - 上述RootDN的LDAP管理员口令。

以上条目需要在/etc/openldap/slapd.d/cn=config/olcDatabase=2hdb.ldif文件中更新。建议不要手动编辑LDAP配置,因为每次运行ldapmodify命令时都会丢失更改。

使用单独配置进行配置和导入到 LDAP

ldif文件的空格 空格不可忽略

第一段中olcSuffix 修改为自己的dc,一般是自己的组织域名

第二段中olcRootDN 设定管理员DN

第三段中olcRootPW修改为上一条命令中生成密文,即管理员口令

cat > 01initDB.ldif << EOF
dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=xxx,dc=com

dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=xxx,dc=com

dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: SSHAmiSysgq9/+ss47VncHRuqyhaHJ2oLI+7
EOF


执行修改

ldapmodify -Y EXTERNAL  -H ldapi:/// -f 01initDB.ldif

参考 ​​https://blog.csdn.net/u011607971/article/details/86061767​​​​​

以上操作,算是完成LDAP​管理员账户​的初始化 即cn=admin,dc=xxx,dc=com口令为123456

如果将LDAP作为一个账户统一管理工具,我们要做的是

添加schema

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

建立组织 Base organization 组织单元 organizationalUnit 账号 等 03.ldif

$cat > 03addorg.ldif << EOF
# xxx.com
dn: dc=xxx,dc=com
dc: xxx
o: xxx
objectClass: dcObject
objectClass: organization
#manager
dn: cn=manager ,dc=xxx,dc=com
objectClass: organizationalRole
cn: manager
description: LDAP Manager
# user, xxx.com
dn: ou=user,dc=xxx,dc=com
ou: user
objectClass: organizationalUnit
EOF
ldapadd -f 03addorg.ldif -x -D cn=admin,dc=xxx,dc=com -w 123456
Enter LDAP Password:
adding new entry "dc=xxx,dc=com"


添加单独账户

cat > staff.idlf << EOF
dn: cn=staff,ou=user,dc=xxx,dc=com
cn: neil
description: ooelicloud LDAP entry
displayname: staff
gidnumber: 1000
homedirectory: /home/staff
mail: staff@xxx.com
mobile: 13888888888
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: posixAccount
objectclass: top
sn: neil
uid: 1001
uidnumber: 1001
userpassword: xxxxxx@staff.com
EOF
ldapadd -f staff.ldif -x -D cn=admin,dc=xxx,dc=com -w 123456


其他常用操作

 测试添加的账户结果

ldapsearch -D "cn=manager,dc=xxx,dc=com" -w 123456 -h 127.0.0.1 -b "dc=xxx,dc=com"

修改用户口令

ldappasswd -s guoguo -W -D "cn=manager,dc=xxx,dc=com" -x "cn=guoguo,ou=user,dc=tangotz,dc=com" -h ldap.tangotz.com

-s: 指定用户名的口令
-x: 指定的DN
-D: 要对LDAP服务器进行身份验证的可分辨名称

phpLDAPAdmin的搭建

安装

yum install epel-release
yum install httpd phpldapadmin -y

配置phpldapadmin

1)修改phpldapadmin的配置文件,访问控制权限

vim /etc/httpd/conf.d/phpldapadmin.conf,允许谁访问

添加:

Require  all granted
Allow from all

搭建openldap与phpldapadmin_openldap_02

2)修改配置文件:vim /etc/phpldapadmin/config.php

$servers->setValue(login,attr,dn);    这一行的注释去掉

//$servers->setValue(login,attr,uid);  这一行注释掉

3)重启httpd服务

service httpd restart

访问phpldapadmin

在浏览器输入OpenLDAP服务端的IP

例如:​​http://IP/phpldapadmin​​​​​

以上是关于搭建openldap与phpldapadmin的主要内容,如果未能解决你的问题,请参考以下文章

docker下快速部署openldap与PHPLdapAdmin

docker下快速部署openldap与PHPLdapAdmin

docker下快速部署openldap与PHPLdapAdmin

docker下快速部署openldap与self-service-password

docker下快速部署openldap与self-service-password

docker下快速部署openldap与self-service-password