1. 啟用身份認證(核心安全機制)
在/etc/mongod.conf配置文件中添加security.authorization: enabled,強制所有客戶端連接需通過用戶名和密碼認證。修改后重啟MongoDB服務:sudo systemctl restart mongod。創建管理員賬戶(需切換至admin數據庫):
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword@123", # 使用強密碼(包含大小寫字母、數字、特殊字符)
roles: ["root"] # 分配root角色(擁有所有數據庫管理權限)
})
后續為用戶分配最小必要權限(如僅允許某用戶訪問特定數據庫并具備readWrite權限)。
2. 限制網絡訪問范圍
在/etc/mongod.conf中配置net.bindIp,僅允許受信任的IP地址或網段訪問MongoDB服務。例如:
bindIp: 127.0.0.1bindIp: 127.0.0.1,192.168.1.1003. 強制使用TLS/SSL加密通信
生成SSL證書(可使用OpenSSL生成自簽名證書,生產環境建議使用CA簽發的證書):
sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb-key.pem -out /etc/ssl/mongodb-cert.pem
在/etc/mongod.conf中配置SSL參數:
net:
ssl:
mode: requireSSL # 強制使用SSL
PEMKeyFile: /etc/ssl/mongodb-key.pem # 私鑰文件路徑
CAFile: /etc/ssl/mongodb-cert.pem # 證書文件路徑
重啟服務使配置生效:sudo systemctl restart mongod。
4. 配置防火墻規則
使用Linux防火墻(如firewalld或ufw)限制對MongoDB默認端口(27017)的訪問:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload
sudo ufw allow from 192.168.1.0/24 to any port 27017 proto tcp
sudo ufw enable
僅允許可信IP段訪問MongoDB端口。
5. 使用非特權用戶運行MongoDB
創建專用系統用戶(如mongodb)用于運行MongoDB服務,避免以root權限運行:
sudo useradd -r -s /bin/false mongodb # 創建專用用戶(無登錄權限)
sudo chown -R mongodb:mongodb /var/lib/mongodb # 修改數據目錄歸屬
sudo chown -R mongodb:mongodb /var/log/mongodb # 修改日志目錄歸屬
修改/etc/mongod.conf中的processManagement.fork為true(后臺運行),并以專用用戶啟動服務:
sudo -u mongodb mongod --config /etc/mongod.conf
設置開機自啟:sudo systemctl enable mongod。
6. 禁用不必要的接口與功能
在/etc/mongod.conf中禁用HTTP接口、REST接口和JSONP,減少攻擊面:
net:
http:
enabled: false # 禁用HTTP接口
RESTInterfaceEnabled: false # 禁用REST接口
JSONPEnabled: false # 禁用JSONP
重啟服務使配置生效。
7. 配置審計日志(Enterprise版功能)
若使用MongoDB Enterprise版,可在/etc/mongod.conf中啟用審計日志,記錄用戶操作(如查詢、插入、刪除):
security:
auditLog:
destination: file # 日志輸出到文件
format: JSON # 日志格式為JSON(便于解析)
path: /var/log/mongodb/audit.json # 日志文件路徑
重啟服務后,審計日志將記錄所有用戶操作,便于后續安全審計和事件追溯。
8. 定期更新與補丁管理
定期檢查MongoDB官方安全公告(如通過MongoDB Security Advisories頁面),及時升級到最新穩定版本,修復已知漏洞。使用包管理器(如apt或yum)升級:
sudo apt update && sudo apt upgrade mongodb-org
sudo yum update mongodb-org
升級前備份數據,避免升級失敗導致數據丟失。
9. 定期備份數據
使用mongodump工具定期備份數據(如每日凌晨2點),并將備份文件存儲至安全位置(如異地服務器或云存儲):
# 備份所有數據庫
mongodump --host 127.0.0.1 --port 27017 --username admin --password StrongPassword@123 --authenticationDatabase admin --out /backup/mongodb_$(date +%F)
# 備份特定數據庫(如test_db)
mongodump --host 127.0.0.1 --port 27017 --username admin --password StrongPassword@123 --authenticationDatabase admin --db test_db --out /backup/mongodb_$(date +%F)
定期測試備份文件的恢復流程,確保備份有效性。
10. 監控與日志分析
配置MongoDB日志記錄(systemLog.destination: file、logAppend: true),并使用監控工具(如Prometheus+Granafa、Zabbix)監控數據庫性能指標(如連接數、查詢延遲、磁盤空間)。設置告警規則(如連接數超過閾值、磁盤空間不足),及時發現異常行為。