2011-11-27 51 views
8

除了「一般」服務器的安全最佳實踐之外,我正在爲MongoDB服務器尋找「安全最佳實踐」。你能指點我有用的資源嗎?MongoDB安全

+0

有下面的答案出色的信息。我經常發現問題是「沒有建設性」,如果沒有那些在這裏彙總的人的幫助,我就不會輕易找到這些信息。我想說「當你問的問題或答案得到解決時,不要氣餒。」我認爲有很多過度熱忱的封閉和閉合。我回答了很多'bash'問題,並且可以告訴你從來沒有*最好的*方式/答案,但是這些問題從未關閉。 –

回答

5

有兩種方法:

  1. 安裝MongoDB的沒有可信的環境--auth選項。通常它是應用程序,數據庫安裝的本地網絡。此網絡外的服務器無法訪問mongodb和其他資源。
  2. 安裝mongodb --auth選項在mongodb端口未被防火牆阻止且每個人都可以訪問的環境中。

有關安全的更多詳細信息,您可以找到here

7

安全問題總是特定於應用程序。它是不可能以一般方式完全回答這個問題的。

通常情況下,依賴NOSQL數據庫的應用程序易受OWASP A4 - Insecure Direct Object Reference的影響。值得注意的是,_ID的值不是加密的隨機數,這個值很大程度上取決於時間戳,因此攻擊者很容易猜到這些值。

另一個常見問題是CWE-602 - client side enforcement of server side security。客戶端永遠不會被信任,如果他們直接與數據庫交互,那麼他們擁有數據庫期間

2

假設你有一個MongoDB的

  • 服務器只享有人權的Web服務進行交互,你需要定期登錄,讓使用會話的客戶端服務器對訪問權限。那樣你就應該避免權利僞造。

  • 過濾所有的客戶請求。這很容易,Mongo請求是一個jSON,你可以限制jSON到specific schema以及超載與限制/限制的請求。請注意,服務器將使用會話的變量重載請求。這既可以用於訪問限制,也可以避免客戶端發送沉重的請求,從而使系統過載。

  • 過濾掉結果「修剪樹」。這可能是最後一次檢查,例如,如果您同意返回用戶的姓名而不是他的ID。這就是說,這更可能比篩選客戶端請求多一步。

  • 使用https安全連接。這將確保您的客戶與正確的服務器進行交談,同時確保您的服務器仍然與同一客戶交談(理論上不會發生劫持)。

  • 避免將任何信息堆疊在一起,儘量使用模型以這種方式獲得清晰,但也避免將敏感信息存儲在錯誤的地方。

10

基本上什麼需要做的是

啓用驗證

打開MongoDB的外殼

use admin 
db.addUser("admin","adminpassword") 

(注意:您啓用身份驗證之前,您將需要一個管理員用戶,否則你將無法訪問數據)。

現在編輯MongoDB的配置文件 sudo vi /etc/mongodb.conf

並取消auth=true。保存並重啓蒙戈DB sudo service mongodb restart

的MongoDB綁定到受信任的網絡或機器

編輯MongoDB的配置文件,並添加bind_ip = 127.0.0.1或逗號分隔的IP地址,將能夠連接到MongoDB的列表。然後重啓。

欲瞭解更多信息,你可以找到一個指南做這些在我的網站here

+0

在我看來,這個回答實際上是非常瀕臨的;這是自我宣傳,並沒有真正包括任何有價值的信息在這個網站上。最後,你忽略了包括所要求的披露,即它是你的網站鏈接。我在這裏補充說明。 **請不要忘記將來的披露**。 –

+0

當然,我會在下次再做。 – Manu