在本文中,我们将介绍如何在CentOS 8服务器上设置OpenLDAP Provider-Consumer replication(以前称为Master-Slave replication)。在这种设置中,OpenLDAP Consumer/Secondary Server从提供者/主服务器复制目录更改和更新。
在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),这意味着来自提供者的密码更改更新已复制到使用者服务器上。 因此,这确认了我们的提供者-消费者复制正在按要求工作。
相关主题 |