搭建LDAP服务器详细流程

2022-08-27 16:37:04 浏览数 (1)

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

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

搭建LDAP服务器

  • 引言
  • 资源包准备
  • 安装软件
  • 配置openldap server
  • 创建base.ldif文件
  • 管理用户与组
  • 管理group,user
  • 安装phpldapadmin
  • web 端登录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

安装软件

使用 安装ldap相关软件

代码语言:javascript复制
yum install -y openldap openldap-clients openldap-servers vim

配置openldap server

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

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

  1. 配置 /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
代码语言:javascript复制
vim /etc/openldap/slapd.d/cn=config/olcDatabase={ 
     1}monitor.ldif

  1. 将下述内容

替换为:

  1. 配置 /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
代码语言:javascript复制
vim /etc/openldap/slapd.d/cn=config/olcDatabase={ 
     2}hdb.ldif

  1. 将 下述内容

进行替换,并在最后一行添加认证密码123123: olcRootPW: 123123

  1. 拷贝DB文件
代码语言:javascript复制
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# 修改该文件的权限
chown -R ldap:ldap /var/lib/ldap/

  1. 测试配置文件是否正确
代码语言:javascript复制

slaptest -u 

  1. 如果出现下图样式表示成功,可以忽略error,只要出现 succeeded 即表示成功。
  1. 启动服务
代码语言:javascript复制
systemctl start slapd
systemctl enable slapd
  1. 添加scheme表
代码语言:javascript复制
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 文件
代码语言:javascript复制

vim base.ldif 

  1. 拷贝如下内容到创建的 base.ldif 文件 其中的 codesweet 和前面的步骤统一,如果一开始你是设置其他名称,则此处的 codesweet 更换成你的名称,保持统一即可。
代码语言:javascript复制
	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

  1. 建立最基础的目录结构
代码语言:javascript复制
ldapadd -x -W -D "cn=admin,dc=dianxin,dc=com" -f base.ldif 

  1. 配置 ldap.conf
代码语言:javascript复制
vim /etc/openldap/ldap.conf 

  1. BASEURL 的注释去除,更换为下述,BASE 中的第一个 dc 更换为 codesweet,URL 中的IP 地址更换为你的云服务器的公网 IP。

管理用户与组

  1. 安装依赖包 sharutils
代码语言:javascript复制
yum install sharutils 

  1. 手动安装资源包 Ldapscripts 将文章起始处下载的资源包 Ldapscripts 上传到 ECS 的根路径中,然后进行解压并手动安装到根路径中。
代码语言:javascript复制
tar zxf ldapscripts-2.0.8.tgz
cd  ldapscripts-2.0.8
make install PREFIX=/

  1. 配置 dapscripts
代码语言:javascript复制
vim /etc/ldapscripts/ldapscripts.conf 

  1. 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" 的注释
  2. 修改 /etc/ldapscripts/ldapscripts.passwd 文件
代码语言:javascript复制

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

管理group,user

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

创建group

代码语言:javascript复制
ldapaddgroup openstack 

创建用户

代码语言:javascript复制
ldapadduser user1 openstack

设置用户密码

代码语言:javascript复制
ldapsetpasswd user1 

安装phpldapadmin

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

  1. 安装 phpldapadmin
代码语言:javascript复制
yum install -y phpldapadmin 

  1. yum安装时,会自动安装apache和php的依赖。注意: phpldapadmin很多没更新了,只支持php5,如果你服务器的环境是php7,则会有问题,页面会有各种报错。 可以使用php -v来查看php版本。
  2. 修改apache的phpldapadmin配置文件
代码语言:javascript复制

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

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

  1. 修改配置用DN登录ldap
代码语言:javascript复制

vim /etc/phpldapadmin/config.php 

  1. a. 398行,默认是使用uid进行登录,我这里改为dn,也就是用户名
代码语言:javascript复制

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

  1. b. 460行,关闭匿名登录,否则任何人都可以直接匿名登录查看所有人的信息
代码语言:javascript复制

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

  1. c. 519行,设置用户属性的唯一性,这里我将cn,sn加上了,以确保用户名的唯一性
代码语言:javascript复制

$servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn')); 

  1. 启动apache
代码语言:javascript复制

systemctl start httpd systemctl enable httpd

web 端登录LDAP

  1. 启动了apache服务后,采用dn登录方式登录 web 端LDAP。
  2. 在浏览器上访问: http://121.51.39.239/ldapadmin,然后使用上面定义的用户,进行登录,如下:
代码语言:javascript复制
账户:cn=admin,dc=codesweet,dc=com 
密码:123123

  1. 如下图:

3. 点击认证后,则成功登录:

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

0 人点赞