OpenLDAP服務器的搭建


OpenLDAP服務器的搭建(Centos7)

LDAP目錄服務介紹

1.安裝OpenLDAP的相關軟件包

# yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap 

2.安裝完后,可以看到自動創建了ldap用戶

# tail -n 1 /etc/passwd

3.OpenLDAP的相關配置文件信息

      /etc/openldap/slapd.d/*:這下面是/etc/openldap/slapd.conf配置信息生成的文件,每修改一次配置信息,這里的東西就要重新生成

      /etc/openldap/schema/*:OpenLDAP的schema存放的地方

      /var/lib/ldap/*:OpenLDAP的數據文件

      /usr/share/openldap-servers/DB_CONFIG.example 模板數據庫配置文件

OpenLDAP監聽的端口:

      默認監聽端口:389(明文數據傳輸)

      加密監聽端口:636(密文數據傳輸)   

4.初始化OpenLDAP的配置

     # cp /usr/share/openldap-servers/DB_CONFIG.example    /var/lib/ldap/DB_CONFIG  # DB_CONIFG中主要是關於模板的相關的一些配置

    # chown ldap:ldap /var/lib/ldap/DB_CONFIG

5.啟動OpenLDAP服務

  1.  
    #systemctl start slapd
  2.  
    #systemctl enable slapd
  3.  
    #systemctl status slapd

6.為OpenLDAP生成管理用戶密碼

# slappasswd -s 123456

執行完該命令之后,請輸入您要設定的密碼。然后會生成 {SSHA}xxxxx 這樣一行東西,請把它記下來。

 

7.新建一個rootpwd.ldif(名稱是自定義的)的文件
 

#vi rootpwd.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}
TGuSn8kPjUCZVDZ5RHI0X7vTPT/gzg9m

ldif即LDAP Data Interchange Format,是LDAP中數據交換的一種文件格式。文件內容采用的是key-value形式,注意value后面不能有空格。

其實這是在修改數據庫的信息,數據庫的配置在/etc/openldap/slapd.d/cn=config文件夾下。通過命令將配置在線覆蓋進數據庫里。

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

  • 上面內容中dn即distingush name
  • olc即Online Configuration,表示寫入LDAP后不需要重啟即可生效
  • changetype: modify表示修改一個entry,changetype的值可以是add,delete, modify等。
  • add: olcRootPW表示對這個entry新增了一個olcRootPW的屬性
  • olcRootPW: {SSHA}lQLBaMp1TfneyzfhAytmhKeJ6gpEBTcd指定了屬性值

 

8.使用ldapadd命令將上面的rootpwd.ldif文件寫入LDAP

# ldapadd -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif

============================================================= 溫馨提示: 如果上面的命令出現下面報錯:

[root@openldap-master opt]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.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"
ldap_modify: Inappropriate matching (18)
    additional info: modify/add: olcRootPW: no equality matching rule

解決辦法: 修改modify.ldif中對應選項的"add"為"replace"即可

即:

root@openldap-master opt]# cat chrootpw.ldif
# specify the password generated above for "olcRootPW" section
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}ago8nKNyfjhYa/btKgHDIpyEPxSBZrMm

然后再次執行:

[root@openldap-master opt]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.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"

=============================================================

9.導入schema

向 LDAP 中導入一些基本的 Schema預設模式。這些 Schema 文件位於 /etc/openldap/schema/ 目錄中,定義了我們以后創建的條目可以使用哪些屬性,這里先全部導入。

# 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

======================================================== 溫馨提示: 如果上面的命令出現下面報錯:

  1.  
    ......
  2.  
    ldap_add: Other (e.g., implementation specific) error (80)
  3.  
    additional info: olcAttributeTypes: Duplicate attributeType: "2.16.840.1.113730.3.1.1"

原因是: LDIF已經加載,所以嘗試再次加載它們就報錯這些信息,忽略這個步驟即可。

 =======================================================

 

10.設定默認域,新建一個根節點

我們需要配置 LDAP 的頂級域及其管理域

(1)先使用slappasswd生成一個密碼

根節點管理員密碼與 OpenLDAP 管理員密碼不是同一回事!一個 LDAP 數據庫可以包含多個目錄樹。

# slappasswd -s 123456

(2)新建一個domain.ldif的文件

首先請想好一個域名。比如我使用的是sj.com

# vi domain.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=Manager,dc=sj,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=sj,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=sj,dc=com


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}SyMIWAc/bUF0f30GsaNKKHRjvJd4l/3M


dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=sj,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=sj,dc=com" write by * read

-----------------------------

  • olcAccess即access,該key用於指定目錄的ACL即誰有什么權限可以存取什么
  • olcRootDN設定管理員root用戶的distingush name
  • 注意替換上面文件內容中cn為具體的域信息
  • olcRootPW用上面新生成的密碼替換

------------------------------

(3)執行LDIF文件,寫入LDAP

# ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif

 

============================================================= 溫馨提示: 如果上面的命令出現下面報錯: .......

  1.  
    .......
  2.  
    ldap_modify: Inappropriate matching (18)
  3.  
    additional info: modify/add: olcRootPW: no equality matching rule

解決辦法:將chdomain.ldif文件中的"add"全部替換成"replace",然后重新執行上面命令即可!

 ============================================================

11.添加基本目錄

參看上圖。我們在上述基礎上,我們來創建一個叫做 sj com 的組織,也就是創建是上圖的第一層。接下來需要創建第二層,一個 Manager 的組織角色(該角色內的用戶具有管理整個 LDAP 的權限)和 People 和 Group 兩個組織單元:

# vi basedomain.ldif

 

dn: dc=sj,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: com
dc: sj

dn: cn=Manager,dc=sj,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=sj,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=sj,dc=com
objectClass: organizationalUnit
ou: Group

---------------------------------------

  • 注意替換上面文件內容中dn為具體的域信息
  • 理解dn,cn,dc
    • DC即Domain Component,LDAP目錄類似文件系統目錄dc=sj,dc=com相當於/com/sj
    • CN即Common Name,CN有可能代表一個用戶名,例如cn=Manager,dc=sj,dc=com表示在/com/sj域下的管理員用戶Manager
    • OU即Organizational Unit,例如ou=People,dc=sj,dc=com表示在/com/sj域下的一個組織單元People

---------------------------------

執行LDIF文件,寫入LDAP

# ldapadd -x -D cn=Manager,dc=sj,dc=com -W -f basedomain.ldif

然后需要輸入步驟10 設定的根節點管理員密碼123456

通過以上的所有步驟,我們就設置好了一個 LDAP 目錄樹:其中基准 dn dc=sj,dc=com 是該樹的根節點,其下有一個管理域 cn=Manager,dc=sj,dc=com和兩個組織單元 ou=People,dc=sj,dc=org 及 ou=Group,dc=sj,dc=org。

OpenLDAP客戶端的測試(Centos7)

服務端添加用戶

(1) 使用ldapadmin添加賬號,如下可參考

 

(2) 服務器查看賬號

#ldapsearch -x cn=test -b dc=sj,dc=com

客戶端上配置

 

(1)在客戶端上安裝必要的LDAP包
#yum install -y openldap-clients nss-pam-ldapd
(2)執行下面的命令,將客戶端添加到LDAP服務器以進行單點登錄。服務器地址使用LDAP服務器的IP地址或主機名。
# authconfig --enableldap --enableldapauth --ldapserver=127.0.0.1 --ldapbasedn="dc=sj,dc=com" --enablemkhomedir --update

(3)重啟nslcd服務

# systemctl restart nslcd

(4)在客戶端上驗證登錄
客戶端使用LDAP域賬號“test”可以正常登錄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM