このガイドでは、 CentOS 7 / RHEL 7でOpenLDAPサーバーのマルチマスターレプリケーションを構成します。 。このマルチマスターレプリケーションの設定は、マスターサーバーのみがLDAPディレクトリで変更を行う一般的なマスタースレーブレプリケーションの制限を克服するためのものです。 。
読む:OpenLDAPマスタースレーブレプリケーションを設定する方法
マルチマスターレプリケーションでは、2つ以上のサーバーがマスターとして機能し、これらすべてがLDAPディレクトリの変更に対して権限を持ちます。クライアントからのクエリは、レプリケーションを利用して複数のサーバーに分散されます。
環境
マルチマスターレプリケーションでは、3つの OpenLDAPを使用します サーバー。詳細は以下の通りです。
ldpsrv1.itzgeek.local (192.168.12.10) ldpsrv2.itzgeek.local (192.168.12.20) ldpsrv3.itzgeek.local (192.168.12.30)
LDAPのインストール
すべてのサーバーにLDAPパッケージをインストールします。yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
LDAPサービスを開始し、システム起動時に自動開始できるようにします。
systemctl start slapd.service systemctl enable slapd.service
LDAPロギングの構成
LDAPロギングを有効にするようにsyslogを構成します。
echo "local4.* /var/log/ldap.log" >> /etc/rsyslog.conf systemctl restart rsyslog
OpenLDAPマルチマスターレプリケーションの設定
サンプルデータベース構成ファイルを/var / lib / ldapにコピーします ディレクトリを作成し、ファイルのアクセス許可を更新します。 特に明記されていない限り、すべてのOpenLDAPサーバーで以下の手順を実行する必要があります。
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap /var/lib/ldap/*
syncprovモジュールを有効にします。
vi syncprov_mod.ldif
以下の行をコピーして上記のsyncprov_mod.ldifに貼り付けます ファイル。
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: syncprov.la
次に、構成をLDAPサーバーに送信します。
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
出力:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=module,cn=config"
構成レプリケーションを有効にする
すべてのサーバーでolcServerIDを変更します 。たとえば、ldpsrv1の場合はolcServerIDを1に設定し、ldpsrv2の場合はolcServerIDを2に設定し、ldpsrv3の場合は3に設定します。
vi olcserverid.ldif
以下のテキストをコピーして上記のファイルに貼り付けます。
dn: cn=config changetype: modify add: olcServerID olcServerID: 1
LDAPサーバーの構成を更新します。
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcserverid.ldif
出力:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
LDAP構成レプリケーションのパスワードを生成する必要があります。
slappasswd
出力:
New password: Re-enter new password: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
slappasswdコマンドを実行して、各サーバーでパスワードを生成する必要があります。
構成データベースのパスワードを設定します。
vi olcdatabase.ldif
以下のテキストをコピーして上記のファイルに貼り付けます。 前の手順で生成したパスワードをこのファイルに入力する必要があります。
dn: olcDatabase={0}config,cn=config add: olcRootPW olcRootPW: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
LDAPサーバーの構成を更新します。
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabase.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"
次に、すべてのサーバーで構成レプリケーションをセットアップします。
vi configrep.ldif
以下のテキストをコピーして上記のファイルに貼り付けます。
### Update Server ID with LDAP URL ### dn: cn=config changetype: modify replace: olcServerID olcServerID: 1 ldap://ldpsrv1.itzgeek.local olcServerID: 2 ldap://ldpsrv2.itzgeek.local olcServerID: 3 ldap://ldpsrv3.itzgeek.local ### Enable Config Replication### dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov ### Adding config details for confDB replication ### dn: olcDatabase={0}config,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 olcSyncRepl: rid=002 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 olcSyncRepl: rid=003 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 - add: olcMirrorMode olcMirrorMode: TRUE
次に、構成をLDAPサーバーに送信します。
ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif
出力:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" adding new entry "olcOverlay=syncprov,olcDatabase={0}config,cn=config" modifying entry "olcDatabase={0}config,cn=config"
データベースレプリケーションを有効にする
この時点で、すべてのLDAP構成が複製されます。次に、実際のデータ、つまりユーザーデータベースのレプリケーションを有効にします。 他のノードはレプリケーション中であるため、いずれかのノードで以下の手順を実行します。
hdbデータベースに対してsyncprovを有効にする必要があります。
vi syncprov.ldif
以下のテキストをコピーして上記のファイルに貼り付けます。
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov
LDAPサーバーの構成を更新します。
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
出力:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
hdbデータベースのレプリケーションを設定します。
vi olcdatabasehdb.ldif
以下の内容をコピーして上記のファイルに貼り付けます。 olcSuffix、olcRootDN、およびolcRootPWがすでに構成に含まれている場合、これらのエラーが発生する可能性があります。必要がなければ、エントリを削除します。
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=itzgeek,dc=local - replace: olcRootDN olcRootDN: cn=ldapadm,dc=itzgeek,dc=local - replace: olcRootPW olcRootPW: {SSHA}xtbbtC/1pJclCPzo1n3Szac9jqavSphk - add: olcSyncRepl olcSyncRepl: rid=004 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 olcSyncRepl: rid=005 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 olcSyncRepl: rid=006 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 - add: olcDbIndex olcDbIndex: entryUUID eq - add: olcDbIndex olcDbIndex: entryCSN eq - add: olcMirrorMode olcMirrorMode: TRUE
ファイルを更新したら、構成をLDAPサーバーに送信します。
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabasehdb.ldif
出力:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={2}hdb,cn=config"
olcDatabase ={1} monitor.ldifに変更を加えます LDAPルート( ldapadm )のみにモニターアクセスを制限するファイル )他のユーザーではなく、ユーザー。
# vi monitor.ldif 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=ldapadm,dc=itzgeek,dc=local" read by * none
ファイルを更新したら、構成をLDAPサーバーに送信します。
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
LDAPスキーマを追加します。
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
base.ldifを生成します ドメインのファイル。
# vi base.ldiff dn: dc=itzgeek,dc=local dc: itzgeek objectClass: top objectClass: domain dn: cn=ldapadm ,dc=itzgeek,dc=local objectClass: organizationalRole cn: ldapadm description: LDAP Manager dn: ou=People,dc=itzgeek,dc=local objectClass: organizationalUnit ou: People dn: ou=Group,dc=itzgeek,dc=local objectClass: organizationalUnit ou: Group
ディレクトリ構造を構築します。
ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f base.ldif
出力:
Enter LDAP Password: adding new entry "dc=itzgeek,dc=local" adding new entry "cn=ldapadm ,dc=itzgeek,dc=local" adding new entry "ou=People,dc=itzgeek,dc=local" adding new entry "ou=Group,dc=itzgeek,dc=local"
LDAPレプリケーションをテストする
「ldaptest」というユーザーLDAPを作成しましょう 「マスターサーバーのいずれかで、それを行うには、 .ldifを作成します ldpsrv1.itzgeek.localのファイル (私の場合)。
[root@ldpsrv1 ~]# vi ldaptest.ldif
上記のファイルを以下の内容で更新してください。
dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldaptest uid: ldaptest uidNumber: 9988 gidNumber: 100 homeDirectory: /home/ldaptest loginShell: /bin/bash gecos: LDAP Replication Test User userPassword: {crypt}x shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7
ldapaddを使用してLDAPサーバーにユーザーを追加します コマンド。
[root@ldpsrv1 ~]# ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f ldaptest.ldif
出力:
Enter LDAP Password: adding new entry "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
「ldaptest」を検索します 」を別のマスターサーバー( ldpsrv2.itzgeek.local 。
[root@ldpsrv2 ~]# ldapsearch -x cn=ldaptest -b dc=itzgeek,dc=local
出力:
# extended LDIF # # LDAPv3 # base <dc=itzgeek,dc=local> with scope subtree # filter: cn=ldaptest # requesting: ALL # # ldaptest, People, itzgeek.local dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldaptest uid: ldaptest uidNumber: 9988 gidNumber: 100 homeDirectory: /home/ldaptest loginShell: /bin/bash gecos: LDAP Replication Test User userPassword:: e2NyeXB0fXg= shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
次に、 ldpsrv1.itzgeek.localで作成したユーザーのパスワードを設定します ldpsrv2.itzgeek.localにアクセスします 。パスワードを設定できる場合は、レプリケーションが期待どおりに機能していることを意味します。
[root@ldpsrv2 ~]# ldappasswd -s password123 -W -D "cn=ldapadm,dc=itzgeek,dc=local" -x "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
どこで、
-s ユーザー名のパスワードを指定してください
-x パスワードが変更されたユーザー名
-D LDAPサーバーに対して認証するための識別名。
マスタースレーブレプリケーショントポロジでは、スレーブサーバーでLDAPユーザーのパスワードを設定することはできません。追加
新しいマスターサーバーにもバインドするようにLDAPクライアントを構成します。
authconfig --enableldap --enableldapauth --ldapserver=ldpsrv1.itzgeek.local,ldpsrv2.itzgeek.local,ldpsrv3.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --update
以上です。