1. 啟用身份驗證(核心安全措施)
啟用MongoDB的身份驗證機制,強制用戶通過用戶名和密碼訪問數據庫,防止未授權訪問。配置方法:編輯/etc/mongod.conf
文件,添加或修改security.authorization
參數為enabled
;重啟MongoDB服務使配置生效(sudo systemctl restart mongod
)。注意:啟用前需先創建管理員賬戶(見下文),否則會導致無法管理數據庫。
2. 創建管理員賬戶與權限管理
在未啟用認證的模式下,登錄MongoDB Shell(mongo
),切換至admin
數據庫,創建具有管理權限的管理員賬戶(如admin
用戶,賦予root
角色)。示例命令:
use admin;
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: ["root"]
});
后續為用戶分配最小必要權限(如應用賬戶使用readWrite
角色,僅允許讀寫指定數據庫;報表賬戶使用read
角色,僅允許查詢)。
3. 限制網絡訪問范圍
通過配置bindIp
參數,將MongoDB綁定至特定IP地址(如127.0.0.1
僅本地訪問,或192.168.1.100
允許內部網絡訪問),避免暴露在公網。同時,使用防火墻(如ufw
或iptables
)限制訪問源IP:
ufw
配置:sudo ufw allow from 192.168.1.0/24 to any port 27017
(僅允許192.168.1.0/24網段訪問);iptables
配置:sudo iptables -A INPUT -p tcp --dport 27017 -s 192.168.1.100 -j ACCEPT
(允許指定IP訪問),并默認拒絕其他IP。4. 配置TLS/SSL加密通信
使用SSL/TLS加密MongoDB客戶端與服務器之間的通信,防止數據泄露。步驟如下:
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb-key.pem -out /etc/ssl/mongodb-cert.pem
mongod.conf
文件,添加SSL配置:net:
ssl:
mode: requireSSL # 強制使用SSL
PEMKeyFile: /etc/ssl/mongodb-cert.pem # 證書路徑
CAFile: /etc/ssl/mongodb-cert.pem # CA證書路徑(自簽名時與PEMKeyFile相同)
5. 配置審計日志(Enterprise版功能)
MongoDB Enterprise支持審計日志,記錄所有用戶的操作(如認證、授權、DDL/DML操作),用于安全審計和合規性檢查(如SOC 2、PCI DSS)。配置方法:在mongod.conf
中添加:
security:
auditLog:
destination: file # 日志輸出到文件
format: JSON # 日志格式(JSON易解析)
path: /var/log/mongodb/mongodb-audit.log # 日志文件路徑
重啟服務后,審計日志將記錄所有操作,便于后續分析異常行為。
6. 使用非特權用戶運行MongoDB
避免以root
用戶運行MongoDB,降低系統權限泄露的風險。步驟如下:
mongodb
):sudo useradd -r -s /bin/false mongodb
(-r
表示系統用戶,-s /bin/false
禁止登錄);sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb
;sudo -u mongodb mongod --config /etc/mongod.conf
。7. 禁用不必要的接口與功能
關閉MongoDB的非必要功能,減少攻擊面:
mongod.conf
中設置net.http.enabled: false
(默認關閉,無需額外配置);net.restInterfaceEnabled: false
(默認關閉);net.JSONPEnabled: false
(默認關閉)。8. 定期更新與補丁管理
定期檢查MongoDB官方安全公告(如MongoDB Security Advisories),及時升級到最新穩定版本,修復已知漏洞。使用包管理器(如apt
、yum
)升級:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get upgrade mongodb-org
# CentOS/RHEL
sudo yum update mongodb-org
升級前備份數據,避免升級失敗導致數據丟失。
9. 文件與目錄權限管理
確保MongoDB的關鍵文件(配置文件mongod.conf
、數據目錄/var/lib/mongodb
、日志目錄/var/log/mongodb
、證書文件)的權限正確,僅允許mongodb
用戶和mongodb
組訪問:
sudo chmod -R 750 /var/lib/mongodb
sudo chmod -R 750 /var/log/mongodb
sudo chmod 600 /etc/ssl/mongodb*.pem # 證書文件權限設為600(僅所有者可讀寫)
定期審計文件權限,防止未經授權的修改。
10. 備份與災難恢復
制定定期備份策略(如每日全量備份+每小時增量備份),使用mongodump
(邏輯備份)或文件系統快照(物理備份)備份數據。備份文件需加密存儲(如使用GPG加密),并定期測試恢復流程(如恢復至隔離環境),確保備份有效性。