安華金和全面適配國(guó)產(chǎn)化操作系統(tǒng)及芯片CPU
數(shù)據(jù)安全治理關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫(kù)脫敏技術(shù)詳解
數(shù)據(jù)安全治理之API監(jiān)測(cè)系統(tǒng) ,解決API接口安全問(wèn)題【安華金和】
新一代數(shù)據(jù)庫(kù)脫敏技術(shù),為敏感數(shù)據(jù)建立保護(hù)盾!
數(shù)據(jù)庫(kù)脫敏系統(tǒng)與金融行業(yè)案例解讀
數(shù)據(jù)安全治理建設(shè)思路的著力點(diǎn)——數(shù)據(jù)安全咨詢服務(wù)【安華金和】
數(shù)據(jù)庫(kù)防火墻功能有哪些?-數(shù)據(jù)安全-安華金和
數(shù)據(jù)安全關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫(kù)脫敏技術(shù)詳解【安華金和】
中國(guó)數(shù)據(jù)安全治理落地指導(dǎo)書(shū)籍《數(shù)據(jù)安全治理白皮書(shū)5.0》正式發(fā)布(附下載)
MongoDB是10gen公司研發(fā)的面向文檔的開(kāi)源NoSQL數(shù)據(jù)庫(kù)系統(tǒng),用C++語(yǔ)言編寫(xiě)。MongoDB憑借簡(jiǎn)單的部署方式,高效的擴(kuò)展能力、多樣化的語(yǔ)言接口,并借著云蓬勃發(fā)展的勢(shì)頭,一度在全球數(shù)據(jù)庫(kù)市場(chǎng)占據(jù)第四名。
作為目前使用最廣泛的Nosql數(shù)據(jù)庫(kù)類型,MongoDB短時(shí)間內(nèi)能夠取得如此巨大的市場(chǎng)成功,內(nèi)因在于其上述突出的特性。但正所謂成也風(fēng)云,敗也風(fēng)云,這些特性同時(shí)也給MongoDB帶來(lái)了一定的安全風(fēng)險(xiǎn)。大致上,mongodb 的安全問(wèn)題可以分為三個(gè)部分:
默認(rèn)配置安全問(wèn)題
本身安全問(wèn)題
WEB安全問(wèn)題
默認(rèn)配置問(wèn)題是MongoDB當(dāng)前最為突出的安全問(wèn)題。2016年底,MongoDB勒索事件在全球范圍內(nèi)持續(xù)發(fā)酵,主因在于在默認(rèn)部署情況下,MongoDB無(wú)需身份驗(yàn)證,即可登錄,不法分子只要在互聯(lián)網(wǎng)上發(fā)現(xiàn)MongoDB的地址和端口就可以通過(guò)工具直接訪問(wèn)MongoDB,并擁有MongoDB的全部權(quán)限,從而進(jìn)行任意操作。之所以會(huì)如此設(shè)計(jì),原因在于:
1. MongoDB默認(rèn)通過(guò)最簡(jiǎn)單部署方式,最大限度提高運(yùn)行速度,以在虛擬機(jī)(低配機(jī))上運(yùn)行而定制的,并未充分考慮MongoDB的安全性。
2. MongoDB官方文檔,如針對(duì)身份驗(yàn)證,傳輸加密,網(wǎng)絡(luò)配置的文檔、指南并不規(guī)范,容易誤導(dǎo)MongoDB管理員。
3. 一些MongoDB環(huán)境是為了單一項(xiàng)目或者是測(cè)試環(huán)境搭建,搭建者并不關(guān)心MongoDB的安全問(wèn)題。
上述原因最終會(huì)導(dǎo)致互聯(lián)網(wǎng)上出現(xiàn)大量完全開(kāi)放且脆弱的MongoDB。據(jù)調(diào)查,截止當(dāng)前,我國(guó)互聯(lián)網(wǎng)上易被發(fā)現(xiàn)的MongoDB有7281個(gè),其中部分仍可隨意登錄。要解決上述問(wèn)題就需要對(duì)MongoDB進(jìn)行合理配置,其中,進(jìn)一步配置的不僅是身份驗(yàn)證和網(wǎng)絡(luò)控制,還有更多可能造成安全隱患的部分。
1)啟動(dòng)訪問(wèn)控制并強(qiáng)制進(jìn)行身份驗(yàn)證
默認(rèn)配置下,MongoDB不需要進(jìn)行身份驗(yàn)證即可登錄。在MongoDB部署上啟用訪問(wèn)控制會(huì)強(qiáng)制進(jìn)行身份驗(yàn)證,根據(jù)當(dāng)前用戶實(shí)際權(quán)限判斷后續(xù)操作是否被允許。使用auth參數(shù)可以開(kāi)啟MongoDB的強(qiáng)制身份驗(yàn)證,為保證auth的真正生效,需要同時(shí)在user中配置用戶名和密碼信息。開(kāi)啟auth能有效杜絕網(wǎng)上非法用戶惡意訪問(wèn)和非法操作行為,保護(hù)MongoDB中的數(shù)據(jù)安全。此處可以通過(guò)類似防火墻的身份驗(yàn)證,僅允許某些特定用戶通過(guò),防止非法訪問(wèn)行為。
2)限制網(wǎng)絡(luò)訪問(wèn)
默認(rèn)MongoDB允許任意地址訪問(wèn),勒索事件中的MongoDB除了沒(méi)有設(shè)置用戶密碼外,同樣也沒(méi)有限制可信網(wǎng)絡(luò)訪問(wèn)。為了確保MongoDB在受信任的網(wǎng)絡(luò)環(huán)境中運(yùn)行,需要限制MongoDB實(shí)例偵聽(tīng)傳入連接的接口,僅允許受信任的客戶端訪問(wèn)MongoDB實(shí)例。而限制外網(wǎng)的非法訪問(wèn)需要通過(guò)三個(gè)參數(shù)進(jìn)行合理關(guān)閉:
通過(guò)-bind_ip限定可以訪問(wèn)的ip;
通過(guò)-port設(shè)置MongoDB的端口(不要使用默認(rèn)的27017);
通過(guò)-nohttpinterface 取消MongoDB的WEB管理頁(yè)面。很多MongoDB用戶不知道這個(gè)WEB管理頁(yè)面,該頁(yè)面無(wú)需數(shù)據(jù)庫(kù)賬號(hào)密碼即可完成登錄,從而查詢一些MongoDB的敏感信息;
關(guān)閉rest參數(shù)。該參數(shù)若開(kāi)啟,上面的web頁(yè)面就可以直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行更多操作。即使開(kāi)啟了強(qiáng)制身份驗(yàn)證,該WEB管理頁(yè)面仍無(wú)需身份驗(yàn)證即可登錄,所以一定要關(guān)閉rest并封死28017端口。
數(shù)據(jù)庫(kù)防火墻能夠?qū)Σ豢尚臝P訪問(wèn)進(jìn)行封堵;對(duì)web端口(28017)進(jìn)行部分IP禁用;對(duì)27017端口進(jìn)行隱藏,防止網(wǎng)絡(luò)端對(duì)MongoDB的非法訪問(wèn)。
3)啟用加密通訊
MongoDB的網(wǎng)絡(luò)通訊默認(rèn)采用明文方式。在身份驗(yàn)證部分雖然采用了類似MySQL的挑戰(zhàn)的方式進(jìn)行認(rèn)證(密碼不會(huì)以hash形式直接在包中出現(xiàn)),但還是會(huì)暴露使用指紋加密的信息,如下圖:
一般會(huì)話則完全是明文信息,可能被不法分子竊聽(tīng)、篡改和中間人攻擊:
明文傳輸?shù)臅?huì)話信息容易被竊取,啟用SSL可以防止網(wǎng)絡(luò)竊聽(tīng)、篡改和中間人攻擊,這在一定程度會(huì)提高通訊安全。該啟動(dòng)項(xiàng)不僅支持客戶端和服務(wù)器之間的通訊加密,也支持服務(wù)器之間的通訊加密。
4)加密和數(shù)據(jù)保護(hù)
默認(rèn)情況下MongoDB中的數(shù)據(jù)以明文形式存儲(chǔ)。從3.2版本開(kāi)始MongoDB默認(rèn)使用具備加密能力的WiredTiger存儲(chǔ)引擎。MongoDB增加了額外的安全層,需要數(shù)據(jù)庫(kù)身份驗(yàn)證才可以訪問(wèn)加密內(nèi)容。支持openssl庫(kù)提供的多種加密算法,默認(rèn)使用AES-256的cbc模式可選GCM模式或FIPS模式。
5)配置基于角色的訪問(wèn)控制
MongoDB默認(rèn)情況下沒(méi)有用戶和密碼,管理員若在admin庫(kù)中的user里添加用戶和密碼,則其中的用戶可以訪問(wèn)數(shù)據(jù)庫(kù)下所有實(shí)例中存儲(chǔ)的內(nèi)容。同樣,在每個(gè)分庫(kù)的user中直接添加用戶,效果一樣,但此時(shí)默認(rèn)用戶的權(quán)限會(huì)過(guò)大。很多業(yè)務(wù)并不需要整個(gè)實(shí)例乃至整個(gè)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限,權(quán)限過(guò)大可能給數(shù)據(jù)庫(kù)帶來(lái)安全隱患。
采用基于角色的訪問(wèn)控制(RBAC)管理對(duì)MongoDB系統(tǒng)的訪問(wèn),向用戶授予一個(gè)或多個(gè)角色,保證用戶有必要的數(shù)據(jù)庫(kù)資源和操作使用權(quán)限。創(chuàng)建各種不同權(quán)限的角色,成為解決MongoDB用戶權(quán)限過(guò)大的唯一方式,如此一來(lái)會(huì)讓創(chuàng)建角色變的繁雜。此處可以采用類似數(shù)據(jù)庫(kù)防火墻的權(quán)限控制加以進(jìn)一步控制。
6)審核數(shù)據(jù)庫(kù)操作
MongoDB默認(rèn)不開(kāi)啟審計(jì)能力,一旦開(kāi)啟,可對(duì)部分操作進(jìn)行審計(jì),跟蹤數(shù)據(jù)庫(kù)配置和數(shù)據(jù)的訪問(wèn)和更改。MongoDB商業(yè)版支持一個(gè)系統(tǒng)審計(jì)工具,可在MongoDB實(shí)例上記錄系統(tǒng)事件(例如用戶操作,連接事件)。審計(jì)記錄允許管理員事后進(jìn)行取證分析,利用數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品也可以做類似的事情。
7)安裝MongoDB使用專用賬號(hào)
MongoDB某些與操作系統(tǒng)交互的行為對(duì)路徑缺乏很好的控制,部分安裝者為了省事,直接使用root賬號(hào)安裝,這在某些特定情況下會(huì)危害到操作系統(tǒng)上文件的安全,建議不要采取這種安裝方式。
8)禁用不使用的語(yǔ)言
MongoDB支持在服務(wù)器端執(zhí)行JavaScript、mapReduce、 eval和$where等。如果能確定不使用這些代碼進(jìn)行操作,請(qǐng)禁用,以避免MongoDB被攻擊入侵(后面web會(huì)細(xì)說(shuō))。具體做法是通過(guò)- noscripting選項(xiàng)禁用服務(wù)器端的腳本功能。
小結(jié)
MongoDB目標(biāo)是實(shí)現(xiàn)快速簡(jiǎn)單部署,所以存在很多安全隱患。解決配置安全問(wèn)題重點(diǎn)在于:1、網(wǎng)絡(luò)隱藏,防止惡意訪問(wèn);
2、加密,保護(hù)信息安全;
3、合適的權(quán)限,防止越權(quán)操作;
4、禁用無(wú)用功能,防止某些攻擊。
安全應(yīng)對(duì)
滿足上述安全防護(hù)措施,可以使用專業(yè)的產(chǎn)品和技術(shù):
針對(duì)配置參數(shù),使用數(shù)據(jù)庫(kù)漏掃產(chǎn)品進(jìn)行檢查,生成安全情況報(bào)告,指導(dǎo)并幫助用戶對(duì)MongoDB進(jìn)行安全加固。
數(shù)據(jù)庫(kù)防火墻產(chǎn)品可以幫助MongoDB實(shí)現(xiàn)網(wǎng)絡(luò)隱身效果,并抵御某些利用javascrip發(fā)起的數(shù)據(jù)庫(kù)攻擊。
數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品為非企業(yè)版MongoDB提供更全面審計(jì)。
數(shù)據(jù)庫(kù)加密產(chǎn)品幫助MongoDB用戶享受更多樣性的加密方式,確保數(shù)據(jù)密文存儲(chǔ)。
根據(jù)CVE列表,MongoDB從2009年面世至今一共發(fā)現(xiàn)了13個(gè)漏洞,這些漏洞主要分布在2.0-2.6版本之間(MongoDB最高版本已經(jīng)到3.4系列),漏洞主要分為以下三類:
敏感數(shù)據(jù)泄露
越權(quán)操作
登錄調(diào)用的函數(shù)存在緩沖區(qū)溢出漏洞,會(huì)導(dǎo)致服務(wù)宕機(jī)
安全應(yīng)對(duì)
1、通過(guò)升級(jí)3.0以上版本(目前尚未發(fā)現(xiàn)3.0以上版本有CVE漏洞)來(lái)解決自身安全問(wèn)題。
2、如果上述漏洞重現(xiàn),可以利用數(shù)據(jù)庫(kù)防火墻虛擬補(bǔ)丁做有利補(bǔ)充。
乍看起來(lái),Web安全和MongoDB關(guān)系不大,但恰恰相反。鑒于MongoDB的部署環(huán)境和使用領(lǐng)域,導(dǎo)致從Web向MongoDB發(fā)動(dòng)的攻擊才是MongoDB面臨的最大威脅。這部分攻擊大體分成兩類:1、rest和CSRF聯(lián)合攻擊;2、注入攻擊。
1)Rest和CSRF聯(lián)合攻擊
Rest前文已介紹,MongoDB自帶的http REST API。默認(rèn)情況下MongoDB會(huì)在28017開(kāi)啟一個(gè)http端口提供REST服務(wù),直接通過(guò)特定格式的URL獲得數(shù)據(jù)庫(kù)中的大部分信息或利用admin.$cmd執(zhí)行一些數(shù)據(jù)庫(kù)級(jí)命令。
Rest的問(wèn)題是訪問(wèn)數(shù)據(jù)庫(kù)無(wú)需身份驗(yàn)證(開(kāi)啟身份強(qiáng)制驗(yàn)證也沒(méi)用),并能進(jìn)行一定操作。CSRF(Cross-site request forgery)則是一種WEB攻擊手段,攻擊者盜用管理員身份,提交自己的命令。
2)注入攻擊
注入攻擊是一種寬泛說(shuō)法,根據(jù)不同的語(yǔ)言注入有不同方式,針對(duì)MongoDB的注入攻擊大體分成二種:解釋形語(yǔ)言注入和JavaScript注入。通過(guò)防火墻產(chǎn)品可以借助配置規(guī)則,過(guò)濾注入攻擊。
安全應(yīng)對(duì)
針對(duì)第一種攻擊,可以利用數(shù)據(jù)庫(kù)漏掃產(chǎn)品檢查配置,發(fā)現(xiàn)REST API是否關(guān)閉,解決此類攻擊最簡(jiǎn)單的辦法就是將其關(guān)閉。
通過(guò)數(shù)據(jù)庫(kù)防火墻產(chǎn)品,可以借助配置規(guī)則對(duì)注入攻擊進(jìn)行過(guò)濾。
本文通過(guò)對(duì)MongoDB已知安全隱患進(jìn)行分析,盡可能指出如何防控這些安全隱患,以期對(duì)MongoDB產(chǎn)品研發(fā)和應(yīng)用提供一些安全應(yīng)對(duì)思路。
試用申請(qǐng)
在線咨詢
咨詢電話
TOP