OpenLDAP安装及使用

LDAP,Light Directory Access Portocol,基于X.500标准的轻量级目录访问协议。OpenLDAP是LDAP的自由和开源的实现

许多开源工具都支持LDAP认证,这样只需要管理LDAP,不需要各个软件都单独管理帐号,极大减少维护帐号的工作。建议使用LDAP,将开源工具集成LDAP认证。

OpenLDAP安装及配置

操作系统版本:ubuntu 18.04
假设 ip : 192.168.3.5
域名: example.com
admin账户密码:123456

直接在物理机上安装

安装命令

sudo apt install slapd ldap-utils

配置

在/etc/ldap/ldap.conf, 添加BASE 和 URI。LDAP默认的端口号是389

BASE    dc=example,dc=com
URI ldap://192.168.3.5:389

重新加载配置,如果需要重新修改域名,则使用这个命令,如果域名已经设置好了,可以忽略

sudo dpkg-reconfigure slapd
大概需要输入内容如下
No -> DNS domain:example.com -> organization name: example -> 密码 -> 确认密码 -> yes -> MDB ->no -> yes

验证安装

sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
#-b 参数值,使用的是/etc/ldap/ldap.conf中配置的BASE
ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn

问题

执行ldapsearch -x时出现下面的错误信息:
"ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)"

原因:在/etc/ldap/ldap.conf中配置IP和端口号错了,所以报了网络的错。

使用docker安装

拉取docker镜像

docker pull osixia/openldap

创建容器

docker run -d -p <宿主机映射389的端口>:389 -p <宿主机映射636的端口>:636 --name <容器名称> \
    --network bridge --hostname openldap --restart=always \
    --env LDAP_ORGANISATION="example" \
    --env LDAP_DOMAIN="example.com" \
    --env LDAP_BASE_DN="dc=example,dc=com" \
    --env LDAP_ADMIN_PASSWORD="123456" \
    osixia/openldap:latest

安装phpLDAPadmin

phpLDAPadmin是一款可以在页面上管理OpenLDAP的软件,实现可视化管理OpenLDAP。

安装命令

sudo apt-get install -y phpldapadmin

配置

在/etc/phpldapadmin/config.php文件中添加OpenLDAP信息,修改文件中下面几个参数

/*设置openldap的ip*/
$servers->setValue('server','host','192.168.3.5');
/*设置openldap的端口号,默认是389;如果是docker安装,填写宿主机映射389的端口*/
$servers->setValue('server','port',389);
/*填写openldap的最顶端的dn*/
$servers->setValue('server','base',array('dc=example,dc=com'));
/*填写admin的dn*/
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
$config->custom->appearance['hide_template_warning'] = true;

验证

访问链接:http://192.168.3.5/phpldapadmin

报错

打开登录phpldapadmin报错,报错信息如下:

Deprecated: Function create_function() is deprecated  in /usr/share/phpldapadmin/lib/functions.php on line 1083

原因:create_function存在漏洞,php在5.3版本及更高版本之后就不再支持create_function的用法了,而当前机器的php版本是7.2.x。
解决:将当前机器的php的版本降低。如果当前机器是服务器的话,不建议修改php版本,可能会影响其他操作
ubuntu18.04上没有php5.3之前的版本,以下是切换php版本的参考步骤。

#添加php的源
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
#下载php5.x版本
sudo apt-get install -y php5.6
#查看当前机器上的php的版本,这个命令也能修改默认的版本
sudo update-alternatives --config php
# 从7.2.x切到5.6
sudo update-alternatives --set php /usr/bin/php5.6

LDAP命令使用

添加

ldapadd -x -D cn=admin,dc=example,dc=com -h 192.168.3.5 -p 389 -w 123456 -f add.ldif

add.ldif示例如下

#创建部门
dn: ou=departmentA,dc=example,dc=com
objectClass: organizationalUnit
ou: departmentA

#创建帐号
dn: cn=test,ou=departmentA,dc=example,dc=com
objectClass: inetOrgPerson
uid: test
sn: test
cn: test
displayName: 测试帐号
mail: [email protected]
ou: departmentA
userPassword:123456

查询

ldapsearch  -x -D cn=admin,dc=example,dc=com -h 192.168.3.5 -p 389 -w 123456 -b <要查询内容的dn>

删除

删除具体帐号:

ldapadd -x -D cn=admin,dc=example,dc=com -h 192.168.3.5 -p 389 -w 123456 cn=test,ou=departmentA,dc=example,dc=com

删除某个ou

#删除没有子条目的ou
ldapadd -x -D cn=admin,dc=example,dc=com -h 192.168.3.5 -p 389 -w 123456 ou=departmentA,dc=example,dc=com
#删除有子条目的ou,加个 -r 选项
ldapadd -x -r -D cn=admin,dc=example,dc=com -h 192.168.3.5 -p 389 -w 123456 ou=departmentA,dc=example,dc=com

修改

ldapadd -x -D cn=admin,dc=example,dc=com -h 192.168.3.5 -p 389 -w 123456 -f modify.ldif

modify.ldif示例

dn: cn=test,ou=departmentA,dc=example,dc=com
changetype: modify
replace: mail
mail: [email protected]
-
replace: displayName
displayName: 临时测试帐号
-
replace: userPassword
userPassword: 321

你可能感兴趣的:(OpenLDAP安装及使用)