- 首页 >
- 问答 >
-
云计算 >
- MongoDB在Linux上的安全设置指南
MongoDB在Linux上的安全设置指南
小樊
44
2025-11-28 18:49:35
MongoDB 在 Linux 上的安全设置指南
一 基础安全基线
- 启用身份验证:编辑配置文件 /etc/mongod.conf,在 security 段开启授权,重启生效。
- 配置示例:
- 重启服务:sudo systemctl restart mongod
- 创建管理员账户:连接 mongo 后切换到 admin 库创建高权限用户(生产环境建议使用强密码并妥善保存)。
- 示例:
- use admin
- db.createUser({
user: “admin”,
pwd: “StrongPass!23”,
roles: [“root”]
})
- 最小权限原则:为业务库创建专属用户,仅授予所需角色(如 readWrite、dbOwner),避免使用 root 日常访问。
- 示例:
- use mydb
- db.createUser({
user: “app_rw”,
pwd: “AppPass!45”,
roles: [{ role: “readWrite”, db: “mydb” }]
})
- 连接串示例:mongo -u app_rw -p ‘AppPass!45’ --authenticationDatabase mydb。
二 网络安全与系统加固
- 绑定地址最小化:在 net.bindIp 中仅保留必要来源(本地或内网网段),避免 0.0.0.0 暴露公网。
- 示例:
- net:
- bindIp: 127.0.0.1,192.168.1.0/24
- 防火墙限制端口:仅允许受信任网段访问 27017/TCP。
- firewalld(CentOS/RHEL):
- sudo firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port port=“27017” protocol=“tcp” accept’
- sudo firewall-cmd --reload
- ufw(Ubuntu/Debian):
- sudo ufw allow from 192.168.1.0/24 to any port 27017
- 禁用不安全接口:关闭 HTTP 接口与 REST 接口,减少攻击面。
- 示例:
- net:
- http: { enabled: false }
- RESTInterfaceEnabled: false
- 非特权运行:使用专用系统用户(如 mongod)运行进程,避免 root。
- 示例:
- sudo useradd -r -s /bin/false mongod
- sudo chown -R mongod:mongod /var/lib/mongodb /var/log/mongodb
- sudo systemctl restart mongod
三 加密与传输安全
- 启用 TLS/SSL:生成或获取证书,在 net.ssl 中强制加密通信。
- 自签名证书示例:
- openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/private/mongodb-key.pem -out /etc/ssl/certs/mongodb-cert.pem
- 配置示例:
- net:
- ssl:
- mode: requireSSL
- PEMKeyFile: /etc/ssl/private/mongodb-key.pem
- CAFile: /etc/ssl/certs/mongodb-cert.pem
- 重启服务:sudo systemctl restart mongod
- 客户端连接:使用 --ssl 参数连接,确保端到端加密。
四 审计与日志监控
- 启用审计日志:记录关键操作,便于合规与溯源(建议输出为 JSON 便于分析)。
- 配置示例:
- security:
- auditLog:
- destination: file
- format: JSON
- path: /var/log/mongodb/audit.json
- 常规日志:确保服务日志持续写入并滚动。
- 配置示例:
- systemLog:
- destination: file
- path: /var/log/mongodb/mongod.log
- logAppend: true
- 备份与恢复:定期离线/逻辑备份,验证可恢复性。
- 示例:
- mongodump --out /opt/backup/$(date +%F)
- mongorestore /opt/backup/2025-11-28
五 集群与复制场景的额外措施
- 副本集/分片认证:使用 keyFile 实现节点间内部认证,所有节点 keyFile 内容一致 且权限为 400。
- 生成与分发 keyFile(示例):
- openssl rand -base64 756 > /var/lib/mongodb/keyfile
- chmod 400 /var/lib/mongodb/keyfile
- chown mongod:mongod /var/lib/mongodb/keyfile
- 配置示例:
- security:
- keyFile: /var/lib/mongodb/keyfile
- authorization: enabled
- replication:
- 注意:keyFile 权限过大(如 644)会导致启动报错,需严格设置为 400。