1. 程式人生 > >OpenLDAP 服務端安裝與配置以及原理

OpenLDAP 服務端安裝與配置以及原理

ldap

OpenLDAP 服務端安裝與配置

一、什麽是LDAP

目錄是一個為查詢、瀏覽和搜索而優化的專業分布式數據庫,它呈樹狀結構組織數據,就好象Linux/Unix系統中的文件目錄一樣。目錄數據庫和關 系數據庫不同,它有優異的讀性能,但寫性能差,並且沒有事務處理、回滾等復雜功能,不適於存儲修改頻繁的數據。所以目錄天生是用來查詢的,就好象它的名字 一樣
?

二、LDAP特點

?

  • LDAP的結構用樹來表示,而不是用表格。正因為這樣,就不能用SQL語句了
  • LDAP可以很快地得到查詢結果,不過在寫方面,就慢得多
  • LDAP提供了靜態數據的快速查詢方式
  • Client/server模型,Server 用於存儲數據,Client提供操作目錄信息樹的工具
  • 這些工具可以將數據庫的內容以文本格式(LDAP 數據交換格式,LDIF)呈現在您的面前
  • LDAP是一種開放Internet標準,LDAP協議是跨平臺的Interent協議

三、LDAP組織數據結構

技術分享圖片
?

  • DC (Domain Component) :可以理解給域名 -> baidu.com
  • CN (Common Name) : 可以理解為域名裏的三級域名,或者上圖中的、用戶名稱、組名……
  • OU (Organizational Unit) :可以理解為組別,組
    ?

四、OpenLDAP 安裝方式

基於UNIX 發行操作系統環境下安裝OpenLDAP 軟件一般有兩種方式:通過源碼編譯安裝或是通過yum源直接安裝rpm包。下面會筆者僅正對與yum的方式安裝。這裏就不在贅述安裝方式,yum源可以使用阿裏雲源,安裝OpenLDAP服務器需要提供守護進程和傳統的OpenLDAP 管理配置工具,主要是slapd 和ldap-utils 套件。

?

前置條件

操作系統 所需軟件包
CentOS 6.8 X 64 openldap,openldap-clients,openldap-devel,openldap-servers,openldap-servers-sql

?

# 獲取配置文件
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf  

# 獲取數據庫配置文件
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

# 修改權限
chown -R ldap.ldap /etc/openldap  
chown -R ldap.ldap /var/lib/ldap

?

五、OpenLDAP 配置

1、slapd.conf配置文件參數

[root@ldap ~]# egrep -v "#|^$" /etc/openldap/slapd.conf

# include 行代表當前OpenLDAP 服務包含的schema 文件    
include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/duaconf.schema
include         /etc/openldap/schema/dyngroup.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/ppolicy.schema
include         /etc/openldap/schema/collective.schema
include         /etc/openldap/schema/sudo.schema
include         /etc/openldap/schema/openssh-lpk-openldap.schema

# OpenLDAP 服務允許連接的客戶端版本。
allow bind_v2

# OpenLDAP 進程啟動時,pid 文件存放路徑。
pidfile         /var/run/openldap/slapd.pid

# OpenLDAP 參數文件存放的路徑。
argsfile        /var/run/openldap/slapd.args

# 傳輸加密的配置信息
TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile "\"OpenLDAP Server\""
TLSCertificateKeyFile /etc/openldap/certs/password

database config
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none
database monitor
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=root,dc=company,dc=com" read
        by * none

# 指定OpenLDAP 數據庫類型。
database        bdb

# 指定OpenLDAP 服務域名(DN)
suffix          "dc=company,dc=com"
checkpoint      1024 15

# 指定OpenLDAP 服務管理員信息(可以理解為創建高級管理員root)。
rootdn          "cn=root,dc=company,dc=com"

# 指定OpenLDAP 服務管理員密碼,使用slappasswd -s your_password來獲取加密密碼
rootpw          {SSHA}hjqcrGsPL6H58QAS0QHBvihVS7x2HHKG

# 指定OpenLDAP 數據庫文件的存放目錄。
directory       /var/lib/ldap

# 創建OpenLDAP 索引。
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

?

2、啟動服務並查詢

啟動ldap服務:

service slapd start

查詢LDAP的目錄條目,首先我們介紹一下ldapsearch命令,具體可以使用man幫助手冊查看。
-b:指定查找的節點
-D:指定查找的DN
-x:使用簡單認證
-W:查詢是輸入密碼,或者使用-w password
-h:OpenLDAP的主機地址,可以使用IP或者域名
-H:使用LDAP服務器的URI地址進行操作

查詢,看看結果返回是否正常,我們可以看到No such object,因為我們什麽數據也沒有添加,所以查詢的結果為零,到此我們的配置都是正常的。

[root@ldap ~]# ldapsearch -x -D "cn=root,dc=company,dc=com" -h 10.0.40.21 -W
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1

?

3、為ldap server添加數據

為ldap添加用戶數據,有四種方法,分別如下,我們選擇第四種方法進行試驗。

  • 可以直接修改slapd.d目錄下面的數據文件,好處是不用重啟服務,直接生效;
  • 安裝開源工具migrationtools來生成ldfi文件,並通過ldapadd來添加;
  • 安裝ldap 客戶端,這種方法最為簡單;
  • 直接編輯ldfi文件,然後通過ldapadd添加。
    手動編輯base.ldif文件:

[root@ldap ~]# vim base.ldif
#基本DN
dn: dc=company,dc=com
objectClass: organization
objectClass: dcObject
dc: company
ou: company

#用戶
dn: ou=people,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: people

#群組
dn: ou=group,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: group

通過ldapadd導入數據:

[root@mldap ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f base.ldif 

adding new entry "dc=company,dc=com"

adding new entry "ou=people,dc=company,dc=com"

adding new entry "ou=group,dc=company,dc=com"

回顯反饋的結果添加成功,使用另一臺機驗證添加結果:

[root@test01 ~]# ldapsearch -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -b "dc=company,dc=com" -LLL
dn: dc=company,dc=com
objectClass: organization
objectClass: dcObject
dc: company
o: company

dn: ou=people,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: people

dn: ou=group,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: group

?
然後我們通過user.ldif和group.ldif增加一個用戶和一個組。

 [root@mldap ~]# cat user.ldif group.ldif 
dn: uid=test1,ou=people,dc=company,dc=com
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
objectClass: shadowAccount
gidNumber: 0
givenName: test1
sn: test1
uid: test1
homeDirectory: /home/test1
loginShell: /bin/bash
shadowFlag: 0
shadowMin: 0
shadowMax: 99999
shadowWarning: 0
shadowInactive: 99999
shadowLastChange: 12011
shadowExpire: 99999
cn: test1
uidNumber: 24422
userPassword:: e1NIQX10RVNzQm1FL3lOWTNsYjZhMEw2dlZRRVpOcXc9

dn: cn=devops,ou=group,dc=company,dc=com
objectClass: posixGroup
objectClass: top
cn: DBA
memberUid: test1
gidNumber: 10673

?
添加用戶和用戶組:

[root@ldap ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f group.ldif 
adding new entry "cn=devops,ou=group,dc=company,dc=com"

[root@ldap ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f user.ldif 
adding new entry "uid=test1,ou=people,dc=company,dc=com"

?
然後通過下面的命令查看自己是否添加成功。

ldapsearch -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -b "dc=company,dc=com" -LLL

?

六、集成圖形界面phpldapadmin

?

1.安裝rpm包

yum -y install phpldapadmin

2.修改http配置文件

?

修改/etc/httpd/conf.d/phpldapadmin.conf

#
#  Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require local
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>

3.修改登錄用戶變量

?

vim /etc/phpldapadmin/config.php
#找到用戶名變量
$servers->setValue(‘login‘,‘attr‘,‘uid‘);
#修改為
$servers->setValue(‘login‘,‘attr‘,‘dn‘);

4.啟動httpd服務器

?

service httpd start

5.登錄遊覽器驗證

?
技術分享圖片
?
配置界面:
?
技術分享圖片

OpenLDAP 服務端安裝與配置以及原理