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加密),并定期测试恢复流程(如恢复至隔离环境),确保备份有效性。