Docker安装LDAP
安装LDAP分Server端和Client端两部分的安装部署
Server端参考地址: https://github.com/osixia/docker-openldap
Client端参考地址: https://github.com/osixia/docker-phpLDAPadmin
Server端OpenLDAP安装
拉取镜像
docker pull osixia/openldap:1.2.4
运行镜像
docker run -p 389:389 -p 636:636 --name my-openldap-container --detach osixia/openldap:1.2.4
本命令是ldap会默认创建一个admin用户,默认密码也是admin.
也通过环境变量设置 LDAP 服务器的参数:
LDAP_ORGANISATION: Organisation name. Defaults to Example Inc.
LDAP_DOMAIN: Ldap domain. Defaults to example.org
LDAP_BASE_DN: Ldap base DN. If empty automatically set from LDAP_DOMAIN value. Defaults to (empty)
LDAP_ADMIN_PASSWORD Ldap Admin password. Defaults to admin
LDAP_CONFIG_PASSWORD Ldap Config password. Defaults to config
LDAP_READONLY_USER Add a read only user. Defaults to false
LDAP_READONLY_USER_USERNAME Read only user username. Defaults to readonly
LDAP_READONLY_USER_PASSWORD Read only user password. Defaults to readonly
LDAP_RFC2307BIS_SCHEMA Use rfc2307bis schema instead of nis schema. Defaults to false
例子:
docker run --env LDAP_ORGANISATION="My Company" --env LDAP_DOMAIN="my-company.com" \
--env LDAP_ADMIN_PASSWORD="JonSn0w" --detach osixia/openldap:1.2.4
LDAP查询命令
通过ldapsearch,ldapadd,ldapdelete,ldapmodify等参数查询、新增、删除、修改内容信息。如下所示命令是对ldap进行一次查询
docker exec my-openldap-container ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
正常输出结果如下所示:
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# example.org
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example
# admin, example.org
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9Q3BkSlF6UUtzUjlOa29waktxWmdrNHBsdVZSMExWUE4=
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
数据文件和配置文件外置安装方式介绍
-
在主机上进行分区,笔者分了2G的逻辑分区出来:
命令使用 fdisk /dev/sda2 ... 省略分区步骤最后格式化分区 mkfs.ext4 /dev/XXXX
-
挂载分区:
1. 创建目录如下: /data/ldap/database/ /data/ldap/config/slapd.d /data/ldap/conffileldap data目录保存数据 slapd.d目录保存配置 conffileldap目录用来与容器交换文件 2.执行挂载 mount /dev/XXXX /data
-
运行镜像:
docker run -p 389:389 -p 636:636 \ --name my-openldap-container \ --volume /data/ldap/database:/var/lib/ldap \ --volume /data/ldap/config/slapd.d:/etc/ldap/slapd.d \ --volume /data/ldap/conffileldap/:/home/ldap/conffile \ --detach osixia/openldap:1.2.4
-
问题:
容器中没有执行权限 //挂载外部数据卷时,无法启动容器, 报 chown: cannot read directory '/var/lib/mysql/': Permission denied
该原因为centOs7默认开启selinux安全模块,需要临时关闭该安全模块,或者添加目录到白名单解决方案:
将要挂载的目录添加到白名单: 示例:chcon -Rt svirt_sandbox_file_t /data/mysql/db/
Client端PHPLdapAdmin安装
拉取镜像
docker pull osixia/phpldapadmin:0.8.0
运行镜像
docker run -p 8888:443 \
--env PHPLDAPADMIN_LDAP_HOSTS=192.168.2.138 \
--detach osixia/phpldapadmin:0.8.0
客户端界面
安装成功后输入https://ip:8888 进入页面如下图所示:
登录成功后界面
LogingDN(默认):
cn=admin,dc=example,dc=org
Password(默认):
admin
问题
可能会出现连接LDAP服务端失败或者用户名密码错误。
解决方案
由于LDAP Server访问是389端口号,需要将389端口加入到防火墙白名单里面。执行如下命名:
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak.$(date "+%Y%m%d%H%M%S");
sed -i '/.*--dport 22 -j ACCEPT.*/a\-A INPUT -p tcp -m state --state NEW -m tcp --dport 389 -j ACCEPT' /etc/sysconfig/iptables;
systemctl restart iptables;systemctl enable iptables
博客著作权归本作者所有,任何形式的转载都请联系作者获得授权并注明出处。