天天看點

Mongodb安全防護

1.Mongodb未授權通路

描述

MongoDB 是一個基于分布式檔案存儲的資料庫。預設情況下啟動服務存在未授權通路風險,使用者可以遠端通路資料庫,無需認證連接配接資料庫并對資料庫進行任意操作,存在嚴重的資料洩露風險。

加強建議

可以使用以下方法修複:

1.限制mongodb監聽範圍: 打開配置檔案

<mongod.conf>

,設定

bind_ip=<ip>

,如果配置檔案為yaml格式,則在net選項下設定

bindIp: <ip1,ip2...>

;其中

<ip>,<ip1,ip2...>

為指定的一個或多個IP位址,如mongodb隻需在本地使用,則建議綁定本地ip127.0.0.1;

2.開啟登入認證并增加認證使用者: 若還沒有使用者,則登入mongodb用戶端,建立新使用者及密碼。然後打開配置檔案

<mongod.conf>

,設定auth=true,如果配置檔案為yaml格式,則在security選項下設定authorization:enabled;

3. 設定完成後重新開機mongodb服務。

2.確定将新條目附加到日志檔案的末尾

預設情況下,新的日志條目将在重新啟動mongod或Mongols服務後覆寫舊條目。 啟用systemLog.logAppend設定會導緻新條目附加到日志檔案的末尾,而不是在mongos或mongod執行個體重新啟動時覆寫日志的現有内容。 允許舊條目被新條目覆寫而不是将新條目附加到日志末尾可能會破壞出于各種目的所需的舊日志資料。

編輯配置檔案

<conf_path>/mongod.conf

将systemLog下的logAppend設定為true。

3.確定日志記錄捕獲盡可能多的資訊

SystemLog.quiet選項停止記錄資訊,例如:

?連接配接事件

?身份驗證事件

?複制同步活動

?運作一些可能有影響的指令的證據(例如:drop,dropIndexes,

驗證)

應盡可能記錄此資訊。 此檢查僅适用于Enterprise

版本。

使用SystemLog.quiet可以解決問題并進行調查

安全事件要困難得多。

編輯

<conf_file>/mongod.conf

檔案中将SystemLog下的quiet設定為False以禁用它。

4.確定MongoDB使用非預設端口

更改MongoDB使用的端口使攻擊者更難找到資料庫并将其作為目标。 标準端口用于自動攻擊,并由攻擊者用于驗證伺服器上正在運作的應用程式。

将MongoDB伺服器的端口更改為27017以外的數字

5.確定MongoDB僅偵聽授權接口上的網絡連接配接

確定MongoDB在受信任的網絡環境中運作涉及限制MongoDB執行個體偵聽傳入連接配接的網絡接口。 MongoDB應删除任何不受信任的網絡連接配接。 此配置阻止來自不受信任網絡的連接配接,隻允許授權和受信任網絡上的系統嘗試連接配接到MongoDB。 如果未配置,則可能導緻從不受信任的網絡到MongoDB的未授權連接配接。

1、如果服務隻允許本機通路,編輯MongoDB的配置檔案

<conf_path>/mongod.conf

,在net區塊下配置bindIp,将此項的值設定為:127.0.0.1(僅允許本機通路),并重新開機MongoDB服務。

2、如業務需要設定為跨伺服器通路,可通過安全組配置通路規則,防止服務暴露到網際網路上,然後忽略此項

6.確定在不需要時禁用伺服器端腳本

MongoDB支援為某些伺服器端操作執行JavaScript代碼:mapReduce,group和$ where。 如果不使用這些操作,則應禁用伺服器端腳本。 如果不需要伺服器端腳本并且未禁用,則會帶來不必要的風險,即攻擊者可能會利用不安全的編碼。

<conf_file>/mongod.conf

檔案中将security下的javascriptEnabled:設定為false以禁用它。

7.確定正确設定了資料庫檔案權限

MongoDB資料庫檔案需要使用檔案權限進行保護。這将限制未經授權的使用者通路資料庫。

将資料庫檔案的所有權設定為mongodb使用者,并使用以下指令删除其他權限:

chmod 600 /var/lib/mongodb

sudo chown mongodb:mongodb /var/lib/mongodb

以上指令為預設資料庫檔案路徑,請根據實際環境修改為正确資料庫檔案路徑。

8.確定正确設定了密鑰檔案權限

密鑰檔案用于分片群集中的身份驗證。 在密鑰檔案上實作适當的檔案權限将防止對其進行未經授權的通路。保護密鑰檔案可加強分片叢集中的身份驗證,并防止對MongoDB資料庫的未授權通路。

将keyFile所有權設定為mongodb使用者,并通過執行以下指令删除其他權限:

chmod 600 <keyfile_path>/keyfile

sudo chown mongodb:mongodb <keyfile_path>/keyfile

9.確定使用非特權的專用服務帳戶運作MongoDB

MongoDB服務不應使用特權帳戶(如“root”)運作,因為這會不必要地将作業系統暴露在高風險之下。 使用非特權專用服務帳戶限制資料庫通路MongoDB不需要的作業系統的關鍵區域。 這還将減少通過作業系統上受損的特權帳戶進行未經授權通路的可能性。

1.建立用于執行MongoDB資料庫活動的專用使用者。

2.将資料庫資料檔案,密鑰檔案和SSL私鑰檔案設定為隻能讀取 由mongod/mongos使用者提供。

3.将日志檔案設定為隻能由mongod/mongos使用者寫入,并且隻能由root讀取。

4.切換至該專用使用者,并重新開機MongoDB

10.確定為MongoDB資料庫啟用了身份驗證

此設定可確定所有用戶端,使用者和/或伺服器都需要進行身份驗證

在被授予通路MongoDB資料庫之前。

無法對用戶端,使用者和/或伺服器進行身份驗證可以啟用對伺服器的未授權通路

MongoDB資料庫可以防止跟蹤操作傳回其源。

編輯MongoDB配置檔案,在security區塊下配置 authorization: enabled

本文版權歸作者所有,歡迎轉載,請務必添加原文連結。