搭建LDAP服务器详细流程

搭建LDAP服务器详细流程本文详解的介绍了搭建LDAP服务器的详细流程,且亲自验证过。

大家好,又见面了,我是你们的朋友全栈君。

LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP 之上的访问协议—LDAP。

引言

本文介绍如何在搭建ldap服务器,我以在云服务器 ESC (Elastic Compute Service)上搭建为例,ESC系统为 centos7.9。公网IP为121.51.39.239。
里面涉及到的密码设置,可以自行选择密码配置,这里我统一设置为123123,避免搞混。

资源包准备

有些资源在centos中无法通过 yum install 安装,需要下载后手动安装。这里有个 Ldapscripts 资源就需要手动下载安装。
链接:https://pan.baidu.com/s/1KspZJGBzjXt0QIm3ITE2QQ?pwd=xofo 提取码:xofo

安装软件

  1. 使用 yum install 安装ldap相关软件
    yum install -y openldap openldap-clients openldap-servers vim
    

配置openldap server

将下述配置文件中的 Managermy-domain 更换成自己的命名

  1. 配置 /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif

    vim /etc/openldap/slapd.d/cn=config/olcDatabase={ 
         1}monitor.ldif
    

    将下述内容
    在这里插入图片描述
    替换为:
    在这里插入图片描述

  2. 配置 /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

    vim /etc/openldap/slapd.d/cn=config/olcDatabase={ 
         2}hdb.ldif
    

    将 下述内容
    在这里插入图片描述
    进行替换,并在最后一行添加认证密码123123: olcRootPW: 123123
    在这里插入图片描述

  3. 拷贝DB文件

    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    # 修改该文件的权限
    chown -R ldap:ldap /var/lib/ldap/
    
  4. 测试配置文件是否正确

    slaptest -u
    

    如果出现下图样式表示成功,可以忽略error,只要出现 succeeded 即表示成功。
    在这里插入图片描述

  5. 启动服务

    systemctl start slapd
    systemctl enable slapd
    
  6. 添加scheme表

    ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/nis.ldif
    ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/cosine.ldif
    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.ldif文件

  1. 创建 base.ldif 文件

    vim base.ldif
    
  2. 拷贝如下内容到创建的 base.ldif 文件
    其中的 codesweet 和前面的步骤统一,如果一开始你是设置其他名称,则此处的 codesweet 更换成你的名称,保持统一即可。

    	dn: dc=codesweet,dc=com
    	objectClass: dcObject
    	objectClass: organization
    	o: codesweet.com
    	dc: codesweet
    	
    	dn: ou=users,dc=codesweet,dc=com
    	objectClass: organizationalUnit
    	objectClass: top
    	ou: users
    	
    	dn: ou=groups,dc=codesweet,dc=com
    	objectClass: organizationalUnit
    	objectClass: top
    	ou: groups
    
  3. 建立最基础的目录结构

    ldapadd -x -W -D "cn=admin,dc=dianxin,dc=com" -f base.ldif
    
  4. 配置 ldap.conf

    vim /etc/openldap/ldap.conf
    

    BASEURL 的注释去除,更换为下述,BASE 中的第一个 dc 更换为 codesweet,URL 中的IP 地址更换为你的云服务器的公网 IP。
    在这里插入图片描述

管理用户与组

  1. 安装依赖包 sharutils

    yum install sharutils
    
  2. 手动安装资源包 Ldapscripts
    将文章起始处下载的资源包 Ldapscripts 上传到 ECS 的根路径中,然后进行解压并手动安装到根路径中。

    tar zxf ldapscripts-2.0.8.tgz
    cd  ldapscripts-2.0.8
    make install PREFIX=/
    
  3. 配置 dapscripts

    vim /etc/ldapscripts/ldapscripts.conf
    

    a. 更换公网IP,将 SERVER="ldap://localhost" 改成 SERVER="ldap://121.51.39.239"
    b. 将 SUFFIX="dc=example,dc=com" 改成 SUFFIX="dc=codesweet,dc=com"
    c. 将 BINDDN="cn=Manager,dc=example,dc=com" 改成 BINDDN="cn=admin,dc=codesweet,dc=com"
    d. 去掉 #ICONVCHAR="ISO-8859-15" 的注释

  4. 修改 /etc/ldapscripts/ldapscripts.passwd 文件

    sh -c "echo -n '123456' > /etc/ldapscripts/ldapscripts.passwd"
    

管理group,user

这一节可以忽略,这是介绍如何在终端中配置ldap中的用户和组的,后面可以在web中创建。

  1. 创建group
    ldapaddgroup openstack 
    
  2. 创建用户
    ldapadduser user1 openstack
    
  3. 设置用户密码
    ldapsetpasswd user1 
    

安装phpldapadmin

前面章节已经将ldap本地环境安装好,下面安装 web 界面 phpldapadmin

  1. 安装 phpldapadmin

    yum install -y phpldapadmin
    

    yum安装时,会自动安装apache和php的依赖。注意: phpldapadmin很多没更新了,只支持php5,如果你服务器的环境是php7,则会有问题,页面会有各种报错。 可以使用php -v来查看php版本。

  2. 修改apache的phpldapadmin配置文件

    vim /etc/httpd/conf.d/phpldapadmin.conf
    

    修改 <IfModule mod_authz_core.c> 中的内容,放开外网访问,这里只改了 2.4 版本的配置,因为 centos7 默认安装的 apache 为 2.4 版本。所以只需要改 2.4 版本的配置就可以了. 如果不知道自己apache版本,执行 rpm -qa|grep httpd 查看 apache 版本。

      <IfModule mod_authz_core.c>
        # Apache 2.4
        Require all granted
      </IfModule>
    
  3. 修改配置用DN登录ldap

    vim /etc/phpldapadmin/config.php
    

    a. 398行,默认是使用uid进行登录,我这里改为dn,也就是用户名

    $servers->setValue('login','attr','dn');
    

    b. 460行,关闭匿名登录,否则任何人都可以直接匿名登录查看所有人的信息

    $servers->setValue('login','anon_bind',false);
    

    c. 519行,设置用户属性的唯一性,这里我将cn,sn加上了,以确保用户名的唯一性

    $servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn'));
    
  4. 启动apache

    systemctl start httpd
    systemctl enable httpd
    

web 端登录LDAP

  1. 启动了apache服务后,采用dn登录方式登录 web 端LDAP。

  2. 在浏览器上访问: http://121.51.39.239/ldapadmin,然后使用上面定义的用户,进行登录,如下:

    账户:cn=admin,dc=codesweet,dc=com 
    密码:123123
    

    如下图:
    在这里插入图片描述
    3. 点击认证后,则成功登录:
    在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146558.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入理解iso七层模型_网络模型的七层结构

    深入理解iso七层模型_网络模型的七层结构ISO七层模型是国际标准化组织用于计算机或者通信系统间相互联系的标准体系.他是一个七层的,抽象的模型体.应用层(Application):网络服务与最终用户的一个接口。协议有:HTTPFTPTFTPSMTPSNMPDNSTELNETHTTPSPOP3DHCP表示层(PresentationLayer):数据的表示、安全、压缩。(

    2025年5月23日
    1
  • 黑客技术之初学者编程入门「建议收藏」

    黑客技术之初学者编程入门「建议收藏」你是否曾经在用别人开发的工具尝试“入侵”.你是否希望开发出自己的黑器……相信很多人有着这种近似相同的经历。本章将简单介绍黑客编程及工具开发。如果你是初学编程,如果你从来没有接触过黑客软件的开发,如果你急于想了解黑客编程方面的知识……那么就请继续往下阅读。编程语言和开发环境的选择初学者刚开始学习编程语言最头疼的问题就是如何选择编程语言及合适的开发环境,下面就来具体介绍一下。有

    2022年5月18日
    74
  • java messagedigest_JAVA MessageDigest(MD5加密等)

    java messagedigest_JAVA MessageDigest(MD5加密等)转自http://blog.csdn.net/hudashi/article/details/8394158一、概述java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如MD5或SHA算法。简单点说就是用于生成散列码。信息摘要是安全的单向哈希函数,它接收任意大小的数据,输出固定长度的哈希值。关于信息摘要和散列码请参照《数字证书简介》MessageD…

    2022年6月16日
    24
  • ssm和c3p0连接池配置文件的详解

    ssm和c3p0连接池配置文件的详解spring.xml配置&lt;?xmlversion="1.0"encoding="UTF-8"?&gt;&lt;beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:co…

    2022年6月5日
    27
  • map怎么转json对象_object转jsonobject

    map怎么转json对象_object转jsonobject业务背景:因为要嵌套一些数据报表,页面点击菜单直接进行url访问,因访问受限要修改url权限,返回数据是JSONObject,防止出现异常,后台进行了一些Map于JSONObject的转换,记录下来配置得json文件格式:{“redashLinks”:[{“name”:”在盈利表”,”url”:”http://i…

    2022年8月23日
    7
  • [GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及

    [GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,驾驭~这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时

    2022年10月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号