提升 MongoDB 安全性的10個(gè)方法

2016-11-02 15:02:22 來源:三聯(lián)教程作者:sou7 人氣: 次閱讀 300 條評(píng)論

  MongoDB提供了一系列組件來提升數(shù)據(jù)的安全性。數(shù)據(jù)安全在MongoDB中是最重要的——因此它利用這些組件來減少曝光面。下面是10個(gè)可以用來改善你個(gè)人或云中MongoDB服務(wù)器安全的小提示?! ?.啟用auth...

  MongoDB提供了一系列組件來提升數(shù)據(jù)的安全性。數(shù)據(jù)安全在MongoDB中是最重要的——因此它利用這些組件來減少曝光面。下面是10個(gè)可以用來改善你個(gè)人或云中MongoDB服務(wù)器安全的小提示。

  1. 啟用auth — 即使在可信賴網(wǎng)絡(luò)中部署MongoDB服務(wù)器時(shí)啟用auth也是項(xiàng)好的安全實(shí)踐。當(dāng)你的網(wǎng)絡(luò)受攻擊時(shí)它能夠提供“深層防御”。編輯配置文件來啟用auth

  1

  auth = true

  2.不要把生產(chǎn)環(huán)境的數(shù)據(jù)庫暴露在Internet上-限制對(duì)數(shù)據(jù)庫的物理訪問是安全性的非常重要的一個(gè)措施。如果沒有必要,就不要把生產(chǎn)環(huán)境的數(shù)據(jù)庫暴露在Internet上。如果攻擊者不能物理地連接到MongoDB服務(wù)器這種情形大打折扣,那么數(shù)據(jù)就不會(huì)比現(xiàn)在更安全。如果你把服務(wù)部署在亞馬遜web服務(wù)(AWS)上,那么你應(yīng)當(dāng)把數(shù)據(jù)庫部署在虛擬私有云(VPC)的私有子網(wǎng)里。有關(guān)這方面的更多信息請(qǐng)閱讀博客文章"在私有云(VPC)里部署MongoDB"。

  3.使用防火墻-防火墻的使用可以限制允許哪些實(shí)體連接MongoDB服務(wù)器。最佳的措施就是僅僅允許你自己的應(yīng)用服務(wù)器訪問數(shù)據(jù)庫。如果你把無法部署在亞馬遜web服務(wù)(AWS)上,你可以使用"安全組“功能限制訪問權(quán)限。如果你把服務(wù)部署在不支持防火墻功能的提供商的主機(jī)上,那么你可以親自使用"iptables"對(duì)服務(wù)器進(jìn)行簡單的配置。請(qǐng)參考mongodb的文檔,實(shí)現(xiàn)對(duì)你所面對(duì)的具體環(huán)境配置iptables。

  4.使用key文件建立復(fù)制服務(wù)器集群-指定共享的key文件,啟用復(fù)制集群的MongoDB實(shí)例之間的通信。如下給配置文件中增加keyfile參數(shù)。復(fù)制集群里的所有機(jī)器上的這個(gè)文件的內(nèi)容必須相同。

  1

  keyFile = /srv/mongodb/keyfile

  5.禁止HTTP狀態(tài)接口- 默認(rèn)情況下Mongodb在端口28017上運(yùn)行http接口,以提供“主”狀態(tài)頁面。在生產(chǎn)環(huán)境下推薦不要使用此接口,最好禁止這個(gè)接口。使用"nohttpinterface"配置設(shè)置可以禁止這個(gè)http接口。

  1

  nohttpinterface = true

  6.禁止REST接口-在生產(chǎn)環(huán)境下建議不要啟用MongoDB的REST接口。這個(gè)接口不支持任何認(rèn)證。默認(rèn)情況下這個(gè)接口是關(guān)閉的。如果你使用的"rest"配置選項(xiàng)打開了這個(gè)接口,那么你應(yīng)該在生產(chǎn)系統(tǒng)中關(guān)閉它。

  1

  rest = false

  7.配置bind_ip- 如果你的系統(tǒng)使用的多個(gè)網(wǎng)絡(luò)接口,那么你可以使用"bind_ip"選項(xiàng)限制mongodb服務(wù)器只在與該配置項(xiàng)關(guān)聯(lián)的接口上偵聽。默認(rèn)情況下mongoDB綁定所有的接口。

  1

  bind_ip = 10.10.0.25,10.10.0.26

  8.啟用SSL- 如果你沒有使用SSL,那么你在MongoDB客戶端和MongoDB服務(wù)器之間的傳輸?shù)臄?shù)據(jù)就是明文的,容易受到竊聽、篡改和“中間人”攻擊。如果你是通過像internet這樣的非安全網(wǎng)絡(luò)連接到MongoDB服務(wù)器,那么啟用SSL就顯得非常重要。

  9.基于角色進(jìn)行認(rèn)證- MongoDB支持基于角色的認(rèn)證,這樣你就可以對(duì)每個(gè)用戶可以執(zhí)行的動(dòng)作進(jìn)行細(xì)粒度的控制。使用基于角色的認(rèn)證組建可以限制對(duì)數(shù)據(jù)庫的訪問,而不是所有的用戶都是管理員。更多的信息請(qǐng)參考有關(guān)角色的文檔。

  10.企業(yè)級(jí)MongoDB與kerberos- 企業(yè)級(jí)mongodb繼承了kerberos認(rèn)證。有關(guān)這方面的更多信息請(qǐng)參考mongodb文檔?;谟脩裘?密碼的系統(tǒng)本身就是不安全的,因此如果可能的話,請(qǐng)使用基于kerberos的認(rèn)證。