linux

Linux上MongoDB安全配置有哪些

小樊
46
2025-10-07 23:59:47
栏目: 云计算

1. 启用身份验证(核心安全措施)
启用MongoDB的身份验证机制,强制用户通过用户名和密码访问数据库,防止未授权访问。配置方法:编辑/etc/mongod.conf文件,添加或修改security.authorization参数为enabled;重启MongoDB服务使配置生效(sudo systemctl restart mongod)。注意:启用前需先创建管理员账户(见下文),否则会导致无法管理数据库。

2. 创建管理员账户与权限管理
在未启用认证的模式下,登录MongoDB Shell(mongo),切换至admin数据库,创建具有管理权限的管理员账户(如admin用户,赋予root角色)。示例命令:

use admin;
db.createUser({
  user: "admin",
  pwd: "StrongPassword123!",
  roles: ["root"]
});

后续为用户分配最小必要权限(如应用账户使用readWrite角色,仅允许读写指定数据库;报表账户使用read角色,仅允许查询)。

3. 限制网络访问范围
通过配置bindIp参数,将MongoDB绑定至特定IP地址(如127.0.0.1仅本地访问,或192.168.1.100允许内部网络访问),避免暴露在公网。同时,使用防火墙(如ufwiptables)限制访问源IP:

4. 配置TLS/SSL加密通信
使用SSL/TLS加密MongoDB客户端与服务器之间的通信,防止数据泄露。步骤如下:

5. 配置审计日志(Enterprise版功能)
MongoDB Enterprise支持审计日志,记录所有用户的操作(如认证、授权、DDL/DML操作),用于安全审计和合规性检查(如SOC 2、PCI DSS)。配置方法:在mongod.conf中添加:

security:
  auditLog:
    destination: file  # 日志输出到文件
    format: JSON  # 日志格式(JSON易解析)
    path: /var/log/mongodb/mongodb-audit.log  # 日志文件路径

重启服务后,审计日志将记录所有操作,便于后续分析异常行为。

6. 使用非特权用户运行MongoDB
避免以root用户运行MongoDB,降低系统权限泄露的风险。步骤如下:

7. 禁用不必要的接口与功能
关闭MongoDB的非必要功能,减少攻击面:

8. 定期更新与补丁管理
定期检查MongoDB官方安全公告(如MongoDB Security Advisories),及时升级到最新稳定版本,修复已知漏洞。使用包管理器(如aptyum)升级:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get upgrade mongodb-org

# CentOS/RHEL
sudo yum update mongodb-org

升级前备份数据,避免升级失败导致数据丢失。

9. 文件与目录权限管理
确保MongoDB的关键文件(配置文件mongod.conf、数据目录/var/lib/mongodb、日志目录/var/log/mongodb、证书文件)的权限正确,仅允许mongodb用户和mongodb组访问:

sudo chmod -R 750 /var/lib/mongodb
sudo chmod -R 750 /var/log/mongodb
sudo chmod 600 /etc/ssl/mongodb*.pem  # 证书文件权限设为600(仅所有者可读写)

定期审计文件权限,防止未经授权的修改。

10. 备份与灾难恢复
制定定期备份策略(如每日全量备份+每小时增量备份),使用mongodump(逻辑备份)或文件系统快照(物理备份)备份数据。备份文件需加密存储(如使用GPG加密),并定期测试恢复流程(如恢复至隔离环境),确保备份有效性。

0
看了该问题的人还看了