温馨提示×

Ubuntu MongoDB如何安全设置

小樊
33
2025-12-08 20:17:02
栏目: 云计算

Ubuntu 上 MongoDB 的安全设置清单

一 基础防护

  • 绑定地址最小化:编辑 /etc/mongod.conf,将 net.bindIp 设为仅本地或受控网段,例如仅本地 127.0.0.1,或内网地址如 192.168.1.100;如确需远程,使用逗号分隔的 白名单 列表。修改后重启服务。
  • 启用访问控制:在 /etc/mongod.confsecurity 段开启 authorization: enabled,强制所有连接进行身份验证。
  • 防火墙限制:使用 ufwiptables 仅放行必要来源 IP 的 27017/tcp
  • 版本与默认安全:自 MongoDB 3.6 起,官方包默认仅绑定 localhost,但依然建议显式配置 bindIp 并开启 authorization
  • 连接验证:重启后用带认证的客户端连接,确认未授权访问被拒绝。
    示例配置片段:
    net:
    port: 27017
    bindIp: 127.0.0.1
    security:
    authorization: enabled
    重启:sudo systemctl restart mongod
    验证监听:sudo netstat -tuln | grep 27017(应仅见 127.0.0.1:27017)

二 身份与授权

  • 创建管理员:在 mongosh 中切换到 admin 库,创建具备管理能力的用户(如 rootuserAdminAnyDatabase)。
  • 按库最小权限:为业务库创建专属用户,仅授予所需角色(如 readWritedbOwner),避免使用高权限账户进行日常操作。
  • 指定认证库:连接时通过 –authenticationDatabase admin 指明凭据所在库。
  • 验证与回收:使用 show users 查看用户与权限,必要时 dropUser 回收过度授权。
    示例:
    use admin
    db.createUser({ user: “admin”, pwd: “StrongPass!”, roles: [{ role: “root”, db: “admin” }] })
    use mydb
    db.createUser({ user: “app”, pwd: “AppPass!”, roles: [{ role: “readWrite”, db: “mydb” }] })
    连接:mongosh -u app -p AppPass! --authenticationDatabase mydb
    验证:use mydb; show users

三 加密与网络安全

  • 传输加密:在 /etc/mongod.conf 启用 SSL/TLS,配置 net.ssl.mode: requireSSL、证书 PEMKeyFileCAFile,并设置 sslAllowInvalidCertificates: false;重启生效。
  • 网络最小化:除非业务必需,避免将 bindIp 设为 0.0.0.0;远程访问应结合 防火墙VPC/安全组 做来源 IP 白名单。
  • 监听验证:变更后用 netstat 确认仅监听预期地址与端口。
    示例:
    net:
    ssl:
    mode: requireSSL
    PEMKeyFile: /path/to/ssl.pem
    CAFile: /path/to/ca.pem
    sslAllowInvalidCertificates: false
    重启:sudo systemctl restart mongod

四 运维与审计

  • 日志与审计:确保 systemLog.destination: filelogAppend: truepath: /var/log/mongodb/mongod.log;按需开启 审计日志 记录关键操作,便于追踪异常。
  • 备份策略:定期使用 mongodump 做逻辑备份,妥善保存备份与凭据,定期校验可恢复性。
  • 运行安全:为 mongod 配置合适的 文件描述符与进程数限制(如 limits.conf),并考虑禁用 透明大页(THP) 以降低性能抖动与潜在安全风险。
  • 连接加固:避免使用过时或弱认证机制,优先采用 SCRAM-SHA-256;删除不再使用的用户与数据库,减少攻击面。

五 快速检查清单

检查项 期望状态/做法
监听地址 127.0.0.1 或受控 内网 IP
端口开放 仅对白名单来源开放 27017/tcp(ufw/iptables)
认证 security.authorization: enabled 并已创建用户
管理员 admin 库存在高权限账户(最小够用)
业务账户 各库仅授予 readWrite/dbOwner 等必要角色
传输加密 启用 SSL/TLS(生产环境强制)
日志审计 启用文件日志;按需开启审计
备份 定期 mongodump,并做恢复演练
系统加固 limits 合理、THP 关闭、及时打补丁

0