LDAP搭建

LDAP

LDAP 的全称是 Lightweight Directory Access Protocol,「轻量目录访问协议」。

具体可以参考:
https://www.openldap.org/doc/admin24/intro.html

环境

Linux版本:centos 7.9.2009

Ldap版本:openldap 2.4

安装和配置

安装openldap及相关包

yum install openldap openldap-servers openldap-clients

拷贝数据库配置文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG

DB_CONIFG中主要是关于Berkeley DB的相关的一些配置

启动OpenLDAP Server

systemctl start slapd 
systemctl enable slapd
systemctl status slapd

slapd即standard alone ldap daemon,该进程默认监听389端口

如下图所示:
在这里插入图片描述

设置root用户密码

先用一个命令生成一个LDAP管理用户root密码:

slappasswd
New password:
Re-enter new password:
{SSHA}CfZVRdbczsjDA8xDSCcp2GmfitlRge7f  # 记住这个生成的加密密码,下面会用到  admin

新建一个rootpwd.ldif(名称是自定义的)的文件:

vi rootpwd.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}CfZVRdbczsjDA8xDSCcp2GmfitlRge7f
  • ldifLDAP Data Interchange Format,是LDAP中数据交换的一种文件格式。文件内容采用的是key-value形式,注意value后面不能有空格。
  • 上面内容中dndistingush name
  • olcOnline Configuration,表示写入LDAP后不需要重启即可生效
  • changetype: modify表示修改一个entrychangetype的值可以是add,delete,modify等。
  • add: olcRootPW表示对这个entry新增了一个olcRootPW的属性
  • olcRootPW: {SSHA}CfZVRdbczsjDA8xDSCcp2GmfitlRge7f指定了属性值

下面使用ldapadd命令将上面的rootpwd.ldif文件写入LDAP:

ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"

导入schema

导入schema,schema包含为了支持特殊场景相关的属性,可根据选择导入,这里先全部导入:

ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done

设定默认域

先使用slappasswd生成一个密码:

slappasswd
New password:
Re-enter new password:
{SSHA}koOW+gXaDu5tiGTg5W1ZI7dKZhXpwPFh

新建一个domain.ldif的文件:

vi domain.ldif
# 编辑内容如下
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=zhidaoauto,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=zhidaoauto,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=zhidaoauto,dc=com


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}koOW+gXaDu5tiGTg5W1ZI7dKZhXpwPFh #替换上面生成的密码  admin1


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=zhidaoauto,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=zhidaoauto,dc=com" write by * read

  • olcAccessaccess,该key用于指定目录的ACL即谁有什么权限可以存取什么
  • olcRootDN设定管理员root用户的distingush name
  • 注意替换上面文件内容中cn为具体的域信息
  • olcRootPW用上面新生成的密码替换

写入

# shell执行
ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
# 会有如下提示
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

添加基本目录

新建一个basedomain.ldif的文件:

dn: dc=zhidaoauto,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: zhidaoauto com
dc: zhidaoauto

dn: cn=Manager,dc=zhidaoauto,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=zhidaoauto,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=zhidaoauto,dc=com
objectClass: organizationalUnit
ou: Group
  • 注意替换上面文件内容中dn为具体的域信息
  • 理解dn,cn,dc
    • DCDomain ComponentLDAP目录类似文件系统目录dc=zhidaoauto,dc=com相当于/com/zhidaoauto
    • CNCommon NameCN有可能代表一个用户名,例如cn=Manager,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的管理员用户Manager
    • OUOrganizational Unit,例如ou=People,dc=zhidaoauto,dc=com表示在/com/zhidaoauto域下的一个组织单元People

写入

# 执行
ldapadd -x -D cn=Manager,dc=zhidaoauto,dc=com -W -f basedomain.ldif
# 输入密码
Enter LDAP Password:
# 会有如下提示 
adding new entry "dc=zhidaoauto,dc=com"

adding new entry "cn=Manager,dc=zhidaoauto,dc=com"

adding new entry "ou=People,dc=zhidaoauto,dc=com"

adding new entry "ou=Group,dc=zhidaoauto,dc=com"

测试一下

ldapsearch -LLL -W -x -D "cn=Manager,dc=zhidaoauto,dc=com" -H ldap://localhost -b "dc=zhidaoauto,dc=com"
Enter LDAP Password:
dn: dc=zhidaoauto,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: zhidaoauto com
dc: zhidaoauto

dn: cn=Manager,dc=zhidaoauto,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=zhidaoauto,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=zhidaoauto,dc=com
objectClass: organizationalUnit
ou: Group

管理工具

LDAP Account Manager

docker安装

镜像地址:https://hub.docker.com/r/ldapaccountmanager/lam

拉取镜像 Docker Pull Command

docker pull ldapaccountmanager/lam

在这里插入图片描述

运行此命令:

# 我这里已经有一个了,又做了一次,所以图片中端口中改为了8081
docker run -p 8080:80 -it -d ldapaccountmanager/lam:stable

在这里插入图片描述

然后通过http://localhost:8080/访问 LAM Pro
在这里插入图片描述

如果需要,您可以更改端口 8080

配置文件存放在:

  • /etc/ldap-account-manager
  • /var/lib/ldap-account-manager

在此处查看可能的环境变量:https ://github.com/LDAPAccountManager/lam/blob/develop/lam-packaging/docker/.env

配置

在这里插入图片描述
在这里插入图片描述

  1. 通用配置中修改 ldap服务器地址
  2. 树状结构后缀,对应ldap设置的dc
  3. 合法用户列表,对应ldap设置的dc
  4. 账号类型中修改用户及组的LDAP后缀,对应ldap设置的dc
  5. 修改完毕之后进行保存,即可发现前台管理员用户已经变为ldap中设置的用户名,输入密码即可进入进行管理

LDAP Admin

类似上方设置,后续有机会补充

docker快速搭建LDAP

# 搭建openldap

docker run --env LDAP_ORGANISATION="demo" --env LDAP_DOMAIN="demo.com" --env LDAP_ADMIN_PASSWORD="admin"  --detach osixia/openldap


# 搭建phpldapadmin.   dreamy_turing是上面openldap容器的名字

docker run -p 8089:80 -p 6443:443  --link dreamy_turing  --env PHPLDAPADMIN_LDAP_HOSTS=dreamy_turing --detach osixia/phpldapadmin

参考

https://www.cnblogs.com/chadiandianwenrou/p/9522756.html

https://blog.frognew.com/2017/05/openldap-install-notes.html#ldapadmin

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ljjopq123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值