0x01 關于 ldap 的一些簡單科普
`ldap` 基于tcp/ip的輕量級目錄訪問協議,屬于X.500目錄協議族的一個簡化版本
你可以暫時把它粗暴的理解成 `一種特殊類型的數據庫` ,通常,這種數據庫文件後綴都為`.ldif`,并使用特殊的節點查詢語句來獲取相應數據
實際生産環境中,主要還是用它來做各種查詢比較多,既是查詢,也就意味着肯定會有大量的讀操作
雖然,ldap也支持一些簡單的更新功能,即寫,但一般都不會用,因為它在寫方面的效率并不高
如果真的是寫比較多,直接用各種關系型數據庫代替就好了,實在沒必要用ldap,畢竟,術業有專攻
另外,ldap 跨平台,功能簡潔,易管理,配置,讀性能也不錯,亦可分布式部署`不知道是不是可以把它的分布式理解成windows域的目錄樹,目錄林概念`
用的最多的可能就是進行`集中身份驗證`,最後,我們還需要知道的是,默認情況下,ldap的所有數據都是直接以明文傳輸的,容易被截獲,不過好在它支持ssl
0x02 其它的一些常用目錄服務工具
X.500 過于龐大臃腫
ldap 輕量且配置簡單
雖然這種純圖形化的工具貌似是很好用,但個人還是不太建議在實際生産環境中用,驗證過于簡單,比較危險,畢竟隻是個web腳本,很容易被入侵者掃目錄,掃域名時掃到,另外,也極易被各類搜索引擎抓到,如下
1
inurl:templates/login.php intitle:LDAP Account Manager
0x13 啟用sasl,讓指定的服務都通過ldap的方式進行集中身份驗證
# yum install *sasl* -y
# rpm -qa | grep sasl
# saslauthd -v sasl所支持的所有認證類型
# sed -i 's#MECH=pam#MECH=ldap#g' /etc/sysconfig/saslauthd
# grep -i mech /etc/sysconfig/saslauthd
MECH=ldap
# /etc/init.d/saslauthd start
# chkconfig saslauthd on
# vi /etc/saslauthd.conf
ldap_bind_dn: cn=klion,dc=ldapmaster,dc=org
ldap_bind_pw: klion
ldap_search_base: ou=People,dc=ldapmaster,dc=org
ldap_filter: uid=%U
ldap_password_attr: userPassword
# ps -ef | grep sasl
# testsaslauthd -u super -p admin 此時便會用ldap賬戶來進行驗證
0x14 以讓svn服務通過ldap進行認證為例,其實非常簡單,首先,你需要先在本機快速部署好svn,至于具體的部署方法,請參考之前的相關文章,當然,除了svn,像vsftpd,samba這類的基礎服務也都可以通過ldap進行身份驗證,并非重點此處不再贅述
# 讓svn通過ldap進行驗證,不再走svn自己的驗證了
# vi /etc/sasl2/snv.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
# 編輯svn主配置文件
# vi /svn/svndata/svndoc/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = /svn/svnpasswd/passwd
authz-db = /svn/svnpasswd/authz
[sasl]
use-sasl = true # 開啟svn的sasl驗證
# 把svn本地用戶全部注釋掉,因為一旦開啟sasl就不再走svn本地驗證了
# vi /svn/svnpasswd/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
# web = 654321
# webadmin = admin110
# admin = 123456
# bakuser = admin
# guest = svn110
# svn = svnadmin
# 另外,還需要把ldap用戶加到svn認證文件中,不然,依然是登不上svn的
# 雖然用戶密碼驗證過程不走本地,但權限認證過程還是在本地進行的
# vi /svn/svnpasswd/authz
[aliases]
[groups]
administrator = web
sec = webadmin,admin
ldap_user = svnnew,super
[svndoc:/]
svn = rw
@administrator = rw
@ldap_user = rw
[svndoc:/web01]
bakuser = rw
[svndoc:/web02]
guest = rw
下面是svn通過ldap進行認證的實際效果
0x15 關于ldap主從同步,後續有機會再說,這次我們先初步入個門 ^_^
0x16 最後,我們再來關注下openldap的一些安全問題,最重要的可能就是允許匿名訪問,對此的利用沒什麼好說的,直接用各種ldap客戶端工具,如,LDAPSoft Ldap Browser或者JXplorer都行,隻需指定正确的ip,端口和dn,然後用匿名的方式連上去即可
後話:
建議實際生産環境中直接使用加密傳輸,另外,可根據實際業務需求配置更具針對性的ACL,至于針對web層的ldap注入 [ 其實跟sql注入沒什麼兩樣,隻是查詢語言不同而已 ],篇幅原因,我們在後續的相關章節中還會再做詳細說明,待續……
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!