提升 MongoDB 安全性的 10 個方法

pythontab發表於2014-01-30

MongoDB提供了一系列元件來提升資料的安全性。資料安全在MongoDB中是最重要的——因此它利用這些元件來減少曝光面。下面是10個可以用來改善你個人或雲中MongoDB伺服器安全的小提示。

1. 啟用auth — 即使在可信賴網路中部署MongoDB伺服器時啟用auth也是項好的安全實踐。當你的網路受攻擊時它能夠提供“深層防禦”。編輯配置檔案來啟用auth

1

auth = true

2.不要把生產環境的資料庫暴露在Internet上-限制對資料庫的物理訪問是安全性的非常重要的一個措施。如果沒有必要,就不要把生產環境的資料庫暴露在Internet上。如果攻擊者不能物理地連線到MongoDB伺服器這種情形大打折扣,那麼資料就不會比現在更安全。如果你把服務部署在亞馬遜web服務(AWS)上,那麼你應當把資料庫部署在虛擬私有云(VPC)的私有子網裡。有關這方面的更多資訊請閱讀部落格文章"在私有云(VPC)裡部署MongoDB"。

3.使用防火牆-防火牆的使用可以限制允許哪些實體連線MongoDB伺服器。最佳的措施就是僅僅允許你自己的應用伺服器訪問資料庫。如果你把無法部署在亞馬遜web服務(AWS)上,你可以使用"安全組“功能限制訪問許可權。如果你把服務部署在不支援防火牆功能的提供商的主機上,那麼你可以親自使用"iptables"對伺服器進行簡單的配置。請參考mongodb的文件,實現對你所面對的具體環境配置iptables。

4.使用key檔案建立複製伺服器叢集-指定共享的key檔案,啟用複製叢集的MongoDB例項之間的通訊。如下給配置檔案中增加keyfile引數。複製叢集裡的所有機器上的這個檔案的內容必須相同。

1

keyFile = /srv/mongodb/keyfile

5.禁止HTTP狀態介面- 預設情況下Mongodb在埠28017上執行http介面,以提供“主”狀態頁面。在生產環境下推薦不要使用此介面,最好禁止這個介面。使用"nohttpinterface"配置設定可以禁止這個http介面。

1

nohttpinterface = true

6.禁止REST介面-在生產環境下建議不要啟用MongoDB的REST介面。這個介面不支援任何認證。預設情況下這個介面是關閉的。如果你使用的"rest"配置選項開啟了這個介面,那麼你應該在生產系統中關閉它。

1

rest = false

7.配置bind_ip- 如果你的系統使用的多個網路介面,那麼你可以使用"bind_ip"選項限制mongodb伺服器只在與該配置項關聯的介面上偵聽。預設情況下mongoDB繫結所有的介面。

1

bind_ip = 10.10.0.25,10.10.0.26

8.啟用SSL- 如果你沒有使用SSL,那麼你在MongoDB客戶端和MongoDB伺服器之間的傳輸的資料就是明文的,容易受到竊聽、篡改和“中間人”攻擊。如果你是透過像internet這樣的非安全網路連線到MongoDB伺服器,那麼啟用SSL就顯得非常重要。

9.基於角色進行認證- MongoDB支援基於角色的認證,這樣你就可以對每個使用者可以執行的動作進行細粒度的控制。使用基於角色的認證組建可以限制對資料庫的訪問,而不是所有的使用者都是管理員。更多的資訊請參考有關角色的文件。 


10.企業級MongoDB與kerberos- 企業級mongodb繼承了kerberos認證。有關這方面的更多資訊請參考mongodb文件。基於使用者名稱/密碼的系統本身就是不安全的,因此如果可能的話,請使用基於kerberos的認證。


相關文章