搭建ldap雙主模式

一.安裝OpenLDAP

    yum install openldap openldap-clients openldap-servers
安裝完直接啓動
```
systemctl start  slapd
```
設置管理員密碼 ```

slappasswd -h {SSHA}    
    ```

然後會讓你輸入一個明文密碼,返回給你一個加密的密碼,記住這個返回的密碼

使用ldapsearch命令查詢管理員的dn:

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b  cn=config "olcRootDN=cn=Manager,dc=my-domain,dc=com"  dn olcRootDN olcRootPW

這裏返回的dn是olcDatabase={2}hdb,cn=config,密碼等信息也都一併返回。這裏有用的是dn和密碼的加密方式,比如這裏是SSHA,dn是後面修改的Entry DN,而知道密碼的加密方式就可以使用該加密方式生成新密碼。

使用ldapmodify修改條目

vim chrootpw.ldif 
#這是第1步獲取的管理員dn
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
#你想要改成的域名的後綴
olcSuffix: dc=xinniu,dc=com
#olcSuffix這幾行一定要加,否則修改之後會出錯,後面重啓openldap都會失敗

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
#你想要改成的域名
olcRootDN: cn=admin,dc=xinniu,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
#這裏就是剛纔保存下來的那個加密後的密碼
olcRootPW: {SSHA}uYnICxla0NrUC5b/ha4i1JeOTCoUchV+

如圖:
搭建ldap雙主模式

使用下面的命令來修改管理員條目:

ldapmodify -Y EXTERNAL -H ldapi:/// -f  chrootpw.ldif 

如果出現:

modifying entry "olcDatabase={2}bdb,cn=config"

導入基本數據結構
我們需要向 LDAP 中導入一些基本的 Schema。這些 Schema 文件位於 /etc/openldap/schema/ 目錄中,schema控制着條目擁有哪些對象類和屬性

ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/core.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/ppolicy.ldif

開啓ldap日誌

mkdir -p /var/log/slapd
chown ldap:ldap /var/log/slapd/
touch /var/log/slapd/slapd.log
chown ldap . /var/log/slapd/slapd.log
echo "local4.* /var/log/slapd/slapd.log" >> /etc/rsyslog.conf

到此就設定好了管理員的密碼。可以用客戶端去管理openldap了

打算使用phpldapadmin來管理openldap,這個工具使用的人較多,網上文檔多,出現問題容易解決。

二.安裝phpldapadmin(ldap管理工具)

首先安裝Apache和PHP:

yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml

然後安裝phpldapadmin:

 yum -y install phpldapadmin

httpd與phpldapadmin進行集成:
修改配置文件:

[root@localhost ~]# vim /etc/phpldapadmin/config.php
#397行取消註釋,398行添加註釋
    $servers->setValue('login','attr','dn');
    // $servers->setValue('login','attr','uid');

這裏需要修改,如果不修改,phpldapadmin會去用uid去搜索條目,不會用dn去搜索,導致報密碼錯誤。
[root@localhost ~]# phpldapadmin的ip過濾規則默認是拒絕所有ip訪問,先去修改一下規則,我們纔可以訪問

vim /etc/httpd/conf.d/phpldapadmin.conf

##這是Apache2.2和以前的修改方法
// 修改配置

把下面的Deny from all 改爲Allow from all

##這是apache2.4和以後的修改方法

#允許172.16.10.16訪問
Require ip 172.16.10.16
#允許172.16這個網段訪問
Require ip 172.16.0.0/16
#允許所有ip訪問
Require all granted

我們可以根據自己需要修改來
修改完之後啓動:

    systemctl restart httpd

界面:
搭建ldap雙主模式

登陸
用戶名,默認是 cn=Manager,dc=my-domain,dc=com(這個也可以改的,仿照修改密碼的步驟)
密碼就輸入剛開始設置的密碼

登陸進去後,我的管理界面報這個信息:
This base cannot be created with PLA
顯示結果如下:
搭建ldap雙主模式

經過查詢,原因是根結點需要初始化後才能使用,最終處理如下:

1、創建一個initroot.ldif文件,爲創建初始化根節點做準備工作,如下所示:
dn: dc=xinniu,dc=com
#域名的後綴
o: ldap
objectclass: dcObject
objectclass: organization

搭建ldap雙主模式

2、執行ldapadd -f initroot.ldif -x -D cn=admin,dc=xinniu,dc=com -W 輸入之前配置OpenLDAP的密碼後,即可完成創建LDAP根節點,如下圖所示:
搭建ldap雙主模式
完成以上操作後,再回到phpldapadmin頁面,可以看到,已經正常出現了根節點,並可以創建相關OU、Group、Account等對象,如下圖所示:
搭建ldap雙主模式

到這裏就搭建好了一臺openldap+phpldapadmin的服務器了,在另外一臺也按照此步驟操作搭建好另一臺。

三.配置雙主複製功能,在主1和主2上執行下面的步驟

ldap雙主複製功能的實現依賴於syncprov模塊,這個模塊位於/usr/lib64/openldap目錄下

1.mod_syncprov.ldif

[root@server1] vim mod_syncprov.ldif

# create new
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

導入配置

[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif

2.syncprov.ldif

[root@server1] vim syncprov.ldif

# create new
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100

導入配置

[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif

在主1和主2上執行下面的步驟,只需要替換olcServerID和provider的值

[root@server1] ~/ldif$ vim master01.ldif

# create new
dn: cn=config
changetype: modify
replace: olcServerID
# specify uniq ID number on each server
olcServerID: 1
# 唯一值,主2上替換爲2

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://basic-server-2:389/
    ##此處爲主2服務器地址,主2此處相應地上替換爲主1服務器地址
  bindmethod=simple
  binddn="cn=admin,dc=xinniu,dc=com"
  credentials=bigdata123!
    #管理員的明文密碼
  searchbase="dc=xinniu,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

導入配置

root@SERVER ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f master01.ldif

四.驗證

這部完成之後,我們在master1的管理界面上創建一個條目,再打開master2的管理界面,如果可以看到我們剛纔創建的條目,那麼就說明雙主已經配置成功了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章