- 啓用安全認證
請開啓安全認證,生成root用戶和數據庫對應的readWrite用戶。 - 不要把生產環境的數據庫暴露在互聯網上
- 使用防火牆
防火牆的使用可以限制允許哪些實體連接MongoDB服務器。最佳的措施就是僅僅允許你自己的應用服務器訪問數據庫。如果你把服務部署在亞馬遜web服務 (AWS)上,你可以使用"安全組“功能限制訪問權限。如果你把服務部署在不支持防火牆功能的提供商的主機上,那麼你可以親自使用"iptables"對 服務器進行簡單的配置。請參考mongodb的文檔,實現對你所面對的具體環境配置iptables。 - 使用key文件建立複製服務器集羣
指定共享的key文件,啓用複製集羣的MongoDB實例之間的通信。如下給配置文件中增加keyfile參數。複製集羣裏的所有機器上的這個文件的內容必須相同。 - 禁止HTTP狀態接口
默認情況下Mongodb在端口28017上運行http接口,以提供“主”狀態頁面。在生產環境下推薦不要使用此接口,最好禁止這個接口。使用"nohttpinterface"配置設置可以禁止這個http接口。 - 禁止REST接口
在生產環境下建議不要啓用MongoDB的REST接口。這個接口不支持任何認證。默認情況下這個接口是關閉的。如果你使用的"rest"配置選項打開了這個接口,那麼你應該在生產系統中關閉它。 - 配置bindip
如果你的系統使用的多個網絡接口,那麼你可以使用"bindip"選項限制mongodb服務器只在與該配置項關聯的接口上偵聽。默認情況下mongoDB綁定所有的接口。 - 啓用SSL
如果你沒有使用SSL,那麼你在MongoDB客戶端和MongoDB服務器之間的傳輸的數據就是明文的,容易受到竊聽、篡改和“中間人”攻擊。如果你是通過像internet這樣的非安全網絡連接到MongoDB服務器,那麼啓用SSL就顯得非常重要。 - 基於角色進行認證
MongoDB支持基於角色的認證,這樣你就可以對每個用戶可以執行的動作進行細粒度的控制。使用基於角色的認證組建可以限制對數據庫的訪問,而不是所有的用戶都是管理員。更多的信息請參考有關角色的文檔。 - 企業級MongoDB與kerberos
企業級MongoDB繼承了kerberos認證。有關這方面的更多信息請參考mongodb文檔。基於用戶名/密碼的系統本身就是不安全的,因此如果可能的話,請使用基於kerberos的認證。 - baby獨家建議
- 現在很多安全廠商都支持安全組的概念,建議在生成環境下給MongoDB服務器加個只允許內網訪問的安全組即可。