Linux中MongoDB安全设置有哪些
导读:1. 启用基于角色的访问控制(RBAC) RBAC是MongoDB的核心安全机制,通过为用户分配特定角色限制其对数据库的操作权限。需先启用认证,再创建用户并分配角色: 编辑配置文件/etc/mongod.conf,添加security.a...
1. 启用基于角色的访问控制(RBAC)
RBAC是MongoDB的核心安全机制,通过为用户分配特定角色限制其对数据库的操作权限。需先启用认证,再创建用户并分配角色:
- 编辑配置文件
/etc/mongod.conf
,添加security.authorization: enabled
; - 重启MongoDB服务使配置生效:
sudo systemctl restart mongod
; - 连接到MongoDB Shell(
mongo
),切换至admin
数据库,创建管理员用户(如root
角色):use admin db.createUser({ user: "admin", pwd: "StrongPassword123!", roles: [{ role: "root", db: "admin" } ] } )
- 为普通数据库创建专用用户(如
readWrite
角色),遵循最小权限原则:use myDatabase db.createUser({ user: "appUser", pwd: "AppPassword456!", roles: [{ role: "readWrite", db: "myDatabase" } ] } )
2. 配置网络访问控制
通过网络设置限制MongoDB的访问范围,降低外部攻击风险:
- 修改
/etc/mongod.conf
中的net.bindIp
参数,仅绑定必要的IP地址(如本地127.0.0.1
或内部网络IP):net: bindIp: 127.0.0.1,192.168.1.100 # 允许本地和指定内网IP访问
- 禁用不必要的接口(如HTTP接口),在
net
section中添加:net: http: enabled: false
- 使用防火墙(如
ufw
或iptables
)限制访问端口(默认27017
),仅允许受信任IP访问:sudo ufw allow from 192.168.1.0/24 to any port 27017 # 仅允许192.168.1.0/24网段访问 sudo ufw enable
3. 启用传输层加密(TLS/SSL)
加密客户端与服务器之间的通信,防止数据在传输过程中被窃取或篡改:
- 生成SSL证书(可使用OpenSSL生成自签名证书,生产环境建议使用CA签发的证书):
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
- 修改
/etc/mongod.conf
,配置SSL参数:net: ssl: mode: requireSSL # 强制使用SSL PEMKeyFile: /path/to/mongodb-key.pem # 证书私钥路径 CAFile: /path/to/mongodb-cert.pem # CA证书路径(若使用CA签发)
- 重启MongoDB服务:
sudo systemctl restart mongod
; - 客户端连接时需指定SSL参数(如
mongo
Shell):mongo --ssl --sslCAFile /path/to/mongodb-cert.pem --sslPEMKeyFile /path/to/mongodb-key.pem -u admin -p --authenticationDatabase admin
4. 配置审计日志(MongoDB Enterprise)
记录所有数据库操作(如查询、插入、更新),便于后续安全审计和事件追溯(仅MongoDB Enterprise支持):
- 修改
/etc/mongod.conf
,添加审计日志配置:security: auditLog: destination: file # 日志输出到文件 format: JSON # 日志格式为JSON path: /var/log/mongodb/audit.json # 日志文件路径
- 重启MongoDB服务使配置生效,审计日志将记录所有用户的操作(如
db.createUser
、db.dropDatabase
)。
5. 使用非特权用户运行MongoDB
避免以root
用户运行MongoDB,降低系统权限泄露的风险:
- 创建专用用户(如
mongodb
):sudo useradd -r -s /bin/false mongodb # 创建系统用户,无登录权限
- 修改MongoDB数据目录和日志目录的权限,归属
mongodb
用户:sudo chown -R mongodb:mongodb /var/lib/mongodb # 数据目录 sudo chown -R mongodb:mongodb /var/log/mongodb # 日志目录
- 使用
mongodb
用户启动MongoDB服务:sudo -u mongodb mongod --config /etc/mongod.conf
6. 定期更新与补丁管理
保持MongoDB及依赖组件(如操作系统、OpenSSL)为最新版本,及时修复已知安全漏洞:
- 使用包管理器更新MongoDB(如Ubuntu/Debian使用
apt
,CentOS/RHEL使用yum
):sudo apt update & & sudo apt upgrade mongodb-org # Ubuntu/Debian sudo yum update mongodb-org # CentOS/RHEL
- 关注MongoDB官方安全公告(如邮件列表、官网博客),及时应用安全补丁。
7. 强化密码策略
要求用户使用强密码,并定期更换,降低密码被破解的风险:
- MongoDB 3.6及以上版本支持密码策略,可通过
db.createUser
命令设置密码复杂度(如要求包含大小写字母、数字、特殊字符,长度至少8位):db.createUser({ user: "secureUser", pwd: "SecurePass123!", roles: [{ role: "readWrite", db: "secureDB" } ], passwordDigestor: "server" # 使用服务器端密码哈希 } )
- 定期提醒用户更换密码(如每90天),避免长期使用同一密码。
8. 禁用不必要的功能
关闭MongoDB中不需要的功能,减少攻击面:
- 禁用HTTP接口(已在网络配置中提及);
- 禁用REST接口(默认禁用,如需开启需显式配置
rest: true
,生产环境建议保持禁用); - 禁用JSONP(默认禁用,避免跨站脚本攻击)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中MongoDB安全设置有哪些
本文地址: https://pptw.com/jishu/728239.html