真实可用的在CentOS7.6 1810 上搭建LDAP 服务的过程

至于LDAP服务是什么东东,这里就不再废话了,来看这个文章的肯定是了解过,有这个需求和兴趣才来的。

我自己花了大概2周的业余时间,可能有20-30个小时的净学习时长吧,看了众多的教程、经验,最后按照下列这几篇文章完成了服务器搭建,建立与删除用户和组,导入Linux系统账户,更改RootDN,安装phpldapAdmin,等常用的功能。下面是相关文章的连接和标题,以及我自己做的一些安装过程记录等。在此分享给大家。

最佳基本的当然是官网:  OpenLDAP, Main Page   实际上官网说明里面的安装方法,真正无法正确安装。 反正我是操作没成功!!

1.《我花了一个五一终于搞懂了 OpenLDAP 》   我花了一个五一终于搞懂了 OpenLDAP_配置

我对 SegmentFault 大神的这个文章进行了总结,在下面,有需要的可以看一下

下面的都是英文的,还有待翻译。但是能配置服务器的,应该都会基本的英文,按照图文介绍,一步一步确实能配置下来

2.《一步一步地在CentOS7上安装和设置LDAP服务器》

https://www.itzgeek.com/how-tos/linux/centos-how-tos/step-step-openldap-server-configuration-centos-7-rhel-7.html

3.《在CentOS 7上安装和配置phpLDAPAdmin这一图形化的管理工具》

https://www.itzgeek.com/how-tos/linux/centos-how-tos/install-configure-phpldapadmin-centos-7-ubuntu-16-04.html

4.《如何将linux系统的本地用户迁移到LDAP帐户》

https://www.itzgeek.com/how-tos/linux/centos-how-tos/migrate-local-users-ldap-accounts.html

5.《如何配置OpenLDAP并执行管理LDAP任务》----比较详细地介绍了LDAP的配置项和管理工具、命令的用法

https://www.digitalocean.com/community/tutorials/how-to-configure-openldap-and-perform-administrative-ldap-tasks


6.《如何在OpenLDAP服务器上更改帐户密码》 对普通用户和管理员账户的密码的更改

https://www.digitalocean.com/community/tutorials/how-to-change-account-passwords-on-an-openldap-server
 

《我花了一个五一终于搞懂了 OpenLDAP 》正文的总结:

整个 OpenLDAP的架构大致包含 3个部分,OpenLDAP、phpLDAPadmin、PWM。

首先,是 OpenLDAP的服务器本身,相当于一个 mysql数据库。

phpLDAPadmin,是一个图形化管理界面。

PWM ,这是给用户提供一个修改密码所用的客户端。

大致的结构图:

一、安装所需软件

    命令:# yum install openldap openldap-clients openldap-servers

    启动slapd进程,并设置为开机自启动 

   命令:

   # systemctl  start  slapd 

   # systemctl  enable  slapd 

   # systemctl  status  slapd 

二、配置OpenLDAP

此前LDAP可以通过配置 slapd.conf这个文档完成,新版的 OpenLDAP已经将其抛弃!取而代之的是 名为slapd.d 整个配置 文件夹。

配置 OpenLDAP需要通过 ldapmodify命令执行系列自己编写的 “XXX.ldif格式的配置文件,而不要修改任何OpenLDAP自行安装的配置文件

例如,修改RootDN,可以创建一个 changerootdn.ldif 的文件,文件内容类似下方:

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=qiban,dc=com

replace: olcSuffix
olcSuffix: dc=qiban,dc=com

各行的解释:

1.  dn 行,表示你要修改的内容,本例子中要修改 {2}bdb ; 不同的安装情况下可能有差别,需要自行查看比对

查看命令: #  ls /etc/openldap/slapd.d/cn\=config/           注:  也就是slapd.d 文件夹下,cn=config 文件夹下的内容

可能的结果如下,是一堆.ldif格式的文档:

cn=module{0}.ldif cn=schema/ cn=schema.ldif 
olcDatabase={0}config.ldif 
olcDatabase={-1}frontend.ldif 
olcDatabase={1}monitor.ldif 
olcDatabase={2}bdb/ 
olcDatabase={2}bdb.ldif

这个例子中要改的就是最后一行的这个文档内容

2. changetype: modify     这一行表示这是一个起到修改-配置作用的文档,

3. replace  行,类似mysql数据库的 update操作;若更改为add,则可看做mysql的 insert操作

4.olcRootDN 行,在这里代表整个 OpenLDAP系统的管理员用户名,由后面的  cn=admin,dc=qiban,dc=com,共同组成,类似email名称。 cn=邮箱账号  dc=qiban,dc=com 类似@符号后面的域名。

注!   需要给这个管理员用户设置密码,具体做法需要搜索,这里没有给出配置示例

可以参考: 《如何在OpenLDAP服务器上更改帐户密码》

How To Change Account Passwords on an OpenLDAP Server | DigitalOcean

《如何配置OpenLDAP并执行管理LDAP任务》

How To Configure OpenLDAP and Perform Administrative LDAP Tasks | DigitalOcean

编写完成后还需要 运行命令,将给文档的配置内容导入LDAP

命令: #  ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f changerootdn.ldif

三、添加memberOf模块

这个模块的作用是当你建一个组的时候,把一些用户添加到这个组里去,它会自动给这些用户添加一个 memberOf属性,有很多应用需要检查这个属性。

需要建 3个 .ldif文件,其中1个执行 ldapmodify命令 , 2个执行 ldapadd 命令,

1.  memberof_config.ldif 文档,内容如下:

dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
olcModulePath: /usr/lib64/openldap

dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf

注: 需要注意“olcModulePath”和“dn: olcOverlay” 这两行,需要先查看自己的模块目录是不是在 /usr/lib64下面,然后仔细比对数据库类型和数字,不能盲目复制!!!

该文档执行 ldapadd命令进行添加

命令:# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif

执行完之后,检查 /etc/openldap/slapd.d/cn=config/ 目录下是否多了一个模块,该新增模块的数字编号直接影响下一步操作。

2.  refint1.ldif 文档,内容如下:

dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint

本示例中, memberOf是第一个模块,所以编号是 0,不同的安装条件下不一样,要看清楚到底第几号模块是 memberof。该文档需要执行 ldapmodify 命令:

命令:# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif

文档内容大意是说,要修改我们上一步刚添加的那个模块文件的内容。

3.  refint2.ldif  文档,内容如下:

dn: olcOverlay={1}refint,olcDatabase={2}bdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner

同样需要注意检查 db类型的编号,否则可能配置失败。

该文档需要执行 ldapadd 命令:

命令: # ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

四、安装phpLDAPadmin 图文化管理工具  (需要安装nginx 和 php-fpm)

1. yum命令安装

命令:# yum install phpldapadmin

2. 配置phpLDAPadmin

本示例中采用的是nginx 软件,需要配置,使之支持phpLDAPadmin

配置内容如下:

location /htdocs {
alias /usr/share/phpldapadmin/htdocs;
index index.php;
location ~ .php$ {
alias /usr/share/phpldapadmin;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param _FILENAME $document_root$fastcgi__name;
include fastcgi_params;
}
}

默认状态下,管理配置文件安装在 /usr/share/phpldapadmin/htdocs下,必得要在这里配置一个 alias才能通过nginx使用web地址访问到它,但在 php-fpm时又要配置另外一个 alias,

下面配置php-fpm ,配置 /etc/phpldapadmin/config.php文档的下列配置项:

  •  $servers->setValue('login','anon_bind',false);                   改成 false,因为我们不想让人匿名访问;
  •  $servers->setValue('login','allowed_dns',array('cn=admin,dc=qiban,dc=com'));  意思是只允许上面所配置的管理员账号访问。

重启nginx和php-fpm服务,就可以通过 URL地址访问 phpLDAPadmin了。

登录界面

登录的时候输入用户名: cn=admin,dc=qiban,dc=com,然后输入密码,如果你前面一切配置正确,即可进入管理界面

输入账号密码

建档的账户和组的配置。

1. 首先要建立两个 organizationalUnit,分别是 groups和 users。

2.在 users下面建几个 inetOrgPerson,也就是实际的用户账号。

注意!在创建新条目时,一定要选择 默认,不要选择什么 Posix或者 GenericUserAccount,那只会创建出一些没用的 Linux账号出来。密码一定要选 md5,否则后面和其它系统连接会出现问题。

3.在 groups下面建几个组吧,比如 admins, users等。

注意!  选择 objectClass为 groupOfNames即可。

4.把你刚刚在第2步建好的用户分门别类的添加到对应的组里。

提示:在这一步上,如果前面配置 的memberOf模块正确的话,就会在 user的 显示内部属性里看到它的 memberOf 这条属性,如果看不到,说明没有配置对。

翻译:《如何更改LDAP服务器上的帐号的密码》

How To Change Account Passwords on an OpenLDAP Server | DigitalOcean

一、更改RootDN账户的密码

如果您忘记了LDAP管理密码,则需要在LDAP系统的服务器上具有root或sudo访问权限才能重置它。 登录到您的服务器以开始使用。

1.查找当前的RootDN信息
首先,您必须找到RootDN帐户和当前RootDN密码的哈希值。 这在特殊的cn = config配置DIT中可用。 我们可以通过输入以下命令来找到我们要查找的信息:

# ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif

运行上述命令后,应该返回DIT的rootDN帐户和密码。 它还会告诉您配置数据库的位置。 我们也需要将此信息写入主目录中的文件,以便在获得新密码哈希后可以对其进行修改:

下面是显示出来的内容截图

2.哈希一个新密码

接下来,我们可以使用slappasswd程命令来哈希一个新密码。 我们想要使用我们查询的olcRootPW行中的相同的哈希数值,由带括号的前缀值表示。 在我们的例子中,就是{SSHA}。

使用slappasswd程序为我们要使用的密码生成正确的哈希。 我们将新哈希附加到我们使用last命令创建的文件的末尾。 如果您使用的是非root帐户,则需要指定命令的完整路径:

命令: 

# /usr/sbin/slappasswd -h {SSHA} >> ~/newpasswd.ldif

系统将提示您输入并确认要使用的新密码。 散列值将附加到我们文件的末尾。

3.更改配置DIT中的密码
现在,我们可以编辑该文件以构造有效的LDIF命令来更改密码。 打开我们写过的文件:

# vi ~/newpasswd.ldif

他应该显示为类似下面的内容:

dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

您可能有多个值,具体取决于您的LDAP服务器是否具有多个DIT。 如果是这种情况,请使用olcRootDN值查找要修改的正确帐户。 删除其他dn,olcRootDN,olcRootPW三元组(如果有)。

在确认olcRootDN行与您尝试修改的帐户匹配后,请将其注释掉(前面加#)。 在它下面,我们将添加两行。 第一行应该指定

changetype:modify,第二行应该告诉LDAP你要 replace: olcRootPW。 它看起来像这样:

dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW

olcRootPW: {SSHA}ncCXAJ5DjfRWgxE9pz9TUCNl2qGQHQT3

{SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

现在,删除olcRootPW行中的哈希值,并将其替换为您在下面生成的哈希值。 删除任何与之无关的行。 它现在应该是像这样的:

dn: olcDatabase={1}hdb,cn=config
#olcRootDN: cn=admin,dc=example,dc=com
changetype: modify
replace: olcRootPW

olcRootPW: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

修改完后保存并关闭,使用下面的命令进行更改:

命令:

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

这将更改cn = config DIT中的管理密码。 DIT=Directory Information Tree  ? 文件目录树

更改正常/普通DIT中的密码
这已经更改了管理DIT中条目的密码。 但是,我们仍然需要修改常规DIT中的条目。 目前旧密码和新密码都有效。 我们可以通过使用新凭据修改常规DIT条目来解决此问题。

再次打开LDIF文件:

# vi ~/newpasswd.ldif

将dn:行中的值替换为您之前注释掉的RootDN值。 此条目是我们更改密码的新目标。
我们还需要使用userPassword更改两次出现的olcRootPW
这样我们就可以修改正确的值了。 完成后,LDIF文件应如下所示:

[output ~/newpasswd.ldif]
dn: cn=admin,dc=example,dc=com
changetype: modify
replace: userPassword

userPassword: {SSHA}lieJW/YlN5ps6Gn533tJuyY6iRtgSTQw

现在,我们可以使用我们在config DIT中设置的新密码通过绑定来修改该条目的密码。 您需要绑定到RootDN条目才能执行操作:

#  ldapmodify -H ldap:// -x -D "cn=admin,dc=example,dc=com" -W -f ~/newpasswd.ldif

系统将提示您输入在配置DIT中设置的新密码。 经过身份验证后,密码将被更改,只保留新密码以进行身份验证。

结论
LDAP通常用于存储帐户信息,因此了解如何正确管理密码非常重要。 大多数情况下,该过程相对简单,但对于更密集的操作,您仍然可以通过一些工作来修改密码。

2019-03-6  在神州笔记本上配置ldap服务器的信息记录

1.首先运行了更改rootDN密码中的查询命令,后使用slappasswd命令设置了密码123456789,并生成哈希值,截图记录

[root@Desktop cn=config]# ldapsearch -H ldapi:// -LLL -Q -Y EXTERNAL -b "cn=config" "(olcRootDN=*)" dn olcRootDN olcRootPW | tee ~/newpasswd.ldif
运行后显示的内容如下
dn: olcDatabase={2}hdb,cn=config
olcRootDN: cn=Manager,dc=my-domain,dc=com

[root@Desktop cn=config]# slappasswd
New password: 123456789
Re-enter new password:123456789
生成的哈希值如下
{SSHA}sa3A0KIWrhMQB+l9eK/4hoEMMLHj9xqN

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值