Debian下MongoDB安全配置指南
小樊
35
2025-12-23 02:09:45
Debian下MongoDB安全配置指南
一 基线加固
- 安装与更新:优先使用官方仓库安装并定期更新,保持系统与数据库补丁为最新。
- 监听地址:在配置文件**/etc/mongod.conf中设置net.bindIp**,仅监听127.0.0.1(本地)或受控的内网IP;避免0.0.0.0。
- 身份验证:启用security.authorization: enabled,强制所有客户端登录后操作。
- 加密传输:启用TLS/SSL对客户端与服务端通信加密。
- 防火墙:使用ufw/iptables仅放行受信任来源访问27017/tcp。
- 审计与日志:开启安全审计与文件日志,便于合规与取证。
- 版本基线:自MongoDB 3.6起,官方DEB/RPM包默认仅绑定localhost,历史版本需重点核查绑定与访问策略。
二 详细配置步骤
- 配置监听与端口
- 编辑**/etc/mongod.conf**:
- 仅本地:net: bindIp: 127.0.0.1;远程受控:net: bindIp: 127.0.0.1,<内网IP>;严禁0.0.0.0。
- 确认端口:net: port: 27017。
- 启用身份验证
- 在**/etc/mongod.conf**加入:security: authorization: enabled;重启服务:sudo systemctl restart mongod。
- 连接Mongo Shell创建管理员(示例):
- use admin
- db.createUser({ user: “admin”, pwd: “StrongPass!”, roles: [{ role: “userAdminAnyDatabase”, db: “admin” }] })
- 配置TLS/SSL
- 准备证书(自签或CA签发),在配置中加入:
- net: ssl: mode: requireSSL;PEMKeyFile: /path/to/mongodb.pem;CAFile: /path/to/ca.pem
- 重启生效并检查日志无报错。
- 防火墙与网络隔离
- ufw示例:sudo ufw allow 22/tcp;sudo ufw allow from 192.168.1.0/24 to any port 27017;sudo ufw enable
- 如用云环境,配合安全组仅放通必要来源IP段。
- 审计与日志
- 在**/etc/mongod.conf**加入:
- security: auditLog: destination: file;format: JSON;path: /var/log/mongodb/audit.json
- 确保审计日志目录与文件权限正确,避免被非授权用户篡改。
三 用户与权限最小化
- 管理员账户
- 创建具备用户管理能力的账户(示例见上),用于后续用户与角色维护;避免使用root日常运维。
- 业务账户
- 按库创建最小权限账户,例如仅授予readWrite:
- use mydb
- db.createUser({ user: “app”, pwd: “AppPass!”, roles: [{ role: “readWrite”, db: “mydb” }] })
- 连接串示例
- mongo “mongodb://app:AppPass!@192.168.1.10:27017/mydb” --authenticationDatabase mydb
- 定期审计与回收
- 定期核查system.users与角色分配,回收不再使用的账户与权限。
四 运行环境与维护
- 系统账户与权限
- 使用专用的mongodb系统用户运行服务,降低进程权限面。
- 文件与目录权限
- 确保**/var/lib/mongodb**、/var/log/mongodb归属mongodb用户组,权限最小化。
- 备份与恢复
- 使用mongodump/mongorestore定期备份;备份文件落盘加密并异地存放;验证恢复流程可用。
- 持续更新与监控
- 执行sudo apt update && sudo apt upgrade -y保持MongoDB与Debian更新;结合日志与审计进行异常监测。
五 快速核查清单
- 配置核查
- grep -n “bindIp” /etc/mongod.conf;grep -n “authorization” /etc/mongod.conf;grep -n “ssl.mode” /etc/mongod.conf
- 连通性核查
- 本地:mongo --host 127.0.0.1 -u admin -p --authenticationDatabase admin
- 远程:mongo “mongodb://admin:StrongPass!@<内网IP>:27017/admin” --tls
- 防火墙核查
- ufw status;或 iptables -L -n | grep 27017
- 日志与审计
- tail -f /var/log/mongodb/mongod.log;tail -f /var/log/mongodb/audit.json
- 安全提醒
- 严禁将bindIp设为0.0.0.0并暴露公网;生产环境务必启用TLS/SSL与防火墙;定期更新与演练恢复。