您好,登錄后才能下訂單哦!
一、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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。