GNU/Linux >> Linux の 問題 >  >> Cent OS

LinuxでOpenLDAPマルチマスターレプリケーションを構成する

このガイドでは、 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

以上です。


Cent OS
  1. Rocky Linux /Centos8にRedis6をインストールして構成する方法

  2. OpenVPNLDAPベースの認証を構成する

  3. Linux OS サービス「ldap」

  1. LinuxでOpenVPNサーバーを構成する

  2. OracleLinuxでMySQLマルチマスターレプリケーションを構成する方法

  3. CentOS 7 /RHEL7でのステップバイステップのOpenLDAPサーバー構成

  1. MySQLソース-レプリカレプリケーションを構成する

  2. MySQLソース-ソースレプリケーションを構成する

  3. CentOS / RHEL Linux に OpenLDAP をインストールして構成する方法