如何配置主从 LDAP 复制

如何配置主从 LDAP 复制

如何在 Ubuntu 上使用会话复制配置主从 LDAP 服务器。

例如,如果 ldap 客户端在主服务器上更改了密码。我希望新密码自动同步到从属服务器

答案1

ldap 中的主从服务器被称为提供者和消费者。您没有指定正在使用的 ldap 服务器,因此我推测我们正在讨论 openLDAP。

在旧版 openLDAP 中,配置保存在 conf 文件中。如今,所有设置都存储在 ldap 服务器本身中。因此,您需要创建配置并将其注入 ldap 服务器,因此我们将从创建这些文件开始。此指令将自动将所有条目复制到您的从属服务器。

假设您的公司名称是 acme,域名是 com。并且您当前的 ldap 服务器管理员位于:cn=a​​dmin,dc=acme,dc=com

第一的我们需要创建一个 ldap 用户,允许其读取所有 ldap 条目并将其复制到消费者服务器。

创建文件“create_repl_user.ldif”

dn: cn=ldaps2,dc=acme,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: ldaps2
description: LDAP server2 replicator

第二我们需要在主 ldap 服务器中启用提供程序服务,并授予用户 ldaps2 对整个 ldap 服务器的读取权限。

创建文件“enable_sync_prov.ldif”

dn: olcDatabase={1}hdb,cn=config
changetype: modify
delete: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by self write
  by anonymous auth
  by dn="cn=admin,dc=acme,dc=com write
  by * none
-
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by self write
  by dn="cn=admin,dc=acme,dc=com" write
  by dn="cn=ldaps2,dc=acme,dc=com" read
  by anonymous auth
  by * none
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: {1}syncprov

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100

第三:我们需要启用从指定服务器到我们的 ldap 消费者的复制。创建文件 enable_sync_consumer.ldif,用你的主 ldap 服务器的 ip 替换行 provider="ldap://yourldapservername.com:389/" 。以及用你为 ldap2s 用户决定的密码替换 credentials=yourencryptedldap2spassword 。

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

dn: olcDatabase={1}hdb,cn=config
changetype: modify
delete: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by self write
  by anonymous auth
  by dn="cn=admin,dc=acme,dc=com" write
  by * none
-
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
  by anonymous auth
  by * none
-
delete: olcAccess
olcAccess: {2}to *
  by self write
  by dn="cn=admin,dc=acme,dc=com" write
  by * read
-
add: olcAccess
olcAccess: {2}to *
  by * read
-
replace: olcRootDN
olcRootDN: cn=manager
-
delete: olcRootPW
-
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: uid eq
-
add: olcDbIndex
olcDbIndex: cn eq
-
add: olcDbIndex
olcDbIndex: ou eq
-
add: olcDbIndex
olcDbIndex: dc eq


add: olcSyncrepl
olcSyncrepl: rid=123
  provider="ldap://yourldapservername.com:389/"
  type=refreshAndPersist
  retry="60 30 300 +"
  searchbase="dc=acme,dc=com"
  bindmethod=simple
  binddn="cn=ldaps2,dc=acme,dc=com"
  credentials=yourencryptedldap2spassword

现在我们已经创建了配置文件,我们需要将它们注入到提供方和消费者服务器

在提供程序服务器中创建复制用户:

run ldapadd -x -W -D cn=admin,dc=acme,dc=com -f  create_repl_user.ldif

启用提供商服务:

run ldapadd -x -W -D cn=admin,dc=acme,dc=com -f  enable_sync_prov.ldif

在消费者服务器中添加消费者同步设置:

run ldapadd -x -W -D cn=admin,dc=acme,dc=com -f enable_sync_consumer.ldif

答案2

很棒的文章,帮助我转发了很多,不过 ldifs 中有几个错误需要注意:enable_sync_prov.ldif

由 dn="cn=admin,dc=acme,dc=ncom 撰写

应该

由 dn="cn=admin,dc=acme,dc=com" 撰写

然后 ldapadd/ldapmodify 应该在树的 cn=admin,cn=config 部分上运行,而不是在 cn=admin,dc=acme,dc=com 上运行。

相关内容