OpenLDAP和PHPLdapAdmin测试环境搭建

一、介绍
服务器安装
获取相关镜像
docker pull osixia/openldap
docker pull osixia/phpldapadmin

二、部署OpenLDAP

docker run \
-d \
-p 389:389 \
-p 636:636 \
-v /usr/local/ldap:/usr/local/ldap \
-v /data/openldap/ldap:/var/lib/ldap \
-v /data/openldap/slapd.d:/etc/ldap/slapd.d \
--env LDAP_ORGANISATION="huaxi.us" \
--env LDAP_DOMAIN="jump.huaxi.us" \
--env LDAP_ADMIN_PASSWORD="jumpserver" \
--name openldap \
--hostname openldap-host\
--network bridge \
osixia/openldap:1.4.0
解释:
-v /data/openldap/ ldap:/var/lib/ldap:将数据持久化到本地
其中 -p 389:389 \ TCP/IP 访问端口,-p 636:636 \ SSL 连接端口。
–name your_ldap 自行设置容器名称
–network bridge 连接默认的 bridge 网络(docker0)
–hostname openldap-host 设置容器主机名称为 openldap-host
–env LDAP_ORGANISATION=“ huaxi.us ” 配置 LDAP 组织名称
–env LDAP_DOMAIN=“ jump.huaxi.us ” 配置 LDAP 域名
–env LDAP_ADMIN_PASSWORD=“jumpserver” 配置 LDAP 密码 默认登录用户名:admin
安装完毕可采用此工具进行测试:
username:cn=admin,dc=jump,dc=huaxi,dc=us
password:jumpserver

三、安装可视化工具 :PHPLdapAdmin 客户端

docker run \
-p 58080:80 \
--privileged \
--name limildap \
--env PHPLDAPADMIN_HTTPS=false \
--env PHPLDAPADMIN_LDAP_HOSTS=172.17.0.2 \
--detach osixia/phpldapadmin
参数解释:
-d 分离模式启动容器
–privileged 特权模式启动(使用该参数,container 内的 root 拥有真正的 root 权限。 否则,container 内的 root 只是外部的一个普通用户权限。)
–env PHPLDAPADMIN_HTTPS=false 禁用 HTTPS
–env PHPLDAPADMIN_LDAP_HOSTS =172.17.0.2 配置 openLDAP的IP或者域名, 需要进入容器内查看IP ,docker exec -it 64f7964ccb3a /bin/bash。
此处设置访问端口为 58080
可开启 443 端口 -p 443:443

四、管理用户分组

1、创建两个基本组织
ldap本质上就是轻量目录协议,那么接下来创建的东西也都可以按目录层级的概念来理解,现在需要先创建两个最外层目录,一个作为人员的所有代理目录,一个作为分组的目录,分别为Dev和dev,创建方式如下:
cat << EOF | ldapadd -x -D "cn=admin,dc=jump,dc=huaxi,dc=us" -w jumpserver
dn: ou=Dev,dc=jump,dc=huaxi,dc=us
objectClass: organizationalUnit
ou: dev

dn: ou=Group,dc=jump,dc=huaxi,dc=us
objectClass: organizationalUnit
ou: group
EOF
重新登录PHPLdapAdmin,就可以看到新建的OU
2、创建用户
创建三个用户,操作如下:
cat << EOF | ldapadd -x -D "cn=admin,dc=jump,dc=huaxi,dc=us" -w jumpserver
dn: uid=liqilong,ou=Dev,dc=jump,dc=huaxi,dc=us
uid: liqilong
cn: liqilong
sn: liqilong
displayName: liqilong
objectClass: posixAccount
objectClass: top
objectClass: person
objectClass: shadowAccount
objectClass: inetOrgPerson
gecos: System Manager
loginShell: /bin/bash
homeDirectory: /home/liqilong
userPassword: liqilong
uidNumber: 1000
gidNumber: 1009
mobile: 15638887180
mail: liqilong@eryajf.net
postalAddress: Hangzhou
EOF
cat << EOF | ldapadd -x -D "cn=admin,dc=jump,dc=huaxi,dc=us" -w jumpserver
dn: uid=zhangsan,ou=Dev,dc=jump,dc=huaxi,dc=us
uid: zhangsan
cn: zhangsan
sn: zhangsan
displayName: zhangsan
objectClass: posixAccount
objectClass: top
objectClass: person
objectClass: shadowAccount
objectClass: inetOrgPerson
gecos: System Manager
loginShell: /bin/bash
homeDirectory: /home/zhangsan
userPassword: zhangsan
uidNumber: 1000
gidNumber: 1009
mobile: 15638887180
mail: zhangsan@eryajf.net
postalAddress: Hangzhou
EOF
cat << EOF | ldapadd -x -D "cn=admin,dc=jump,dc=huaxi,dc=us" -w jumpserver
dn: uid=zhaosi,ou=Dev,dc=jump,dc=huaxi,dc=us
uid: zhaosi
cn: zhaosi
sn: zhaosi
displayName: zhaosi
objectClass: posixAccount
objectClass: top
objectClass: person
objectClass: shadowAccount
objectClass: inetOrgPerson
gecos: System Manager
loginShell: /bin/bash
homeDirectory: /home/zhaosi
userPassword: zhaosi
uidNumber: 1000
gidNumber: 1009
mobile: 15638887180
mail: zhaosi@eryajf.net
postalAddress: Hangzhou
EOF
3、创建组
组的概念帮助我们大大减轻很多人员权限配置的工作量,它是与用户平行的目录等级,至于创建什么样的组,以哪个维度进行划分,都是可以的,只要实际需求合理,都是可以的。
这里就以常见配置环境中的分组维度,分如下几个组:
cat << EOF | ldapadd -x -D "cn=admin,dc=jump,dc=huaxi,dc=us" -w jumpserver dn: cn=ops,ou=Group,dc=jump,dc=huaxi,dc=us cn: ops gidNumber: 66 objectClass: top objectClass: posixGroup
dn: cn=dev,ou=Group,dc=jump,dc=huaxi,dc=us cn: dev gidNumber: 66 objectClass: top objectClass: posixGroup
dn: cn=safe,ou=Group,dc=jump,dc=huaxi,dc=us cn: safe gidNumber: 66 objectClass: top objectClass: posixGroup EOF
4、各就各位
前边已经创建了一些用户, 一些组,现在就来对这些用户进行分组,我称之为各就各位。
通过如下方式可以将一个用户加入到某个组内:
如上意思表示将 liqilong和 zhaosi加入到ops这个组,操作之后现在可以看下web页面:
可以看到用户已经在对应组内了,这个时候如果需要添加更多用户,可以直接通过下边 add value进行添加。
也可以通过ldapadmin软件来添加。