云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 8服务器上配置OpenLDAP Replication(OpenLDAP复制)

在CentOS 8服务器上配置OpenLDAP Replication(OpenLDAP复制)

2021-05-09 10:37:58作者:彭即元稿源:云网牛站

在本文中,我们将介绍如何在CentOS 8服务器上设置OpenLDAP Provider-Consumer replication(以前称为Master-Slave replication)。在这种设置中,OpenLDAP Consumer/Secondary Server从提供者/主服务器复制目录更改和更新。

在CentOS 8服务器上配置OpenLDAP Replication(OpenLDAP复制)

 

在CentOS 8上配置OpenLDAP Replication(OpenLDAP复制)

我们将需要两台CentOS 8服务器,其中一台将是主要/提供者,另一台将是具有以下主机名的次要/消费者服务器:

LDAP Provider – ldapmaster.computingforgeeks.com

LDAP Consumer – consumer.computingforgeeks.com

将静态主机名添加到每台服务器,以确保它们可解析:

$ sudo vim /etc/hosts

172.20.5.209 ldapmaster.computingforgeeks.com

172.20.5.210 consumer.computingforgeeks.com

下一步是在两台主机上安装和配置基本的OpenLDAP服务器,参考在Debian 10上安装和配置OpenLDAP服务器,包括LDAP帐户管理器

1、NTP同步

在提供者服务器与使用者服务器之间进行时间同步非常重要,以下以RHEL/CentOS 8为例使用Chrony进行时间同步。

设置时区:

sudo timedatectl set-timezone Asia/Shanghai

注:请自行修改所在的地区,如修改成sudo timedatectl set-timezone Africa/Nairobi。

安装Chrony NTP服务器软件包:

sudo yum -y install chrony

通过在/etc/chrony.conf文件中添加相关的NTP服务器来配置NTP同步:

$ sudo vi /etc/chrony.conf

server 0.africa.pool.ntp.org iburst

server 1.africa.pool.ntp.org iburst

server 2.africa.pool.ntp.org iburst

server 3.africa.pool.ntp.org iburst

您还可以使用自定义NTP服务器,参考在RHEL 8系统上使用Chrony配置NTP服务器

2、复制配置文件

将数据和配置文件从主服务器复制到辅助服务器。

在主服务器上运行以下命令以创建OpenLDAP数据库的副本:

slapcat -b cn=config -l openldap-config.ldif

或者:

slapcat -n 0 -l openldap-config.ldif

创建OpenLDAP数据的备份:

slapcat -n 1 -l openldap-data.ldif

或者:

slapcat -l openldap-data.ldif

将配置文件复制到使用者服务器:

scp {openldap-data.ldif, openldap-config.ldif} root@consumer.computingforgeeks.com:/opt

将SSL证书从主服务器复制到使用者:

scp /etc/pki/tls/ldapserver.{crt,key} root@consumer.computingforgeeks.com:/etc/pki/tls

3、在使用者服务器上还原配置文件

将LDAP数据库和数据复制到使用者后,就可以恢复它们了,确保LDAP配置目录为空:

sudo rm -rf /etc/openldap/slapd.d/*

sudo rm -rf /var/lib/openldap/*

还原LDAP数据库:

cd /opt && sudo slapadd -b cn=config -l openldap-config.ldif -F /etc/openldap/slapd.d/

#or 

cd /opt && sudo slapadd -n 0 -l openldap-config.ldif -F /etc/openldap/slapd.d/

恢复OpenLDAP数据:

cd /opt && sudo slapadd -n 1 -l openldap-data.ldif -F /etc/openldap/slapd.d/

设置对配置文件的正确文件所有权:

sudo chown -R ldap:ldap /etc/openldap/slapd.d/ /var/lib/openldap/

sudo chown ldap:ldap /etc/pki/tls/ldapserver.{crt,key}

4、创建LDAP服务

为OpenLDAP创建Systemd服务:

$ sudo vim /etc/systemd/system/slapd.service

[Unit]

Description=OpenLDAP Server Daemon

After=syslog.target network-online.target

Documentation=man:slapd

Documentation=man:slapd-mdb

[Service]

Type=forking

PIDFile=/var/lib/openldap/slapd.pid

Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///"

Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d"

ExecStart=/usr/libexec/slapd -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS

[Install]

WantedBy=multi-user.target

重新启动守护程序:

sudo systemctl daemon-reload

启动并启用服务:

sudo systemctl enable --now slapd

5、允许通过防火墙的OpenLDAP服务

我们需要允许通过防火墙连接到LDAP服务以进行客户端查询:

sudo firewall-cmd --add-service={ldap,ldaps} --permanent

sudo firewall-cmd --reload

6、在提供者/主服务器上配置LDAP复制

我们需要使我们的主服务器知道复制。因此,我们需要通过启用Syncprov覆盖模块在主服务器上启用LDAP内容同步(syncrepl replication):

$ vim enable-syncprov.ldif

dn: cn=module{0},cn=config

changetype: modify

add: olcModuleLoad

olcModuleLoad: syncprov.la

确认模块可用:

sudo slapcat -n 0 | grep -i modulepath

所需的输出:

olcModulePath: /usr/libexec/openldap

更新OpenLDAP数据库:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f enable-syncprov.ldif

如下配置syncprov复制设置:

$ vim syncprov-options.ldif

dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config

changetype: add

objectClass: olcOverlayConfig

objectClass: olcSyncProvConfig

olcOverlay: syncprov

olcSpNoPresent: TRUE

olcSpCheckpoint: 100 10

olcSpSessionlog: 100

将更改应用于数据库:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov-options.ldif

7、启用数据库索引

启用entryUID和entryCSN索引可提高数据库性能和扫描速度:

$ vim indexing.ldif

dn: olcDatabase={1}mdb,cn=config

changetype: modify

add: olcDbIndex

olcDbIndex: entryCSN eq

-

add: olcDbIndex

olcDbIndex: entryUUID eq

应用配置:

ldapadd -Y EXTERNAL -H ldapi:/// -f indexing.ldif

8、在使用者上配置OpenLDAP复制

然后,我们需要配置使用者服务器,以通过启用olcSyncrepl并使用正确的配置对其进行设置,以从提供程序服务器获取更新:

$ vim enable-syncrepl.ldif

这里是内容:

dn: olcDatabase={1}mdb,cn=config

changetype: modify

add: olcSyncrepl

olcSyncrepl: 

  rid=001 

  provider=ldap://ldapmaster.computingforgeeks.com

  binddn="cn=readonly,ou=system,dc=ldapmaster,dc=computingforgeeks,dc=com" 

  bindmethod=simple

  credentials="Y0urP@ssW0rd" 

  searchbase="dc=ldapmaster,dc=computingforgeeks,dc=com" 

  type=refreshAndPersist 

  timeout=0 

  network-timeout=0 

  retry="60 +"

将Provider,binddn,binddn凭据和searchbase替换为您的详细信息。请注意,binddn credentials是从配置OpenLDAP服务器中创建用户时得来的。

更新数据库:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f enable-syncrepl.ldif

重新启动LDAP服务以应用以下更改:

sudo systemctl restart slapd

9、测试OpenLDAP Replication

Replication设置就绪后,我们可以通过在Provider上添加新用户来测试配置是否确实有效,并查看用户详细信息是否将在使用者服务器上更新:

vim test-user.ldif

在配置上进行以下修改

dn: uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com

cn: usertest

gidnumber: 10050

homedirectory: /home/usertest

loginshell: /bin/bash

objectclass: inetOrgPerson

objectclass: posixAccount

objectclass: shadowAccount

shadowinactive: 7

shadowlastchange: 0

shadowmax: 60

shadowmin: 1

shadowwarning: 7

sn: Doe

uid: usertest

uidnumber: 10050

userpassword: {SSHA}vg5PjAkA2mKNjrxAg5hgrwm06yf87ybfu

dn: cn=usertest,ou=groups,dc=ldapmaster,dc=computingforgeeks,dc=com

cn: usertest

gidnumber: 10050

memberuid: usertest

objectclass: posixGroup

添加条目:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f test-user.ldif

现在检查使用者是否已添加新条目:

sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" dn -Q -LLL

我的输出:

dn: uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com

dn: uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com

我们可以确认用户usertest已复制到使用者服务器上。

我们还可以尝试为用户重置密码,并检查是否可以从使用者服务器进行身份验证。

在主要机子上:

[root@ldapmaster ~]# ldappasswd -x -h ldapmaster.computingforgeeks.com -D "cn=admin,dc=ldapmaster,dc=computingforgeeks,dc=com" -S "uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" -W

使用使用者服务器上的ldapwhoami命令来确定刚刚重置密码的用户的响应:

[root@consumer ~]# ldapwhoami -x -h consumer.computingforgeeks.com -D "uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" -W -vvv

ldap_initialize( ldap://consumer.computingforgeeks.com )

Enter LDAP Password: 

dn:uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com

Result: Success (0)

上面命令的输出应为成功请求返回结果:Success (0),这意味着来自提供者的密码更改更新已复制到使用者服务器上。

因此,这确认了我们的提供者-消费者复制正在按要求工作。

 

相关主题

第23章 使用OpenLDAP部署目录服务

精选文章
热门文章