如果你是一名面向基礎(chǔ)設(shè)施的安全專業(yè)人員,那么在目前的IT行業(yè)中只關(guān)注應(yīng)用程序安全可能會(huì)讓你感覺到自己跟不上形勢(shì)。然而,在很多情況下應(yīng)用安全專家還是要依靠基礎(chǔ)設(shè)施小組來提供安全基礎(chǔ),命名和目錄服務(wù)便是其中的一個(gè)典型例子。
在本文中,我們將探討為何在保證了命名和目錄服務(wù)、輕量級(jí)目錄訪問協(xié)議(LDAP)之后,有助于建立一個(gè)堅(jiān)實(shí)的、應(yīng)用程序可信任的平臺(tái)。
LDAP基礎(chǔ)
LDAP廣泛用于內(nèi)部和外部應(yīng)用程序,提供基于多種平臺(tái)的用戶目錄服務(wù)。LDAP能夠提供用戶驗(yàn)證服務(wù);通過將成員身份表示為特定應(yīng)用程序的角色,它有助于應(yīng)用程序進(jìn)行授權(quán)和訪問控制決策;它還也可以用來存儲(chǔ)用戶的偏好和特權(quán)信息。
微軟Active Directory提供了LDAP接口,它可以連接到Windows特定的用戶數(shù)據(jù),而Active Directory和Active Directory應(yīng)用程序模式(ADAM)都被應(yīng)用程序作為用戶信息的主要數(shù)據(jù)存儲(chǔ)區(qū)。用戶目錄服務(wù)其他的選項(xiàng)還包括OpenLDAP項(xiàng)目、企業(yè)軟件(如IBM Lotus Domino和Novell的e-Directory),它們往往通過使用LDAP進(jìn)行擴(kuò)展。
確保LDAP的安全
為了保證LDAP的安全,你需要對(duì)其進(jìn)行一次初步的風(fēng)險(xiǎn)評(píng)估,從而獲得它在特定應(yīng)用環(huán)境中的使用情況。如果該協(xié)議用于驗(yàn)證或訪問控制決策,那么一些潛在的威脅必須得到解決。在這種情況下,頭號(hào)威脅包括LDAP通訊截取、用戶證書的泄露、高級(jí)權(quán)級(jí)被匿名或普通用戶所濫用,以及對(duì)LDAP數(shù)據(jù)過分依賴而導(dǎo)致的錯(cuò)誤。
有一些方法可以用來強(qiáng)化LDAP的安裝,從而防御來自這些方面的威脅。首先,所有的LDAP連接應(yīng)限于僅在安全的傳輸層(通常是SSL)上使用,以防止證書被攔截。微軟還通過包含客戶端和服務(wù)器的完整配置選項(xiàng)來支持對(duì)LDAP查詢和響應(yīng)的加密。
不過,傳輸層加密并沒有嚴(yán)格的服務(wù)器證書為客戶端的相關(guān)政策進(jìn)行驗(yàn)證,所以還不足以保護(hù)證書被 “中間人”攻擊盜取。LDAP身份驗(yàn)證可以使用包括向服務(wù)器明文提交用戶憑據(jù)、摘要式身份驗(yàn)證、Kerberos或挑戰(zhàn)-應(yīng)答在內(nèi)的多種認(rèn)證機(jī)制。建議使用Kerberos或challenge-response機(jī)制,特別是在不支持傳輸層加密的時(shí)候。
此外,如果LDAP的用戶密碼存儲(chǔ)在數(shù)據(jù)存儲(chǔ)區(qū)里(通常已對(duì)密碼進(jìn)行哈希處理),如果權(quán)限設(shè)置的不正確,那么密碼可以被LDAP目錄中的任何人所檢索到。而實(shí)際上只有具備相應(yīng)權(quán)限的應(yīng)用程序才能被允許查詢此值,但也不能訪問匿名的或普通用戶的身份資料。
如果你安裝了一個(gè)專用的LDAP,不打算提供給最終用戶使用;或者,你所有的用戶都在Active Directory這樣單一認(rèn)證平臺(tái)上,那么你應(yīng)該考慮禁用匿名綁定到LDAP目錄。不這樣做會(huì)導(dǎo)致信息泄露,包括用戶信息;而在Active Directory下,一些有關(guān)數(shù)據(jù)存儲(chǔ)的基本配置信息也會(huì)泄露。
當(dāng)應(yīng)用程序?yàn)榱税切└鷳?yīng)用程序特定功能相關(guān)的數(shù)據(jù)域而對(duì)LDAP架構(gòu)進(jìn)行擴(kuò)展時(shí),用于訪問LDAP的應(yīng)用程序ID應(yīng)該被加入到一個(gè)訪問組中去。此訪問組有權(quán)查詢特定領(lǐng)域和拒絕其他用戶和組織的訪問。
有兩個(gè)和目錄結(jié)構(gòu)和完整性相關(guān)的安全風(fēng)險(xiǎn),為了解決這一問題需要應(yīng)用程序組和基礎(chǔ)設(shè)施安全專家進(jìn)行協(xié)作。在這些情況下,整個(gè)LDAP使用團(tuán)隊(duì)需要一個(gè)審查過程和準(zhǔn)則集。第一個(gè)問題是LDAP注入,類似SQL注入的應(yīng)用層漏洞。如果程序接受用戶輸入,并直接連接LDAP查詢,那么LDAP就可能存在該漏洞。
第二個(gè)問題是使用LDAP的訪問控制決策,而不是使用用戶身份、組成員身份和屬性檢索。LDAP的用戶入口在向用戶闡述訪問控制決策時(shí),還應(yīng)該明確指出這個(gè)問題。開發(fā)人員應(yīng)該保持訪問控制列表對(duì)應(yīng)用程序配置數(shù)據(jù)而言是本地的,并利用LDAP來識(shí)別用戶和組成員身份,從而提供非安全用戶身份的相關(guān)信息。
警示:當(dāng)某個(gè)目錄服務(wù)只能供兩個(gè)應(yīng)用程序使用時(shí),這些資源往往不斷成熟,從而為重要的應(yīng)用程序承擔(dān)更多的責(zé)任,并發(fā)揮關(guān)鍵的安全功能。因此,最好在部署的時(shí)候就設(shè)計(jì)一些安全控制,而不是在應(yīng)用程序破壞后亡羊補(bǔ)牢。


