Ceotos 7 安装openldap + phpldapadmin

2018年12月25日 作者 ruike

1. 安装OpenLDAP

1.1 环境

[root@cdh-server3 ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.5.1804 (Core)
Release: 7.5.1804
Codename: Core
[root@cdh-server3 ~]#

[root@cdh-server3 ~]# uname -a
Linux cdh-server3 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@cdh-server3 ~]#

可以看到已经安装了
[root@cdh-server3 ~]# rpm -qa | grep openldap
openldap-2.4.44-15.el7_5.x86_64
[root@cdh-server3 ~]#

1.2 安装

#注意后面一个是-y 默认同意
[root@cdh-server1 ~]# yum install openldap openldap-* -y
[root@cdh-server1 ~]# rpm -qa | grep openldap
openldap-2.4.44-15.el7_5.x86_64
openldap-servers-sql-2.4.44-15.el7_5.x86_64
openldap-devel-2.4.44-15.el7_5.x86_64
openldap-servers-2.4.44-15.el7_5.x86_64
openldap-clients-2.4.44-15.el7_5.x86_64
[root@cdh-server1 ~]#

1.3 查看版本

root@cdh-server1 ~]# slapd -VV
@(#) $OpenLDAP: slapd 2.4.44 (May 16 2018 09:55:53) $
mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd

1.4 默认账号

安装完成之后,会自动生成一个OpenLDAP的系统账号

第一列是用户名

[root@cdh-server1 ~]# cat /etc/passwd
ldap:x:55:55:OpenLDAP server:/var/lib/ldap:/sbin/nologin

密码(第二列是加密的密码)

[root@cdh-server1 ~]# cat /etc/shadow
ldap:!!:17826::::::

但是不知道明文密码是多少

注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件。

1.5 OpenLDAP管理员账号密码-登录phpldapadmin

生成的密码(后边修改配置文件需要使用)

[root@cdh-server3 ~]# slappasswd -s ldap123
{SSHA}hWP0W7XKBLTSfDgrG0FxZ5DaEr5lkZov

配置

[root@cdh-server2 openldap]# vim /etc/openldap/slapd.d/cn=config/olcDatabase\={2}hdb.ldif
olcRootPW: {SSHA}hWP0W7XKBLTSfDgrG0FxZ5DaEr5lkZov
olcRootDN: cn=Manager,dc=jf,dc=local
olcSuffix: dc=jf,dc=local

注意:其中cn=root中的root表示OpenLDAP管理员的用户名,而olcRootPW表示OpenLDAP管理员的密码。

修改olcDatabase={1}monitor.ldif文件

[root@cdh-server1 ~]# vim /etc/openldap/slapd.d/cn=config/olcDatabase\={1}monitor.ldif
olcAccess: {0}to * by dn.base=”gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth” read by dn.base=”cn=Manager,dc=jf,dc=local” read by * none

注意:该修改中的dn.base是修改OpenLDAP的管理员的相关信息的。

验证OpenLDAP的基本配置,使用如下命令:

[root@cdh-server1 ~]# slaptest -u
5bcdba18 ldif_read_file: checksum error on “/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif”
5bcdba18 ldif_read_file: checksum error on “/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif”
config file testing succeeded
[root@cdh-server1 ~]#

我们可以很明显的看出OpenLDAP的基本配置是没有问题。

1.6 配置OpenLDAP数据库

OpenLDAP默认使用的数据库是BerkeleyDB,现在来开始配置OpenLDAP数据库,使用如下命令:

[root@cdh-server3 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@cdh-server1 ~]# chown ldap:ldap -R /var/lib/ldap

注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。

1.7 验证

[root@cdh-server3 ~]# slaptest -u
5bcf1188 ldif_read_file: checksum error on “/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif”
5bcf1188 ldif_read_file: checksum error on “/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif”
config file testing succeeded
[root@cdh-server3 ~]#

我们可以很明显的看出OpenLDAP的基本配置是没有问题。

1.8 启动

先启动后启用
[root@cdh-server1 ~]# systemctl start slapd
[root@cdh-server1 ~]# systemctl enable slapd
查看状态
[root@cdh-server3 ~]# systemctl status slapd

注意:这里有三个红色的,暂时不解决 在下面解决

OpenLDAP默认监听的端口是389,下面我们来看下是不是389端口,如下:

[root@cdh-server1 ~]# netstat -antup | grep 389
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 27072/slapd
tcp6 0 0 :::389 :::* LISTEN 27072/slapd

可以很明显的看出OpenLDAP确实是监听的是389端口。

OpenLDAP监听的端口:
默认监听端口:389(明文数据传输)
加密监听端口:636(密文数据传输)
1
2
3
1.9 执行ldapsearch -x检查是否有如下输出
[root@cdh-server3 ~]# ldapsearch -x
extended LDIF

LDAPv3
base <> (default) with scope subtree
filter: (objectclass=*)
requesting: ALL

search result
search: 2
result: 32 No such object
numResponses: 1
[root@cdh-server3 ~]#

2. 安装phpLDAPadmin

2.1 安装

[root@cdh-server3 ~]# yum install phpldapadmin
如果找不到 phpldapadmin
[root@cdh-server3 ~]#yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@cdh-server3 ~]# rpm -qa | grep phpldapadmin
phpldapadmin-1.2.3-10.el7.noarch
[root@cdh-server3 ~]#

2.2 配置phpLDAPadmin

2.2.1 配置/etc/httpd/conf.d/phpldapadmin.conf允许从远程访问

第一处修改

[root@cdh-server1 ~]# vi /etc/httpd/conf.d/phpldapadmin.conf

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require local
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>

修改为


Alias /phpldapadmin /usr/share/phpldapadmin/htdocs Alias /ldapadmin /usr/share/phpldapadmin/htdocs <Directory /usr/share/phpldapadmin/htdocs> Order Deny,Allow Allow from all </Directory>

2.2.2 第二处修改Apache主配置文件httpd.conf

[root@cdh-server1 ~]# vi /etc/httpd/conf/httpd.conf
“`asp
102 #
103 # AllowOverride none
104 # Require all denied
105 #

106

```asp
<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>

注释掉102-105添加107-110

不然会报错

Forbidden
You don’t have permission to access /phpldapadmin/ on this server.

2.2.3 修改/etc/phpldapadmin/config.php配置用DN登录

[root@cdh-server1 ~]# vi /etc/phpldapadmin/config.php
$servers->setValue(‘login’,’attr’,’dn’);
// $servers->setValue(‘login’,’attr’,’uid’);

2.3 然后重启服务

2.3.1 启动服务

启动
[root@cdh-server1 ~]# service httpd start
停止
[root@cdh-server1 ~]# service httpd stop
重启
[root@cdh-server1 ~]# systemctl restart httpd
查看状态
[root@cdh-server1 ~]# service httpd status
Redirecting to /bin/systemctl status httpd.service
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2018-10-22 19:00:33 CST; 7s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 22571 (httpd)
Status: “Processing requests…”
CGroup: /system.slice/httpd.service
├─22571 /usr/sbin/httpd -DFOREGROUND
├─22572 /usr/sbin/httpd -DFOREGROUND
├─22574 /usr/sbin/httpd -DFOREGROUND
├─22575 /usr/sbin/httpd -DFOREGROUND
├─22576 /usr/sbin/httpd -DFOREGROUND
└─22577 /usr/sbin/httpd -DFOREGROUND

2.3.2 开启防火墙

添加
firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd –reload

2.3.3 访问

访问界面:http://ip/phpldapadmin/

登录LDAP
DN填写:cn=Manager,dc=jf,dc=local
密码:ldap123

会发现出现这个问题This base cannot be created with PLA.或则无法登陆或者只能匿名登录
解决方法请看:https://blog.csdn.net/qq_21383435/article/details/83313583

2.4 登陆成功

但是界面上有些东西不能使用。

2.5 解决

2.5.1 导入基本Schema

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

导入之后,重启服务,发现还是不可以

2.5.2 配置phpldapadmin

[root@cdh-server3 ~]# vim /etc/phpldapadmin/config.php
536 -到-544添加以下几行
$servers->newServer(‘ldap_pla’);
$servers->setValue(‘server’,’name’,’LDAP Server’);
$servers->setValue(‘server’,’host’,’127.0.0.1′);
$servers->setValue(‘server’,’port’,389);
$servers->setValue(‘server’,’base’,array(‘dc=jf,dc=local’)); # 需要修改
$servers->setValue(‘login’,’auth_type’,’cookie’);
$servers->setValue(‘login’,’bind_id’,’cn=Manager,dc=jf,dc=local’);# 需要修改
$servers->setValue(‘login’,’bind_pass’,’ldap123′);# 需要修改
$servers->setValue(‘server’,’tls’,false);

然后重启

发现界面也是可以用了

2.3. migrationtools

你可以从 /etc/passwd, /etc/shadow, /etc/groups 中生成 ldif 更新 ldap 数据库,这需要用到 migrationtools 工具。

注意:卸载的时候,不要搞坏了yum,因为卸载–nodes这样会强制搞坏yum

3.安装 ldap-account-manager

https://blog.csdn.net/qq_21383435/article/details/83506675

参考:
https://wenku.baidu.com/view/b1326f88db38376baf1ffc4ffe4733687e21fcc6.html

https://www.jianshu.com/p/7e4d99f6baaf

https://segmentfault.com/a/1190000014683418

作者:九师兄-梁川川
来源:CSDN
原文:https://blog.csdn.net/qq_21383435/article/details/83313824
版权声明:本文为博主原创文章,转载请附上博文链接!