1. OpenLDAP简介
OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。
2. OpenLDAP部署(主从为例)
环境准备:
系统版本:centos6.6 4.1.5-1.el7.centos.x86_64 主服务器:192.168.76.hehe(读写) 从服务器:192.168.86.haha(只读) 域名:auth.chegva.com
配置信息:
web管理端:http://192.168.76.hehe/ldapadmin/ 登陆DN:cn=admin,dc=chegva,dc=com 软件版本: compat-openldap-2.3.43-2.el6.x86_64 openldap-2.4.40-16.el6.x86_64 openldap-devel-2.4.40-16.el6.x86_64 openldap-servers-2.4.40-16.el6.x86_64 openldap-clients-2.4.40-16.el6.x86_64 数据目录:/var/lib/ldap 配置文件:/etc/openldap/slapd.conf 启动方式:service slapd start && service httpd start
安装操作:Openldap一键安装脚本 | Openldap服务tls/ssl证书配置
安装依赖包:yum install -y *ltdl* wget make gcc unixODBC-devel groff mysql-connector-odbc 查看目录信息:ldapsearch -H ldap://192.168.76.hehe:389 -x -b "dc=chegva.com,dc=com" objectclass='*' -v 添加用户:ldapadd -x -D "cn=admin,dc=chegva,dc=com" -W -f user.ldif 删除用户:ldapdelete -x -D "cn=admin,dc=chegva,dc=com" -W -f deluser.ldif 增删改查都可以在web端操作,在服务器上操作需创建ldif文件执行命令操作 如deluser.ldif dn: cn=anzhihe,ou=fbi,dc=chegva,dc=com changetype: delete 如添加部门:base.ldif dn: ou=fbi,dc=chegva,dc=com ou: fbi objectClass: top objectClass: organizationalUnit
openldap安装完成后相关目录承载的功能如下:
目录 | 功能 |
---|---|
bin | 客户端工具如ldapadd、ldapsearch |
etc | 包含主配置文件slapd.conf、schema、DB_CONFIG等 |
include | ldap的头文件 |
lib | ldap的库文件 |
libexec | 服务端启动工具slapd |
sbin | 服务端工具如slappasswd |
share | 共享文件存储路径 |
var | bdb数据、log存放目录 |
使用slappasswd
设置加密后的管理员密码
slappasswd -s 管理员密码
3. OpenLDAP配置文件(供参考)
#cat slapd.conf #引用模块 include /etc/openldap/schema/corba.schema include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/duaconf.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 allow bind_v2 pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args loglevel 296 modulepath /usr/lib/openldap modulepath /usr/lib64/openldap moduleload ppolicy.la moduleload syncprov.la
#访问权限配置 access to * by self write by dn.base="cn=admin,dc=chegva,dc=com" read by users read by anonymous auth database config access to * by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none database monitor access to * by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.exact="cn=admin,dc=chegva,dc=com" read by * none #数据库及密码设置 database bdb cachesize 1000 suffix "dc=chegva,dc=com" checkpoint 1024 15 rootdn "cn=admin,dc=chegva,dc=com" rootpw {SSHA}chegva.com directory /var/lib/ldap index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub #主从配置 index entryCSN,entryUUID eq syncrepl rid=001 provider=ldap://192.168.76.xx:389 type=refreshOnly retry="5 5 300 +" bindmethod=simple interval=00:00:00:10 scope=sub schemachecking=off binddn="cn=admin,dc=chegva,dc=com" credentials=xxx searchbase="dc=chegva,dc=com" attrs="*,+" overlay ppolicy ppolicy_hash_cleartext
Syncrepl:slave服务器从master上拉取数据,缺点是拉取的最小粒度是单条记录
Delta-syncrepl:与上一条相似,但拉取的最小粒度是属性N-Way
Multi-Master:多主,支持2个及以上的master
MirrorMode:双主镜像,不支持3个及以上的master,但可以有slave
Syncrepl Proxy:代理模式
4. OpenLDAP备份迁移
备份:
1.可以在web端导出ldif文件然后部署后导入即可
2.调用api
迁移:
先使用脚本一键部署,然后将旧服务器上 /etc/openldap 和 /var/lib/ldap 目录copy到新服务器替换,chown -R ldap.ldap两个目录,然后启动服务导入备份数据
FAQ:
2. yum 安装的只支持主从模式,就别配主主模式了
3. openldap做高可用,前端若用nginx需编译安装第三方包才能支持ldap协议,lvs可以直接使用
4. 用脚本调openldap接口修改数据必须配置证书使用ldaps才可以
参考: