首页主机资讯Linux中MongoDB安全设置有哪些

Linux中MongoDB安全设置有哪些

时间2025-10-16 18:22:03发布访客分类主机资讯浏览1213
导读: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
    
  • 使用防火墙(如ufwiptables)限制访问端口(默认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.createUserdb.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
MongoDB在Linux上的内存管理怎样 Ubuntu下Golang编译报错信息解读

游客 回复需填写必要信息