openldap部署,同步群辉LDAP的数据

环境信息

系统: Centos7.6

部署openLDAP

  1. 安装openLDAP
    yum -y install openldap openldap-servers openldap-clients compat-openldap

  2. 复制配置文件模板
    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    chown -R ldap:ldap /var/lib/ldap/DB_CONFIG

  3. 启动服务
    systemctl start slapd
    systemctl enable slapd
    检查端口是否起来: netstat -nltp | grep 389

  4. 使用 slappasswd 生成管理员admin的密码

## 输入以下命令,回车,输入密码,再次输入密码,记下显示的加密的密码
slappasswd 
  1. 编写ldif,将管理员密码导入到LDAP的配置文件中
vim chrootpw.ldif 
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxx ## 上一步生成的密码

## wq 保存后,使用一下命令导入
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif 
## 以下则为导入成功
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
  1. 导入基本的scheme
    /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性,默认仅有core.ldif被导入
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
  1. 配置 LDAP 的根域(以 dc=test,dc=cn为例)及其管理域
vim  domain.ldif
## 替换以下的dc=test,dc=cn 为自己的域名
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
 read by dn.base="cn=Manager,dc=test,dc=cn" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=test,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=test,dc=cn

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
##密码
olcRootPW: {SSHA}ZUh7UnAdD+CXC5CZ8XJohrScCUaLmv9N  

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
 dn="cn=Manager,dc=test,dc=cn" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=test,dc=cn" write by * read

导入: ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif

  1. 测试
    创建一个叫做 test 的组织,并在其下创建一个 Manager 的组织角色(该角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元;
vim group.ldif 
##写入以下内容
dn: dc=test,dc=cn
objectClass: top
objectClass: dcObject
objectClass: organization
o: test
dc: abc

dn: cn=Manager,dc=test,dc=cn
objectClass: organizationalRole
cn: Manager

dn: ou=People,dc=test,dc=cn
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=test,dc=cn
objectClass: organizationalUnit
cn: Group

##导入
#输入上面设置的管理员密码(明文)
ldapadd -x -D cn=Manager,dc=test,dc=cn -W -f group.ldif  
##添加测试用户
vim user.ldif
#写入以下内容
dn: uid=test,ou=People,dc=test,dc=cn
cn: test
mail: test@test.cn
objectclass: inetOrgPerson
objectclass: top
sn: test
userpassword: qwer@1234
#添加
ldapadd -x -D "cn=Manager,dc=test,dc=cn" -W -f user.ldif
#查询
ldapsearch -x -b "dc=test,dc=cn" -H ldap://127.0.0.1 |grep "test"
#删除
ldapdelete -x -W -D 'cn=Manager,dc=test,dc=cn' "uid=test,ou=People,dc=test,dc=cn"

开启slapd日志功能

mkdir /var/log/slapd
touch /var/log/slapd/slapd.log
chown -R ldap:ldap /var/log/slapd/
#编写日志配置
vim log.ldif
#内容如下
dn: cn=config
changetype: modify
add: olcLogLevel
olcLogLevel: stats
#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f log.ldif
#更改配置
sed -i "/^local7/ a local4.* /var/log/slapd/slapd.log" /etc/rsyslog.conf
#重启服务
systemctl restart rsyslog


同步群辉LDAP的数据

添加schema

群辉的部分配置文件: /volume{n}/@appstore/DirectoryServer/etc/conf
scheme位置: /usr/syno/etc.defaults/openldap/schema/
将 所有的文件复制到新的LDAP服务器上导入

PREFIX="docker exec -it ldap "
DIR="/data/schema"
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/corba.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/core.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/cosine.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/dyngroup.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/inetorgperson.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/java.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/misc.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/nis.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/openldap.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/ppolicy.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/samba.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/apple_auxillary.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/apple.ldif
$PREFIX ldapadd -Y EXTERNAL -H ldapi:/// -f $DIR/syno.ldif

编写rp.ldif

vim rp.ldif
# 请注意修改下面内容中的 provider,binddn,credentials,searchbase几个值为群辉的LDAP服务的实际值,可以在群辉的LDAP Server上查看
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=
  bindmethod=simple
  binddn=""
  credentials=
  searchbase=""
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00

#修改保存后导入
ldapadd -Y EXTERNAL -H ldapi:/// -f rp.ldif

##查询
ldapsearch -x -b "dc=test,dc=cn" -H ldap:///

同步问题处理

实践下来,仅能同步组织结构,但是没有同步用户,组织等数据

  • 解决ou=pwpolicies下节点未同步的问题,使用 ldapadd -Y EXTERNAL -H ldapi:/// -f 添加如下文件
    报错信息: LDAP: error code 21 - pwdAttribute: value #0 invalid per syntax
dn: olcOverlay=ppolicy,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: ppolicy

如果导入报错: additional info: handler exited with 1,
检查 {data_dir}/slapd.d/cn=config/cn=module{0}.ldif 是否加载了ppolicy模块,如果没有,则手动添加上去,如下

dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_mdb
olcModuleLoad: {1}memberof
olcModuleLoad: {2}refint
olcModuleLoad: {3}syncprov
olcModuleLoad: {4}ppolicy    ## 这一行检查
  • users同步报错: mods check (objectClass: value #3 invalid per syntax)

卸载时候重新启动报错

  • main: TLS init def ctx failed: -1
    mkdir -p /etc/openldap/certs
    bash /usr/libexec/openldap/create-certdb.sh
    bash /usr/libexec/openldap/generate-server-cert.sh 
    

参考文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值