MongoDB在Linux中的安全配置怎么做
导读:MongoDB 在 Linux 的安全配置清单 一 基础防护 绑定地址最小化:在配置文件 /etc/mongod.conf 中仅监听必要接口,优先使用本地回环;需要内网访问时仅绑定内网 IP 或白名单网段,避免 0.0.0.0。示例:ne...
MongoDB 在 Linux 的安全配置清单
一 基础防护
- 绑定地址最小化:在配置文件 /etc/mongod.conf 中仅监听必要接口,优先使用本地回环;需要内网访问时仅绑定内网 IP 或白名单网段,避免 0.0.0.0。示例:net.bindIp: 127.0.0.1,192.168.1.10。从 MongoDB 3.6 起官方包默认仅绑定 localhost,但旧版本或自定义安装可能仍为 0.0.0.0,务必核查。
- 启用访问控制:在 security 段开启授权,强制所有客户端登录后操作。
- 禁用危险接口:关闭 HTTP 接口 与 REST 接口,减少攻击面。
- 以最小权限运行:创建专用系统用户(如 mongod),数据/日志目录仅该用户可读写,服务以该用户启动。
- 日志与审计:开启文件日志与可选的审计日志,便于追踪与合规。
- 备份与监控:定期 mongodump 备份,结合监控告警观察异常连接与慢操作。
二 身份与授权
- 启用认证:在 /etc/mongod.conf 中设置
security:
authorization: enabled
重启后所有连接需提供凭据。 - 创建管理员:在 admin 库创建高权限账户(如 root),用于后续用户与权限管理。
- 最小权限原则:按库/按应用创建用户,仅授予所需角色;避免使用 root 进行日常业务连接。
- 常用内置角色:
- 数据库级:read、readWrite、dbAdmin、dbOwner、userAdmin
- 全局级:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 集群管理:clusterAdmin 等
- 超级用户:root(仅在 admin 库可用)
三 网络与防火墙
- 默认端口:27017/TCP。仅在内网可达时开放,严禁直接暴露在公网。
- firewalld(CentOS/RHEL 7+):
- 开放端口:sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp & & sudo firewall-cmd --reload
- 仅允许指定来源: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
- ufw(Ubuntu):
- 仅本地:sudo ufw allow from 127.0.0.1 to any port 27017
- 指定来源:sudo ufw allow from 192.168.1.100 to any port 27017
- iptables:
- 仅本地:sudo iptables -A INPUT -p tcp --dport 27017 -s 127.0.0.1 -j ACCEPT & & sudo iptables -A INPUT -p tcp --dport 27017 -j DROP
- 变更 bindIp 后务必重启服务并验证监听地址。
四 加密与审计
- TLS/SSL 加密传输:
- 生成证书(示例):
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem - 配置:
net:
ssl:
mode: requireSSL
PEMKeyFile: /path/to/mongodb-key.pem
CAFile: /path/to/mongodb-cert.pem
- 生成证书(示例):
- 审计日志(可选,企业/合规场景建议):
security:
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json - 注意:启用 TLS 后,客户端连接需使用 mongodb:// 的 tls=true 等参数。
五 快速配置示例
- /etc/mongod.conf 关键片段
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
processManagement:
fork: true
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.10
ssl:
mode: requireSSL
PEMKeyFile: /etc/mongodb/ssl/mongodb-key.pem
CAFile: /etc/mongodb/ssl/mongodb-cert.pem
http:
enabled: false
RESTInterfaceEnabled: false
JSONPEnabled: false
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json - 操作要点
- 重启服务:sudo systemctl restart mongod
- 创建管理员(本地先连入):
use admin
db.createUser({ user: “admin”, pwd: “StrongPass!”, roles: [“root”] } ) - 业务库最小权限用户:
use mydb
db.createUser({ user: “app”, pwd: “AppPass!”, roles: [“readWrite”, “dbOwner”] } ) - 远程连接测试(应仅允许白名单):mongo --host 192.168.1.10 --port 27017 -u app -p AppPass! --authenticationDatabase mydb --tls
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux中的安全配置怎么做
本文地址: https://pptw.com/jishu/775610.html
