大鸡巴在线草观看黄色片,国产精品你懂得在线观看,黄色录像日本女人吃大屌,在线观看国产h成人网站

?
炙手可熱的MongoDB,安全嗎?
作者:思成 發布時間:2017-12-31

MongoDB是10gen公司研發的面向文檔的開源NoSQL數據庫系統,用C++語言編寫。MongoDB憑借簡單的部署方式,高效的擴展能力、多樣化的語言接口,并借著云蓬勃發展的勢頭,一度在全球數據庫市場占據第四名。

01.jpg

安全問題綜述

作為目前使用最廣泛的Nosql數據庫類型,MongoDB短時間內能夠取得如此巨大的市場成功,內因在于其上述突出的特性。但正所謂成也風云,敗也風云,這些特性同時也給MongoDB帶來了一定的安全風險。大致上,mongodb 的安全問題可以分為三個部分:

默認配置安全問題

本身安全問題

WEB安全問題

1、默認配置安全問題

默認配置問題是MongoDB當前最為突出的安全問題。2016年底,MongoDB勒索事件在全球范圍內持續發酵,主因在于在默認部署情況下,MongoDB無需身份驗證,即可登錄,不法分子只要在互聯網上發現MongoDB的地址和端口就可以通過工具直接訪問MongoDB,并擁有MongoDB的全部權限,從而進行任意操作。之所以會如此設計,原因在于:

1. MongoDB默認通過最簡單部署方式,最大限度提高運行速度,以在虛擬機(低配機)上運行而定制的,并未充分考慮MongoDB的安全性。

2. MongoDB官方文檔,如針對身份驗證,傳輸加密,網絡配置的文檔、指南并不規范,容易誤導MongoDB管理員。

3. 一些MongoDB環境是為了單一項目或者是測試環境搭建,搭建者并不關心MongoDB的安全問題。

上述原因最終會導致互聯網上出現大量完全開放且脆弱的MongoDB。據調查,截止當前,我國互聯網上易被發現的MongoDB有7281個,其中部分仍可隨意登錄。要解決上述問題就需要對MongoDB進行合理配置,其中,進一步配置的不僅是身份驗證和網絡控制,還有更多可能造成安全隱患的部分。

1)啟動訪問控制并強制進行身份驗證

默認配置下,MongoDB不需要進行身份驗證即可登錄。在MongoDB部署上啟用訪問控制會強制進行身份驗證,根據當前用戶實際權限判斷后續操作是否被允許。使用auth參數可以開啟MongoDB的強制身份驗證,為保證auth的真正生效,需要同時在user中配置用戶名和密碼信息。開啟auth能有效杜絕網上非法用戶惡意訪問和非法操作行為,保護MongoDB中的數據安全。此處可以通過類似防火墻的身份驗證,僅允許某些特定用戶通過,防止非法訪問行為。

2)限制網絡訪問

默認MongoDB允許任意地址訪問,勒索事件中的MongoDB除了沒有設置用戶密碼外,同樣也沒有限制可信網絡訪問。為了確保MongoDB在受信任的網絡環境中運行,需要限制MongoDB實例偵聽傳入連接的接口,僅允許受信任的客戶端訪問MongoDB實例。而限制外網的非法訪問需要通過三個參數進行合理關閉:

通過-bind_ip限定可以訪問的ip;

通過-port設置MongoDB的端口(不要使用默認的27017);

通過-nohttpinterface 取消MongoDB的WEB管理頁面。很多MongoDB用戶不知道這個WEB管理頁面,該頁面無需數據庫賬號密碼即可完成登錄,從而查詢一些MongoDB的敏感信息;

關閉rest參數。該參數若開啟,上面的web頁面就可以直接對數據庫進行更多操作。即使開啟了強制身份驗證,該WEB管理頁面仍無需身份驗證即可登錄,所以一定要關閉rest并封死28017端口。

數據庫防火墻能夠對不可信IP訪問進行封堵;對web端口(28017)進行部分IP禁用;對27017端口進行隱藏,防止網絡端對MongoDB的非法訪問。

3)啟用加密通訊

MongoDB的網絡通訊默認采用明文方式。在身份驗證部分雖然采用了類似MySQL的挑戰的方式進行認證(密碼不會以hash形式直接在包中出現),但還是會暴露使用指紋加密的信息,如下圖:

02.jpg

一般會話則完全是明文信息,可能被不法分子竊聽、篡改和中間人攻擊:

03.jpg

明文傳輸的會話信息容易被竊取,啟用SSL可以防止網絡竊聽、篡改和中間人攻擊,這在一定程度會提高通訊安全。該啟動項不僅支持客戶端和服務器之間的通訊加密,也支持服務器之間的通訊加密。

4)加密和數據保護

默認情況下MongoDB中的數據以明文形式存儲。從3.2版本開始MongoDB默認使用具備加密能力的WiredTiger存儲引擎。MongoDB增加了額外的安全層,需要數據庫身份驗證才可以訪問加密內容。支持openssl庫提供的多種加密算法,默認使用AES-256的cbc模式可選GCM模式或FIPS模式。

5)配置基于角色的訪問控制    

MongoDB默認情況下沒有用戶和密碼,管理員若在admin庫中的user里添加用戶和密碼,則其中的用戶可以訪問數據庫下所有實例中存儲的內容。同樣,在每個分庫的user中直接添加用戶,效果一樣,但此時默認用戶的權限會過大。很多業務并不需要整個實例乃至整個數據庫的訪問權限,權限過大可能給數據庫帶來安全隱患。

采用基于角色的訪問控制(RBAC)管理對MongoDB系統的訪問,向用戶授予一個或多個角色,保證用戶有必要的數據庫資源和操作使用權限。創建各種不同權限的角色,成為解決MongoDB用戶權限過大的唯一方式,如此一來會讓創建角色變的繁雜。此處可以采用類似數據庫防火墻的權限控制加以進一步控制。

6)審核數據庫操作

MongoDB默認不開啟審計能力,一旦開啟,可對部分操作進行審計,跟蹤數據庫配置和數據的訪問和更改。MongoDB商業版支持一個系統審計工具,可在MongoDB實例上記錄系統事件(例如用戶操作,連接事件)。審計記錄允許管理員事后進行取證分析,利用數據庫審計產品也可以做類似的事情。

7)安裝MongoDB使用專用賬號

MongoDB某些與操作系統交互的行為對路徑缺乏很好的控制,部分安裝者為了省事,直接使用root賬號安裝,這在某些特定情況下會危害到操作系統上文件的安全,建議不要采取這種安裝方式。

8)禁用不使用的語言

MongoDB支持在服務器端執行JavaScript、mapReduce、 eval和$where等。如果能確定不使用這些代碼進行操作,請禁用,以避免MongoDB被攻擊入侵(后面web會細說)。具體做法是通過- noscripting選項禁用服務器端的腳本功能。

小結

MongoDB目標是實現快速簡單部署,所以存在很多安全隱患。解決配置安全問題重點在于:1、網絡隱藏,防止惡意訪問;

2、加密,保護信息安全;

3、合適的權限,防止越權操作;

4、禁用無用功能,防止某些攻擊。

安全應對

滿足上述安全防護措施,可以使用專業的產品和技術:

針對配置參數,使用數據庫漏掃產品進行檢查,生成安全情況報告,指導并幫助用戶對MongoDB進行安全加固。

數據庫防火墻產品可以幫助MongoDB實現網絡隱身效果,并抵御某些利用javascrip發起的數據庫攻擊。

數據庫審計產品為非企業版MongoDB提供更全面審計。

數據庫加密產品幫助MongoDB用戶享受更多樣性的加密方式,確保數據密文存儲。

2、本身安全問題

根據CVE列表,MongoDB從2009年面世至今一共發現了13個漏洞,這些漏洞主要分布在2.0-2.6版本之間(MongoDB最高版本已經到3.4系列),漏洞主要分為以下三類:

敏感數據泄露

越權操作

登錄調用的函數存在緩沖區溢出漏洞,會導致服務宕機

安全應對

1、通過升級3.0以上版本(目前尚未發現3.0以上版本有CVE漏洞)來解決自身安全問題。

2、如果上述漏洞重現,可以利用數據庫防火墻虛擬補丁做有利補充。

3、Web安全問題

乍看起來,Web安全和MongoDB關系不大,但恰恰相反。鑒于MongoDB的部署環境和使用領域,導致從Web向MongoDB發動的攻擊才是MongoDB面臨的最大威脅。這部分攻擊大體分成兩類:1、rest和CSRF聯合攻擊;2、注入攻擊。

1)Rest和CSRF聯合攻擊

Rest前文已介紹,MongoDB自帶的http REST API。默認情況下MongoDB會在28017開啟一個http端口提供REST服務,直接通過特定格式的URL獲得數據庫中的大部分信息或利用admin.$cmd執行一些數據庫級命令。

Rest的問題是訪問數據庫無需身份驗證(開啟身份強制驗證也沒用),并能進行一定操作。CSRF(Cross-site request forgery)則是一種WEB攻擊手段,攻擊者盜用管理員身份,提交自己的命令。

2)注入攻擊

注入攻擊是一種寬泛說法,根據不同的語言注入有不同方式,針對MongoDB的注入攻擊大體分成二種:解釋形語言注入和JavaScript注入。通過防火墻產品可以借助配置規則,過濾注入攻擊。

安全應對

針對第一種攻擊,可以利用數據庫漏掃產品檢查配置,發現REST API是否關閉,解決此類攻擊最簡單的辦法就是將其關閉。

通過數據庫防火墻產品,可以借助配置規則對注入攻擊進行過濾。

本文通過對MongoDB已知安全隱患進行分析,盡可能指出如何防控這些安全隱患,以期對MongoDB產品研發和應用提供一些安全應對思路。


?