1. 启用身份验证(核心安全措施)
编辑MongoDB配置文件(/etc/mongod.conf),在security section添加或修改authorization: enabled,强制要求用户连接时提供凭据。修改后重启服务:sudo systemctl restart mongod。启用后需创建管理员账户(见下一步),避免未认证访问。
2. 创建专用管理员账户(RBAC基础)
使用mongo shell连接到MongoDB,切换至admin数据库(管理员账户需存放在该数据库),创建具有root角色的用户(拥有最高权限):
use admin
db.createUser({
user: "admin",
pwd: "YourStrongPassword123!", // 使用大小写字母、数字和符号组合
roles: [{ role: "root", db: "admin" }]
})
退出shell后,需重启MongoDB服务使认证生效。
3. 限制网络访问(缩小攻击面)
/etc/mongod.conf中的net.bindIp参数,仅允许必要的IP地址访问。例如,仅允许本地访问:bindIp: 127.0.0.1;或允许局域网IP段:bindIp: 192.168.1.0/24(根据实际需求调整)。net section添加http.enabled: false,关闭MongoDB的HTTP管理接口(生产环境无需此功能)。sudo systemctl restart mongod。4. 配置防火墙规则(阻断非法访问)
使用Linux防火墙(如ufw或firewalld)限制对MongoDB默认端口(27017)的访问:
sudo ufw allow from 192.168.1.100 to any port 27017/tcp # 仅允许特定IP
sudo ufw enable # 启用防火墙
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="27017" accept'
sudo firewall-cmd --reload # 应用规则
确保仅受信任的IP地址能访问MongoDB端口。
5. 启用TLS/SSL加密(保护数据传输)
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
/etc/mongod.conf的net.ssl section添加以下内容:net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /path/to/mongodb-key.pem # 证书私钥路径
CAFile: /path/to/mongodb-cert.pem # 证书路径(自签名时可指向自身)
修改后重启服务:sudo systemctl restart mongod。客户端连接时需添加--ssl参数:mongo --ssl --sslCAFile /path/to/mongodb-cert.pem --sslPEMKeyFile /path/to/mongodb-key.pem -u admin -p --authenticationDatabase admin。
6. 配置审计日志(追踪异常行为)
若使用MongoDB Enterprise,可启用审计日志记录所有用户操作(如查询、修改、删除):
在/etc/mongod.conf的security.auditLog section添加:
security:
auditLog:
destination: file # 日志存储位置
format: JSON # 日志格式(JSON易解析)
path: /var/log/mongodb/audit.json # 日志文件路径
filter: '{}' # 可选:过滤特定操作(如仅记录删除操作)
修改后重启服务:sudo systemctl restart mongod。审计日志可用于事后追溯安全事件。
7. 使用非特权用户运行MongoDB(降低权限风险)
mongodb):sudo useradd -r -s /bin/false mongodb
/var/lib/mongodb)和日志目录(默认/var/log/mongodb)的所有权赋予该用户:sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
/etc/systemd/system/mongod.service),将User和Group设置为mongodb,然后重启服务:sudo systemctl daemon-reload
sudo systemctl restart mongod
避免MongoDB以root用户运行,降低系统被入侵的风险。
8. 定期更新与监控(应对新威胁)
mongodb-org包),安装最新安全补丁:sudo apt update && sudo apt upgrade mongodb-org # Ubuntu/Debian
sudo yum update mongodb-org # CentOS/RHEL
mongostat(监控操作频率)、mongotop(监控集合级读写)工具,或集成Prometheus+Granafa等监控系统,实时跟踪MongoDB的运行状态(如连接数、查询延迟、磁盘空间),及时发现异常(如大量失败的登录尝试)。