当前位置: 首页 > news >正文

OpenLDAP配置web管理界面PhpLDAPAdmin服务-centos9stream

之前已经发了一篇关于centos9下面配置openldap多主高可用集群的内容,不会配置ldap集群的请参考:服务器集群配置LDAP统一认证高可用集群(配置tsl安全链接)-centos9stream-openldap2.6.2-CSDN博客

这里跟着前篇文章详细说明如何配置openldap的web管理界面PhpLDAPAdmin;

1、安装http及php、phpldapadmin

###安装必要的包,一般不用特别关注什么版本,直接安装就行,可以在所有server节点安装
###默认这个包应该在epel源,没有配置的可以使用  yum install epel-release -y 安装,不用多说了吧。
###已经安装了httpd或apache的就不用重复安装了。
yum install httpd php phpldapadmin -y

2、配置httpd

###配置httpd服务ip和端口,如果直接使用默认端口的不用改了,如果有多个端口的注意不要与现有http服务冲突
cd /etc/httpd/conf.d/##这里配置phpldapadmin的参数,注意查看一下php的路径,默认配置了phpldapadmin和ldapadmin两个根路径的别名,也就是说大家可以用   http://192.168.1.11/phpldapadmin或者http://192.168.1.11/ldapadmin访问web服务即可出现登陆界面
##下方Directory模块是配置目录权限,当然这里还可以配置用户访问的服务端口和ip,不会配置的大家尽量挑选一个没有其他服务的主机来配置这个服务吧。具体权限和安全问题就不在这里说了。欢迎大家关注我博客里的其他文章,这里主要是配置了允许访问的ip,allow from
vim phpldapadmin.conf
#
#  Web-based tool for managing LDAP servers
#
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs<Directory /usr/share/phpldapadmin/htdocs><IfModule mod_authz_core.c># Apache 2.4Require localRequire ip 110.110.11.0/24Require ip 198.18.30.0/24</IfModule><IfModule !mod_authz_core.c># Apache 2.2Order Deny,AllowDeny from allAllow from 127.0.0.1Allow from 110.110.11.0/24Allow from 198.18.30.13</IfModule>
</Directory>

3、配置phpldapadmin

###配置根域加上密码的方式登陆,以下只显示需要修改的地方,大家执行查询修改
vim /etc/phpldapadmin/config.php#不同版本的文件可能不一样,我这里在453行;
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');  ##这里注释掉,选择dn方式登陆,当然改成cn也行,当然可以使用uid方式登陆,但前提是你配置了对应uid的操作和访问权限。#525行左右可配置是否可以让匿名用户登录,这个其实在openldap中本身可以进行设置,大家可以选配,需要配置的话去掉前面的注释符号“//”即可。
// $servers->setValue('login','anon_bind',true);###另外,还可以配置指定可登录的根域,tls安全链接的安全证书等,基本都是一些安全方面的配置,这里不一一说明了,自己可以修改配置然后访问测试,这个不影响已经配置好的ldap服务。// $servers->setValue('login','bind_id','');
#  $servers->setValue('login','bind_id','cn=Manager,dc=example,dc=com');/* Your LDAP password. If you specified an empty bind_id above, this MUST alsobe blank. */
// $servers->setValue('login','bind_pass','');
#  $servers->setValue('login','bind_pass','secret');/* Use TLS (Transport Layer Security) to connect to the LDAP server. */
// $servers->setValue('server','tls',false);/* TLS Certificate Authority file (overrides ldap.conf, PHP 7.1+) */
// $servers->setValue('server','tls_cacert',null);
#  $servers->setValue('server','tls_cacert','/etc/openldap/certs/ca.crt');/* TLS Certificate Authority hashed directory (overrides ldap.conf, PHP 7.1+) */
// $servers->setValue('server','tls_cacertdir',null);
#  $servers->setValue('server','tls_cacertdir','/etc/openldap/certs');/* TLS Client Certificate file (PHP 7.1+) */
// $servers->setValue('server','tls_cert',null);
#  $servers->setValue('server','tls_cert','/etc/pki/tls/certs/ldap_user.crt');

4、重启httpd服务

直接systemctl restart httpd即可。

systemctl restart httpd

5、界面操作

在可访问到服务的计算机上使用浏览器打开http://192.168.1.11/phpldapadmin

点击左侧的login,显示登录界面。

在登录界面直接输入管理根域和在ldap中设置的rootPW密码

如果已经设置禁止匿名用户登陆的话这里使用anonymous登陆应该是访问不了了

登陆成功后,左侧web界面应该就显示自己登陆的当前域下的情况了,可以点击+号展开查看已有账户。

6、导入功能import测试

这里测试一下创建用户组,当然其他配置的ldif文件或者配置内容都可以在这里导入进行创建或配置,条件是当前登陆的管理域账户有权限操作写入。

ldap可以批量导入如账户,直接点击左侧的import按钮会打开账户导入界面,可以直接选择ldif文件或者将编写号的ldif内容直接粘贴到对话框中,任选其一,然后点击Proceed按钮

这里直接粘贴编写内容测试一下

如果出现以下错误,这里很可能是因为当前的服务节点不是主节点,或者当前节点处于同步状态,所以应切换至主节点去操作

大家可以点击左侧的monitor按钮查看ldap集群的连接情况,这里面127.0.0.1一般就是当前phpldapadmin服务所在的本地server了, 其他ip表示是其他ldapserver的ip。

当然phpldapadmin可以设置连接其他server,但前提是有对应的远程操作权限,大约在/etc/phpldapadmin/config.php的第329行:

我一般不会改这里,最好是在每个server上都配置各自的phpldapamin服务,因为如果server的ldap服务down掉基本上其他服务可能都down了,所以还不如每个都独立后基于这些web服务再用haproxy配置高可用。

如果是可操作的正常节点,这里应该就导入成功了,刷新一下左侧的ou=Group即可查看到自己创建的用户组

7、web界面创建用户

前面使用导入功能可以直接操作ldif文件内容进行创建或导入,创建用户同样可以直接使用import功能,但这里主要展示交互界面通过web界面添加用户,

首先点击ou=people或者自己准备的其他域,或者先创建一个ou,再在对应ou下创建用户。我这里使用migrationtools的方式导入的系统账户,所以默认就有了ou=Group和ou=People两个ou,下面我们在ou=People下创建用户

首先:点击左侧dc下的ou=Peopel组,摊开下拉菜单,点击Create new entry here按钮,或者点击左侧的ou=People后再点击右侧的Create a child entry按钮

 弹出下面界面,选择Generic Ucer Account

弹出一下对话框,

对话框中,firstname,lastname以及commonname都可以按照自己的需求填写就行,

UserID这里要注意了,不要与现有系统的用户名重复,

输入密码的时候建议大家使用ldappasswd生成加密字符串填写,当然也可以用默认的clear也就是明文的方式填写, 如果使用加密字符串需要点击下拉箭头选择加密方式。

uid这里不让随便修改了,应该是防止重复,如果觉得不方便大家就是用前面的ldif文件导入方式创建吧,如果出现重复会给予警告, 当然我们也可以在openldap中设置起始uid的编号

GidNumber这里需要选择已有的用户组id,如果没有则需要先创建用户组再来创建用户。

home directory就是用户登陆后的默认文件夹,这里一般是/home/userid,可以自行指定,如果配置好ldap的登陆后,一般会自动创建这里指定的文件夹,如果发现登陆时没有对应文件夹应在系统中创建对应的文件夹。

login shell就是默认登陆时启动的shell服务,一般都是bash了。

然后再点击Create Object按钮

弹出再次确认的窗口,这里会让用户再确认一遍用户信息,确认后点击Commit提交创建,点击Cancel就取消掉了。

提交后会默认进入当前已创建用户的update界面,不想更新的话就可以忽略了,现在可以在系统中使用 id $uerid的命令查看用户id和用户组信息,也可以直接使用这里的user id 和password明文密码进行登陆了:

结束语

phpldapadmin的web界面还可以进行导出备份等操作,页面也可以进行用户、用户组、用户组织以及组映射的创建和维护操作,这里大家都可以自己进行测试,如果错误直接操作删除或者重新配置更新即可。

当然最大的好处还是在与ldap账户的统一管理。

后面大家有什么问题欢迎大家一起讨论

相关文章:

  • MySQL数据库编程进阶
  • 「江鸟中原」有关HarmonyOS-ArkTS的Http通信请求
  • oracle常用通用sql脚本——查询前用户的表空间信息
  • 【古月居《ros入门21讲》学习笔记】12_服务端Server的编程实现
  • 如何用SWIG封装c++接口给java使用?
  • PyTorch模型训练过程内存泄漏问题解决
  • 蓝桥杯官网练习题(平均)
  • Vue学习
  • 基于springboot实现高校食堂移动预约点餐系统【项目源码】
  • LeetCode51. N-Queens
  • c++[string实现、反思]
  • XTU OJ 1146 矩阵乘法学习笔记
  • scrapy框架流程
  • hadoop源码解读
  • java算法学习索引之数组矩阵问题
  • ----------
  • 【译】JS基础算法脚本:字符串结尾
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • k8s如何管理Pod
  • Less 日常用法
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Node 版本管理
  • Redis在Web项目中的应用与实践
  • 安卓应用性能调试和优化经验分享
  • 构建二叉树进行数值数组的去重及优化
  • 记一次和乔布斯合作最难忘的经历
  • 近期前端发展计划
  • 前端知识点整理(待续)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​插件化DPI在商用WIFI中的价值
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (arch)linux 转换文件编码格式
  • (C语言)fgets与fputs函数详解
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (安卓)跳转应用市场APP详情页的方式
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)VirtualBox安装增强功能
  • (转)Sql Server 保留几位小数的两种做法
  • ******之网络***——物理***
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET MVC之AOP
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET命令行(CLI)常用命令
  • /bin/bash^M: bad interpreter: No such file or directory
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @SuppressWarnings注解
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [C\C++]读入优化【技巧】
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [C++]二叉搜索树