centos上mongodb安全防护措施有哪些
1. 启用身份验证(Authentication)
启用身份验证是MongoDB安全的基础,强制用户连接时提供有效凭证。需编辑配置文件/etc/mongod.conf,在security部分设置authorization: enabled(YAML格式)或auth=true(旧版INI格式),重启服务使配置生效。创建管理员用户(如admin角色为root)用于管理权限,避免未认证访问。
2. 配置基于角色的访问控制(RBAC)
RBAC实现细粒度权限管理,避免过度授权。MongoDB提供内置角色(如read、readWrite、dbAdmin、userAdmin、root等),可根据需求分配:
- 为普通用户分配
readWrite角色(限定数据库); - 为应用创建自定义角色(如限定特定集合的
find、insert权限),通过db.createRole()定义。
3. 强化网络访问控制
- 绑定IP地址:修改
/etc/mongod.conf中的bindIp参数,限制仅允许特定IP(如服务器本地127.0.0.1或内网IP)访问,避免暴露在公网; - 防火墙规则:使用
firewall-cmd(CentOS默认防火墙)开放MongoDB默认端口(27017),并限制访问源IP,例如:sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="27017" accept',然后sudo firewall-cmd --reload。
4. 加密通信(Transport Encryption)
通过SSL/TLS加密客户端与服务器之间的数据传输,防止中间人攻击。步骤如下:
- 生成SSL证书(可使用OpenSSL生成自签名证书):
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/ssl/mongodb.key -out /etc/ssl/mongodb.crt; - 配置MongoDB:在
/etc/mongod.conf的net.ssl部分设置mode: requireSSL、PEMKeyFile: /etc/ssl/mongodb.key、CAFile: /etc/ssl/mongodb.crt; - 重启服务:
sudo systemctl restart mongod,客户端连接时需添加--ssl参数。
5. 配置审计日志(Audit Logging)
启用审计日志记录所有用户操作(如查询、修改、删除),便于后续追溯异常行为。编辑/etc/mongod.conf,添加auditLog配置:
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.log
重启服务后,日志将保存到指定路径,可通过工具(如ELK)分析日志。
6. 使用专用用户运行MongoDB
避免以root用户运行MongoDB,降低权限提升风险。创建专用用户(如mongodb):
sudo useradd -r -s /sbin/nologin mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb # MongoDB数据目录
sudo chown -R mongodb:mongodb /etc/mongod.conf # 配置文件
修改服务配置(/usr/lib/systemd/system/mongod.service)中的User和Group为mongodb,然后sudo systemctl daemon-reload并重启服务。
7. 定期更新与补丁管理
保持MongoDB为最新版本,及时修复已知安全漏洞。使用yum更新:
sudo yum update mongodb-org --security
定期检查MongoDB官方安全公告(如CVE列表),应用相关补丁。
8. 数据备份与恢复
定期备份MongoDB数据(如使用mongodump),并验证备份完整性。例如:
mongodump --host localhost --port 27017 --username admin --password your_password --authenticationDatabase admin --out /backup/mongodb_$(date +%F)
存储备份到异地或云存储,确保灾难发生时可快速恢复。
9. 禁用不必要的组件
- 禁用未使用的存储引擎(如WiredTiger为默认推荐);
- 禁用不必要的命令(如
eval,可通过security.commands配置限制); - 禁用默认的
test数据库(若无需使用,可在配置中设置setParameter: disableTestCommands: true)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上mongodb安全防护措施有哪些
本文地址: https://pptw.com/jishu/741301.html
