一、最全的openldap安装部署

一、安装openldap

1.使用yum命令安装openldap

yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-devel

2.安装包说明

安装包名称 说明
openldap openldap服务端和客户端必须用的库文件。
openldap-servers 用于启动服务和设置. 包含单独的ldap后台守护程序。
openldap-clients 用于启动服务和设置. 包含单独的ldap后台守护程序。
openldap-devel devel包,可选择进行安装。
openldap-servers-sql 支持sql模块,可进行选择性安装。
migrationtools 通过migrationtools实现OpenLDAP用户及用户组的添加,导入系统账户,可进行选择性安装。
compat-openldap openldap兼容性库

3.查看安装版本

slapd -VV

二、整合kerberos

1.如果整合kerberos,需要导入kerberos.schema,否则忽略该步骤。
使用yum安装的openldap服务,配置文件目录存放在/etc/openldap/中,schema文件则存放在/etc/openldap/schema目录中,如果整合kerberos的话需要从kerberos官网中下载kerberos源码,在kerberos源码包中存在kerberos.schema配置文件,因此我们根据需要安装的kerberos版本,下载相应的kerberos源码,将kerberos源码包中的/src/plugins/kdb/ldap/libkdb_ldap/kerberos.schema文件拷贝到/etc/openldap/schema文件夹下。执行如下指令进行导入kerberos.shcema。

#官方下载地址:http://web.mit.edu/kerberos/dist/index.html#krb5-1.15
wget http://web.mit.edu/kerberos/dist/krb5/1.15/krb5-1.15.1.tar.gz
tar -xvzf krb5-1.15.1.tar.gz
cd krb5-1.15.1/src/plugins/kdb/ldap/libkdb_ldap/
cp kerberos.schema /etc/openldap/schema

三、配置openldap实现mirror mode模式

1.配置openldap实现mirror mode模式

cd /etc/openldap
vim slapd.conf

在/etc/openldap目录下编辑添加slapd.conf配置文件,添加如下内容:

###################################导入schema#################################
#导入核心的schema
include /etc/openldap/schema/core.schema
#如果要整合kerberos,则需要导入kerberos.schema,否则不需要该schema
include /etc/openldap/schema/kerberos.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema
###################################导入schema#################################

#接受LDAP2绑定请求
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
#日志级别设置
loglevel 296

###################################模块设置#################################
#指定模块的路径,modulepath可以配置多个
modulepath /usr/lib64/openldap
moduleload syncprov.la
###################################模块设置#################################

###################################开启sasl设置,默认关闭#################################
#TLSCACertificatePath /etc/openldap/certs
#TLSCertificateFile "\"OpenLDAP Server\""
#TLSCertificateKeyFile /etc/openldap/certs/password
###################################开启sasl设置,默认关闭#################################

###################################进行全局设置#################################
#设置serverID,采用mirror mode模式进行部署,需保证两台服务的serverID不同,一台为1、一台为2,必须使用hostname进行配置,否则无法启动成功
serverID 1 ldap://kylin-203-122
serverID 2 ldap://kylin-203-130
###################################进行全局设置#################################

###################################数据库权限控制#################################
#数据库通用权限配置,会配置到olcDatabase={-1}frontend.ldif该文件中,访问所有数据库的通用权限
access to * 
        by anonymous auth 
        by self write 
        by users read
#config数据库配置
database config
#数据库管理员账户
rootdn "cn=config"
#数据库管理员密码,使用slappasswd -s 1234命令生成,默认使用SSHA的方式进行编码,可以通过-h进行指定编码方式 slappasswd -h{md5} -s 1234
rootpw {SSHA}XsyE/ccv4RzqpSikFLfka7NPu3iv6RXe
#权限设置
access to * 
        by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage 
        by * break
#进行配置同步备份
syncrepl rid=001
              provider=ldap://kylin-203-122
              bindmethod=simple
              binddn="cn=config"
              credentials=1234
              searchbase="cn=config"
              schemachecking=on
              type=refreshAndPersist
              retry="60 +"

syncrepl rid=002
              provider=ldap://kylin-203-130
              bindmethod=simple
              binddn="cn=config"
              credentials=1234
              searchbase="cn=config"
              schemachecking=on
              type=refreshAndPersist
              retry="60 +"
#设置同步模块
overlay syncprov
#开启mirrormode设置
mirrormode on

#监控数据库配置,设置访问监控数据库的权限,开启该模块会对访问openldap服务的相关信息进行监控
database monitor
#设置访问monitor数据库的用户权限
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.base="cn=admin,dc=bigdata,dc=ly" read
        by * none
###################################数据库权限控制#################################

###################################数据库配置#################################
#设置数据库类型为lmdb,官方推荐
database mdb
#进行权限设置
access to attrs=userPassword,shadowLastChange   
        by self write    
        by anonymous auth    
        by * none
#数据库匹配的前缀
suffix "dc=bigdata,dc=ly"
checkpoint 1024 15
#数据库管理员账户
rootdn "cn=admin,dc=bigdata,dc=ly"
#数据库管理员密码,使用slappasswd -s 1234命令生成
rootpw {SSHA}XsyE/ccv4RzqpSikFLfka7NPu3iv6RXe
#数据库存储数据路径
directory /var/lib/mdb
#数据库存储最大值
maxsize 1048576
#数据库索引设置,索引objectclass、cn、uid
index objectclass,entryCSN,entryUUID eq
#数据库索引设置,索引linux账户
index uid,uidNumber,gidNumber eq,pres
#数据库索引设置,索引kerberos账户,未配置kerberos可省略
index ou,krbPrincipalName eq,pres,sub
#设置同步模块
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

#mirror mode相关设置
#rid:保证每台服务器的rid是一样的
#provider:指向另外一台服务的ldap地址
#bindmethod:制定简单的鉴权模式,表示未开启sasl或者ssl模式
#binddn:设置进行同步的账户,默认等同于数据库账户
#credentials:设置同步账户的密码,默认等同于数据库账户
#searchbase:设置同步的根路径
#schemachecking:采用refreshAndPersist
#retry:重试次数,如果同步失败,每隔60s同步一次
syncrepl rid=101
              provider=ldap://kylin-203-122
              bindmethod=simple
              binddn="cn=admin,dc=bigdata,dc=ly"
              credentials=1234
              searchbase="dc=bigdata,dc=ly"
              schemachecking=on
              type=refreshAndPersist
              retry="60 +"

syncrepl rid=102
              provider=ldap://kylin-203-130
              bindmethod=simple
              binddn="cn=admin,dc=bigdata,dc=ly"
              credentials=1234
              searchbase="dc=bigdata,dc=ly"
              schemachecking=on
              type=refreshAndPersist
              retry="60 +"
#开启mirror mode模式
mirrormode on
###################################数据库配置#################################

将配置文件同步到openldap的两台服务器上,保持配置一致。

2.初始化并启动openldap服务
在两台服务器上均执行如下指令,进行启动服务。如果启动失败可修改slapd.conf配置文件,重复执行如下命令,重新初始化openldap服务

#如果/var/lib/mdb目录下已经存在文件需要进行删除,该目录存放的是mdb数据的数据文件
rm -rf /var/lib/mdb/*
#删除已经存在的配置
rm -rf /etc/openldap/slapd.d/*
#将配置覆盖到slapd.d目录下
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap:ldap slapd.d
#设置开机启动
systemctl enable slapd
#启动slapd
systemctl restart slapd

3.初始化根目录
openldap的根目录需要我们事先进行初始化才可用,我们使用ldapadd的命令方式向openldap服务添加根目录,具体操作如下:
编辑文件base.ldif,添加如下内容:

dn: dc=bigdata,dc=ly
objectclass: dcObject
objectclass: organization
o: 部门名称
dc: bigdata

执行如下命令,添加根目录:

#-x表示进行简单认证,-D用来绑定服务器的DN,-w绑定DN的密码,-f使用ldif文件进行条目添加的文件
ldapadd -x -D "cn=admin,dc=bigdata,dc=ly" -w 1234 -f base.ldif 

执行成功以后,会将根目录数据同步到两台openldap服务器上,这样就是实现mirror mode的高可用模式,可执行如下命令进行验证是否插入成功:

#-b指定要查询的根节点
ldapsearch -x -b "dc=bigdata,dc=ly" -D "cn=admin,dc=bigdata,dc=ly" -w 1234

如果出现如下内容,则表示配置成功:

[root@kylin-203-130 openldap]# ldapsearch -x -b "ou=dc,ou=tc" -D "cn=admin,ou=dc,ou=tc" -w 1234
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# dc, tc
dn: ou=dc,ou=tc
objectClass: top
objectClass: organizationalUnit
ou: dc
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1

四、开启openldap日志访问功能

1.查看openldap配置是否开启日志记录功能

less /etc/openldap/slapd.d/cn\=config.ldif
#如果存在olcLogLevel:配置项的话,则开启日志功能
olcLogLevel: Stats

如果未开启日志配置,执行如下指令,开启日志设置:

cd /etc/openldap
vi log_config.ldif

编辑log_config.ldif文件,添加如下内容,保存退出,使用ldapmodify进行动态修改openldap服务配置:

dn: cn=config
changetype: modify
add: olcLogLevel
#stats为打印日志的级别,可根据不同的级别设置不同的值
olcLogLevel: stats

在openldap4.X版本以后,推荐使用ldapmodify指令修改openldap的配置,而无须重启openldap服务,因此执行如下指令将需要修改的配置内容同步到cn=config.ldif配置文件中去。

ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f log_config.ldif

openldap日志级别一览表:
一、最全的openldap安装部署_第1张图片

2.配置rsyslog
修改/etc/rsyslog.conf配置文件,添加如下内容:

cat >> /etc/rsyslog.conf << “EOF”
local4.* /var/log/slapd.log
EOF

然后重启应用:

systemctl restart rsyslog

然后再目录/var/log/slapd.log目录下就可以看到slapd产生的日志了。

五、配置nginx实现负载均衡

安装nginx,并配置nginx,由于ldap使用的是tcp协议,因此修改/etc/ngingx/nginx.conf配置文件,添加如下内容,重新启动nginx

stream{
        upstream ldap{
                server 10.100.203.130:389 weight=1;
                server 10.100.203.122:389 weight=1;
        }
        
        server{
                listen 18888;
                proxy_pass ldap;
        }
}

执行如下命令,查看配置nginx配置是否成功

#-H指定ldap服务器的地址
ldapsearch -x -b "dc=bigdata,dc=ly" -D "cn=admin,dc=bigdata,dc=ly" -w 1234 -H ldap://10.100.203.117:18888

如果执行成功,停止任何一台slapd服务均能够正确查询到结果,则表示nginx已经配置成功。

六、安装phpldapadmin

我们可以安装phpldapadmin web平台来管理我们的openldap服务,这样就可以在web页面进行openldap服务的数据增删改查,方便运维
1.安装apache和php

yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml

2.安装phpldapadmin

yum -y install epel-release
yum --enablerepo=epel -y install phpldapadmin

3.配置phpldapadmin,修改登入规则和监听端口

vim /etc/phpldapadmin/config.php
#397行取消注释,398行添加注释,设置通过dn整个条目来登入phpldapadmin而不是通过用户的uid来登入。
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');
#如果ldap服务安装和phpldapadmin服务安装不在同一个服务器上,则修改298和301行,修改phpldapadmin监听的ip和端口,并取消注释,如果ldap服务和phpldapadmin服务在同一台服务器上,且ldap的端口为389,则可不修改。
/* Examples:
   'ldap.example.com',
   'ldaps://ldap.example.com/',
   'ldapi://%2fusr%local%2fvar%2frun%2fldapi'
           (Unix socket at /usr/local/var/run/ldap) */
$servers->setValue('server','host','10.100.203.117');
/* The port your LDAP server listens on (no quotes). 389 is standard. */
$servers->setValue('server','port',18888);

4.配置phpldapadmin,添加访问的ip段,允许远程客户端访问。

vim /etc/httpd/conf.d/phpldapadmin.conf
// 修改配置

# Apache 2.4
Require local
#添加一行内容,指定可访问的ip段(否则没有权限进行访问),表示10段的ip都能够访问
Require ip 10

5.启动phpldapadmin

systemctl enable httpd
systemctl start httpd

6.访问网址

http://ip/phpldapadmin/

使用数据库管理账户登入phpldapadmin,如果登入成功,则表示配置成功。
用户名:cn=admin,dc=bigdata,dc=ly
密码:1234
一、最全的openldap安装部署_第2张图片

你可能感兴趣的:(openldap)