中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenLDAP 服務端安裝與配置

發布時間:2020-08-01 00:12:29 來源:網絡 閱讀:11322 作者:wzlinux 欄目:數據庫

一、OpenLDAP 安裝方式

    在UNIX 發行操作系統環境下安裝OpenLDAP 軟件一般有兩種方式:一種是通過源碼編譯安裝,另一種則是通過光盤自帶的rpm 軟件包進行安裝。下面會分別介紹這兩種安裝方式,我還是建議使用rpm 安裝,因為方便快捷。安裝OpenLDAP服務器需要提供守護進程和傳統的OpenLDAP 管理配置工具,主要是slapd 和ldap-utils 套件。

    我的安裝環境是CentOS 6.7 64位操作系統,安裝前環境準備請看博文環境準備

1、以軟件包形式安裝

# yum安裝
yum install openldap openldap-* -y

# 初始化配置文件
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 服務所使用的端口為389,此端口采用明文傳輸數據,數據信息得不到保障。所以可以通過配置CA 及結合TLS/SASL 實現數據加密傳輸,所使用端口為636,后面我再介紹實現過程。

2、通過源碼編譯安裝

    由于編譯安裝OpenLDAP 需要數據庫支持,因此OpenLDAP 軟件后端數據庫可采用BerkeleyDBBDB、Oracle、MySQL、MariaDB、GDBM 等數據庫軟件實現數據的存儲。默認OpenLDAP 采用Berkeley DB 數據庫作為后端存儲引擎,而且OpenLDAP 對Berkey DB 的版本有一定要求,以OpenLDAP 2.4 軟件版本為例,需要Berkeley DB 4.4 版本以上,所以在編譯OpenLDAP 源碼包時需要先下載Brekeley DB 源碼包,并進行編譯安裝即可。

    Berkeley DB 是由美國Sleepycat Software 公司開發的開源數據庫系統,具有高性能、嵌入式數據庫編程庫,可存取任意類型的鍵(key)/值(value)對,一鍵可以存儲多個值,且支持在線并發量大的數據查詢請求。

    非常抱歉,這部分安裝設置比較復雜,我就不在這里展示了,如果誰想知道可以給我留言,謝謝。

二、OpenLDAP 配置

    我使用的系統是CentOS 6系列的,和CentOS 5系列的OpenLDAP有不小的區別,舊版本的OpenLDAP配置文件是slapd.conf,而新版本(我測試的新版本是2.4.40)的OpenLDAP服務運行時并不會讀取該配置文件,而是從slapd.d目錄(一般與slapd.conf在同一目錄下)中讀取相關信息,我們需要把該目錄下的數據刪掉,然后利用我們在slapd.conf里配置的信息重新生成配置數據。這也可能是你啟動服務后運行ldap相關命令卻出現“ldap_bind: Invalid credentials (49)”錯誤的主要原因。具體怎么重新生成配置數據請看具體的實驗過程。

1、slapd.conf配置文件參數

    以下是我的配置文件,#的內容是我添加的解釋,大家可以根據實際情況修改成自己的域名,如果大家不了解其中的dn,cn,dc代表什么,請查看我的博文理論知識

[root@mldap ~]# 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=admin,dc=wzlinux,dc=com" read
        by * none
        
# 指定OpenLDAP 數據庫類型。
database        bdb

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

# 指定OpenLDAP 服務管理員信息。
rootdn          "cn=admin,dc=wzlinux,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、啟動服務并查詢

service slapd start

    查詢LDAP的目錄條目,首先我們介紹一下ldapsearch命令,具體可以使用man幫助手冊查看。

  • -b:指定查找的節點

  • -D:指定查找的DN

  • -x:使用簡單認證

  • -W:查詢是輸入密碼,或者使用-w password

  • -h:OpenLDAP的主機地址,可以使用IP或者域名

  • -H:使用LDAP服務器的URI地址進行操作

[root@mldap ~]# ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -H ldap://192.168.2.10 -W
Enter LDAP Password:                    #就是我們在slapd.conf加密的密碼
ldap_bind: Invalid credentials (49)

    我們看到出現了錯誤,這個問題并不是因為密碼錯誤,是因為新版的LDAP去讀取數據庫(slapd.d),并沒有按照我們的配置文件(slapd.conf)讀取,所以我們要刪掉數據庫配置文件,然后通過slapd.conf文件生成,每次修改配置文件都要如此操作。

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F/etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d
service slapd restart

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

[root@mldap ~]# ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -h 192.168.2.10 -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添加用戶數據,有四種方法,分別如下,我們選擇第四種方法進行試驗。

  • 1)可以直接修改slapd.d目錄下面的數據文件,好處是不用重啟服務,直接生效;

  • 2)安裝開源工具migrationtools來生成ldfi文件,并通過ldapadd來添加;

  • 3)安裝ldap 客戶端,這種方法最為簡單;

  • 4)直接編輯ldfi文件,然后通過ldapadd添加。

    首先我們手動編輯base.ldif文件,直接復制好像會因為格式有問題。每個條目之間有個空格,直接復制過去會有點問題,需要你把每個條目之間空行的第一個空位刪除一下。

[root@mldap ~]# vim base.ldif 
dn: dc=wzlinux,dc=com
objectClass: organization
objectClass: dcObject
dc: wzlinux
o: wzlinux

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

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

    通過ldapadd導入數據,通過man可以看到,他的大部分參數和ldapsearch差不多,我們這里就直接使用了。

[root@mldap ~]# ldapadd -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -f base.ldif 

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

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

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

    通過反饋的結果,我們已經看到添加成功了,我們在另外一臺安裝了客戶端的機器上面進行查詢一下,可以看到我們查詢到的結果和我們的base.ldif是一樣的。

[root@test01 ~]# ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -b "dc=wzlinux,dc=com" -LLL
dn: dc=wzlinux,dc=com
objectClass: organization
objectClass: dcObject
dc: wzlinux
o: wzlinux

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

dn: ou=group,dc=wzlinux,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=wzlinux,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=DBA,ou=group,dc=wzlinux,dc=com
objectClass: posixGroup
objectClass: top
cn: DBA
memberUid: test1
gidNumber: 10673

   看完那就添加用戶和組唄。

[root@mldap ~]# ldapadd -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -f group.ldif 
adding new entry "cn=DBA,ou=group,dc=wzlinux,dc=com"

[root@mldap ~]# ldapadd -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -f user.ldif 
adding new entry "uid=test1,ou=people,dc=wzlinux,dc=com"

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

ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -b "dc=wzlinux,dc=com" -LLL

    可能每次查詢都寫這么多,或許感覺比較麻煩,我們可以在客戶端的配置文件里面添加兩行數據,客戶端的配置文件是/etc/openldap/ldap.conf。

BASE   dc=wzlinux,dc=com
URI    ldap://ldap.wzlinux.com     #提前設置好hosts文件

4、通過slapd.conf 定義用戶策略控制

    默認情況下,不允許OpenLDAP 用戶自身修改密碼,僅管理員具有修改權限。為了提高個人賬號的安全性,需要讓用戶自身可以修改并更新密碼信息,不需要管理員干涉。具體步驟如下。

1)定義訪問控制策略。

    編輯slapd.conf 配置文件,定位access 行,添加如下內容。

access to attrs=shadowLastChange,userPassword  
    by self write             #只允許自身修改  
    by * auth  
access to *  
    by * read                 #允許授權用戶查看信息

2)重新生成數據庫文件并重啟服務。

rm -rf /etc/openldap/slapd.d/*  
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/  
chown -R ldap.ldap /etc/openldap/  
service slapd restart

5、日志的配置

    在配置文件/etc/openldap/slapd.conf中添加如下內容,記得重新生成數據庫文件。

loglevel 256
cachesize 1000
checkpoint 2048 10

    在/etc/rsyslog.conf中添加如下內容,然后重啟rsyslog服務。

local4.*          /var/log/slapd.log

6、OpenLDAP 日志切割配置

    通過logrotate 實現對OpenLDAP 日志的切割,預防日志過大不便于排錯以及性能分析。下面通過定制腳本實現當日志大于10MB 時,進行切割,便于排錯。腳本如下。

#!/bin/bash  
########### 通過logrotate 實現對OpenLDAP 日志進行切割 ##################  
FILE= /var/log/slapd.log  
if [ ! -f $FILE ];then  
/bin/touch $FILE && /bin/chmod 666 $FILE && /usr/bin/chattr +a $FILE &> /dev/null  
cat > /etc/logrotate.d/ldap << "EOF"  
/var/log/slapd.log {  
   prerotate  
         /usr/bin/chattr -a /var/log/slapd/slapd.log  
   endscript  
   compress  
   delaycompress  
   notifempty  
   rotate 100  
   size 10M  
   postrotate  
          /usr/bin/chattr +a /var/log/slapd/slapd.log  
   endscript  
}  
EOF  
   service rsyslog restart && chkconfig rsyslog on  
else  
   echo "slapd log is exsit"  
fi






向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

烟台市| 浦北县| 遵义县| 土默特左旗| 车险| 南木林县| 南昌市| 鄂尔多斯市| 陵川县| 通渭县| 南乐县| 尚义县| 阿勒泰市| 武山县| 定陶县| 安新县| 崇仁县| 贡嘎县| 综艺| 临朐县| 阳原县| 南汇区| 宜章县| 中西区| 靖宇县| 盘山县| 宁城县| 讷河市| 鲜城| 隆安县| 沅江市| 三亚市| 师宗县| 龙山县| 彰武县| 芒康县| 宁都县| 基隆市| 鹤山市| 肥乡县| 都江堰市|