LDAP目錄服務
1、ldap目錄服務介紹:
目錄是一類為了瀏覽和搜索數據而設計的特殊的數據庫,目錄服務是按樹狀形式存儲信息的,目錄包含基於屬性的描述信息,並且支持高級的過濾功能,一般來說,目錄不支持大多數事務型數據庫所支持的高吞吐量和復雜的更新操作。如果是更新操作,要么全部更新,要么就不更新,存在的業務范圍在於可以大量的讀取和搜索,並不適大量的寫入。
2、什么是ldap:
目錄服務通常有兩個國際標准,分別是X.500和LDAP,X.500是ITU定義的目錄標准,而LDAP是基於TCP/IP的目錄訪問協議,是Internet上目錄服務的通用訪問協議。
LDAP是Lightweight Directory Access Protocol(輕量級目錄訪問協議)的縮寫,特指基於X.500的目錄訪問協議的簡化版,運行在TCP/IP或者其他的面向連接的傳輸服務之上。
3、LDAP目錄服務的特點:
1)是一個跨平台的,標准的協議,近幾年來得到業界的廣泛的認可。
2)LDAP的結構是用樹形結構來表示的,而不是表格,所以不需要SQL語句來維護。
3)提供了靜態數據的快速查詢方式,但是在寫數據方面並不擅長。
4)可以使用基於“推”或“拉”的賦值信息技術,用簡單的或基於安全證書的安全認證,復制部分或全部數據,寄保證了數據的安全性也提高了數據的訪問效率。
5)LDAP是一個安全的協議,LDAP v3支持SASL、SSL和TLS,使用認證來確保事務的安全性,另外,LDAP提供了不同層次的訪問控制,以限制不同用戶的訪問權限。
6)LDAP支持異類數據存儲,存儲的數據可以是文本資料,二進制圖片等。
7)Client/Server模型,Server端用於存儲樹,Client端提供操作目錄信息樹的工具可以將數據庫的內容一文本格式呈現在我們面前。
8)LDAP是一種開放的Internet標准,是跨平台的Internet協議,它是基於X.500標准的,與X.500不同,LDAP支持TCP/IP。
4、LDAP是怎樣工作的:
LDAP目錄服務是基於Client/Server模式的,一個或者多個LDAP服務器包含着組成整個目錄信息樹的數據,ldap客戶端連接到服務器並且發出一個請求,然后獲取到所需要的數據(通常該指針是指向另一個LDAP服務器),無論客戶端連接到哪個LDAP服務器,它看到的都是同一個目錄視圖,這是LDAP這類全局目錄服務的一個重要特征。
5、LDAP的幾個重要功能:
1)基本的目錄查詢服務
2)目錄查詢代理服務
3)異機復制數據(主從同步)
6、安裝ldap server:
[root@ldap-server ~]# cat /etc/redhat-release #查看系統版本
CentOS release 6.5 (Final)
[root@ldap-server ~]# uname -rm #查看內核版本和位數
2.6.32-431.el6.x86_64 x86_64
[root@ldap-server ~]# ntpdate pool.ntp.org #時間同步
15 Sep 16:39:10 ntpdate[8237]: adjust time server 46.101.50.70 offset -0.049546 sec
[root@ldap-server ~]# date #查看時間
Fri Sep 15 16:39:42 CST 2017
[root@ldap-server ~]# crontab -e #編輯定時任務,把時間同步命令添加進去
*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
[root@ldap-server ~]# crontab -l #查看定時任務
*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
[root@ldap-server ~]# echo "192.168.2.128 xyanp.org" >>/etc/hosts #編輯hosts文件*****
[root@ldap-server ~]# tail -1 /etc/hosts #查看添加的內容
192.168.2.128 xyanp.or
安裝前查看是否有安裝:
[root@ldap-server ~]# rpm -qa |grep openldap #rpm查看 openldap-2.4.23-32.el6_4.1.x86_64 [root@ldap-server ~]# yum -y install openldap openldap-* nscd nss-pam-ldapd nss-* pcre pcre-* #yum安裝依賴軟件和ldap軟件 [root@ldap-server ~]# cd /etc/openldap/ #切換目錄 [root@ldap-server openldap]# cp /usr/share/openldap-servers/slapd.conf.obsplete ./slapd.conf #拷貝配置文件 [root@ldap-server openldap]# ll slapd.conf #查看拷貝后的文件 -rw-r--r--. 1 root root 4635 Sep 15 17:15 slapd.conf [root@ldap-server openldap]# slappasswd -s xyp #生成ldap的密碼 {SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW [root@ldap-server openldap]# echo "rootpw {SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW" >>slapd.conf #把生成的密碼追加到slapd.conf里面去 [root@ldap-server openldap]# tail -1 slapd.conf #查看是否追加成功 rootpw {SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW
[root@ldap-server openldap]# cp slapd.conf slapd.conf.bak #備份配置文件 [root@ldap-server openldap]# vim slapd.conf #編輯配置文,藍色部分的注釋掉,添加紅色部分的內容 114 # database bdb 115 # suffix "dc=my-domain,dc=com" 116 # checkpoint 1024 15 117 # rootdn "cn=Manager,dc=my-domain,dc=com" 118 119 database bdb 120 suffix "dc=xyanp,dc=org" 121 rootdn "cn=admin,dc=xyanp,dc=org" [root@ldap-server openldap]# cat >>slapd.conf<<EOF #添加內容到配置文件 > loglevel 296 > cachesize 1000 > checkpoint 2048 10 > EOF [root@ldap-server openldap]# tail -4 slapd.conf #查看添加的內容 rootpw {SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW #這條是之前添加的 loglevel 296 #日志級別 cachesize 1000 #緩存條數 checkpoint 2048 10 #2048表示寫入內存的文件大小,10表示每10分鍾寫一次 [root@ldap-server openldap]# vim slapd.conf #設置訪問權限,將原來的全部刪掉,重新添加下面部分 98 access to * 99 by self write 100 by anonymous auth 101 by * read
企業里的設置權限方式:(限於2.3版本)
access to *
by self write
by dn.exact="uid=auth,ou=sysusers,dc=intra,dc=qq,dc=com" peername.regex=127\.0\.0\.1 write
by dn.subtree="ou=sysusers,dc=intra,dc=qq,dc=com" read
by anonymous auth
[root@ldap-server openldap]# vim /etc/rsyslog.conf #配置rsyslog保存ldap的日志信息,在rsyslog最下面添加下面內容 # save ldap journal to ldap.log local4.* /var/log/ldap.log [root@ldap-server openldap]# /etc/init.d/rsyslog restart #重啟rsyslog
[root@ldap-server openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG #配置ldap的數據庫 [root@ldap-server openldap]# ll /var/lib/ldap/DB_CONFIG #查看數據庫結果 -rw-r--r--. 1 root root 845 Sep 19 11:26 /var/lib/ldap/DB_CONFIG [root@ldap-server openldap]# chown -R ldap:ldap /var/lib/ldap/DB_CONFIG #授權 [root@ldap-server openldap]# chmod 700 /var/lib/ldap/DB_CONFIG #授權 [root@ldap-server openldap]# ll /var/lib/ldap/ #查看 -rwx------. 1 ldap ldap 845 Sep 19 11:26 DB_CONFIG [root@ldap-server openldap]# slaptest -u #測試配置文件是否成功 config file testing succeeded [root@ldap-server openldap]# /etc/init.d/slapd start #啟動ldap Starting slapd: [ OK ] [root@ldap-server openldap]# chkconfig slapd on #加入開機自啟動 [root@ldap-server openldap]# chkconfig --list slapd #查看 slapd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@ldap-server openldap]# cat /var/log/ldap.log #查看日志 Sep 19 11:50:08 ldap-server slapd[18680]: @(#) $OpenLDAP: slapd 2.4.40 (Mar 22 2017 06:29:21) $#012#011mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4.40/openldap-2.4.40/build-servers/servers/slapd [root@ldap-server openldap]# ldapsearch -LLL -W -x -H ldap://xyanp.org -D "cn=admin,dc=xyanp,dc=org" -b "dc=xyanp,dc=org" "(uid=*)" #查詢數據庫內容 Enter LDAP Password: #輸入最開始設置的密碼 ldap_bind: Invalid credentials (49) #報錯信息
解決辦法:
[root@ldap-server openldap]# rm -rf slapd.d/* #刪除原來默認的配置文件
[root@ldap-server openldap]# slaptest -f slapd.conf -F slapd.d/ #重新生成配 置文件
config file testing succeeded
[root@ldap-server openldap]# ll slapd.d/ #查看
total 8
drwxr-x---. 3 root root 4096 Sep 19 16:00 cn=config
-rw-------. 1 root root 1274 Sep 19 16:00 cn=config.ldif
[root@ldap-server openldap]# chown -R ldap:ldap slapd.d #重新授權
[root@ldap-server openldap]# /etc/init.d/slapd restart #重啟服務
Stopping slapd: [ OK ]
Starting slapd: [ OK ]
[root@ldap-server openldap]# netstat -utpln|grep 389 #查看ldap端口
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 19013/slapd
tcp 0 0 :::389 :::* LISTEN 19013/slapd
[root@ldap-server openldap]# ldapsearch -LLL -W -x -H ldap://xyanp.org -D "cn=admin,dc=xyanp,dc=org" -b "dc=xyanp,dc=org" "(uid=*)"#再測試時,故障解決
Enter LDAP Password: #輸入密碼
No such object (32) #提示沒有數據內容
7、安裝ldap客戶端:
software:ldap-account-manager-3.7.tar.gz
[root@ldap-server openldap]# yum -y install httpd php php-ldap php-gd #安裝lamp環境
[root@ldap-server tools]# tar xf ldap-account-manager-3.7.tar.gz -C /var/www/html/ #解壓 [root@ldap-server tools]# cd /var/www/html/ [root@ldap-server html]# mv ldap-account-manager-3.7 ldap [root@ldap-server html]# cd ldap/config #切換目錄 [root@ldap-server config]# ll #查看 total 36 -rw-r--r--. 1 root root 241 Sep 19 18:18 config.cfg -rw-r--r--. 1 root root 241 Mar 26 2012 config.cfg_sample -rw-r--r--. 1 root root 2408 Sep 19 18:18 lam.conf -rw-r--r--. 1 root root 2408 Mar 26 2012 lam.conf_sample -rw-r--r--. 1 root root 1041 Mar 26 2012 language drwxr-xr-x. 3 root root 4096 Mar 26 2012 pdf drwxr-xr-x. 2 root root 4096 Mar 26 2012 profiles drwxr-xr-x. 2 root root 4096 Mar 26 2012 selfService -rw-r--r--. 1 root root 183 Mar 26 2012 shells [root@ldap-server config]# cp config.cfg_sample config.cfg #拷貝並備份 [root@ldap-server config]# cp lam.conf_sample lam.conf #拷貝並備份 [root@ldap-server config]# sed -i "s#cn=Manager#cn=admin#g" lam.conf #文件替換 [root@ldap-server config]# sed -i "s#dc=my-domain#dc=xyanp#g" lam.conf [root@ldap-server config]# sed -i "s#dc=com#dc=org#g" lam.conf [root@ldap-server config]# diff lam.conf lam.conf_sample #文件對比修改 13c13 < admins: cn=admin,dc=xyanp,dc=org --- > admins: cn=Manager,dc=my-domain,dc=com 55c55 < types: suffix_user: ou=People,dc=xyanp,dc=org --- > types: suffix_user: ou=People,dc=my-domain,dc=com 59c59 < types: suffix_group: ou=group,dc=xyanp,dc=org --- > types: suffix_group: ou=group,dc=my-domain,dc=com 63c63 < types: suffix_host: ou=machines,dc=xyanp,dc=org --- > types: suffix_host: ou=machines,dc=my-domain,dc=com 67c67 < types: suffix_smbDomain: dc=xyanp,dc=org --- > types: suffix_smbDomain: dc=my-domain,dc=com [root@ldap-server html]# chown -R apache.apache ldap/ #授權 [root@ldap-server html]# /etc/init.d/httpd start #啟動httpd服務
瀏覽器登錄:


點擊右上角的:













linux服務器查看:
[root@ldap-server html]# ldapsearch -LLL -w xyp -x -H ldap://xyanp.org -D "cn=admin,dc=xyanp,dc=org" -b "dc=xyanp,dc=org" "(uid=xyp)" #只查看新建的用戶
dn: uid=xyp,ou=People,dc=xyanp,dc=org
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
homeDirectory: /home/xyp
loginShell: /bin/bash
cn: xyp xyp
userPassword:: e1NTSEF9cU13NVVlbzR6VndWMkU1S0RMdjhiSGZZZ0dwRFJhOVc=
uidNumber: 10008
gidNumber: 10007
sn: xyp
givenName: xyp
uid: xyp
========================================================================================================================到此安裝ldap就安裝並配置管理成功
