Linux系统中MongoDB的安全设置
导读:Linux系统中MongoDB的安全设置 一 核心安全基线 启用身份验证:在配置文件 /etc/mongod.conf 的 security 段开启 authorization: enabled,或在启动参数中使用 –auth。未启用认证...
Linux系统中MongoDB的安全设置
一 核心安全基线
- 启用身份验证:在配置文件 /etc/mongod.conf 的 security 段开启 authorization: enabled,或在启动参数中使用 –auth。未启用认证前不要对外网开放。
- 创建管理员账户:连接 mongosh(或 mongo)后切到 admin 库,创建高权限账户(如 root 或 userAdminAnyDatabase),并设置强口令。
- 限制网络访问:在 net.bindIp 仅绑定受信任地址(如 127.0.0.1 或内网网段),避免使用 0.0.0.0;配合 iptables/firewalld/ufw 仅放行必要来源与端口。
- 禁用不必要接口:关闭 HTTP 接口 与 REST 接口,避免暴露管理端点;相关参数包括 net.http.enabled: false、net.http.RESTInterfaceEnabled: false、net.http.JSONPEnabled: false。
- 使用非特权用户运行:创建系统用户 mongodb(无登录权限),将数据与日志目录属主设为 mongodb:mongodb,并以该用户启动服务。
- 启用日志追加:在 systemLog 段设置 logAppend: true,防止重启后日志被覆盖。
- 文件与目录权限:数据目录(如 /var/lib/mongodb)与日志目录(如 /var/log/mongodb)建议权限 750,文件 600/660,属主 mongodb:mongodb。
- 及时更新与补丁:保持 MongoDB 与 Linux 内核/包管理器的最新安全修复。
二 配置文件与关键参数示例
- 建议将关键安全项写入 /etc/mongod.conf(YAML 格式),示例:
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
logRotate: reopen
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
net:
port: 27017
bindIp: 127.0.0.1,192.168.1.0/24 # 仅内网或受控来源
http:
enabled: false
RESTInterfaceEnabled: false
JSONPEnabled: false
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb-key.pem
CAFile: /etc/ssl/mongodb-ca.pem
security:
authorization: enabled
# 如无需服务端脚本,可关闭
# javascriptEnabled: false
# 可选:Enterprise 审计
# auditLog:
# destination: file
# format: JSON
# path: /var/log/mongodb/audit.json
# filter: '{
}
'
- 修改后重启生效:
sudo systemctl restart mongod。 - 说明:禁用 HTTP/REST/JSONP 可显著降低攻击面;启用 TLS/SSL 强制加密传输;如业务不使用 mapReduce/group/where 等服务器端脚本,可关闭 javascriptEnabled 减少风险。
三 用户与权限管理
- 创建管理员(示例):
use admin
db.createUser({
user: "admin",
pwd: "YourStrongPassword123!",
roles: [{
role: "root", db: "admin" }
]
}
)
- 创建业务只读用户(示例):
use mydb
db.createUser({
user: "report",
pwd: "StrongReadPwd!",
roles: [{
role: "read", db: "mydb" }
]
}
)
- 连接示例(启用 TLS/SSL 时):
mongosh --ssl --sslCAFile /etc/ssl/mongodb-ca.pem --sslPEMKeyFile /etc/ssl/mongodb-key.pem -u admin -p --authenticationDatabase admin - 原则:遵循 最小权限,按库/集合细化角色,定期审计与轮换口令。
四 网络安全与加密
- 防火墙策略:
- ufw(Ubuntu/Debian):仅允许受控来源访问 27017/tcp
sudo ufw allow from 192.168.1.100 to any port 27017/tcp - firewalld(CentOS/RHEL):
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/Debian):仅允许受控来源访问 27017/tcp
- 传输加密:在 net.ssl 启用 mode: requireSSL,使用 CA 签发或自签名证书,客户端连接时提供 –ssl 与证书参数。
- 监听地址:优先绑定 127.0.0.1 或内网 CIDR,避免 0.0.0.0。
五 审计 运行与维护
- 审计(Enterprise):在 security.auditLog 指定 destination/file/path,必要时用 filter 聚焦关键操作(如鉴权失败、删除、更新)。
- 运行身份与目录权限:以 mongodb 用户运行,确保 /var/lib/mongodb 与 /var/log/mongodb 属主为 mongodb:mongodb,权限 750/600/660。
- 日志与监控:保持 logAppend: true;使用 mongostat/mongotop 或 Prometheus+Grafana 监控连接数、慢查询、失败登录等异常。
- 备份与恢复:定期 mongodump 备份,验证可恢复性;变更配置先在测试环境验证再上线。
- 安全维护:定期更新 MongoDB 与操作系统,及时修补漏洞。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux系统中MongoDB的安全设置
本文地址: https://pptw.com/jishu/783994.html
