温馨提示×

MongoDB Linux配置中的安全设置有哪些

小樊
44
2025-12-24 09:21:53
栏目: 云计算

MongoDB Linux 安全设置清单

一 身份与访问控制

  • 启用授权:在配置文件 /etc/mongod.conf 中开启 security.authorization: enabled,强制所有客户端进行身份验证。完成后重启服务。
  • 创建管理员:连接 mongo shell,切换到 admin 库,创建高权限用户(如 rootuserAdminAnyDatabase),用于后续用户与权限管理。
  • 最小权限原则:按库/按应用创建用户并授予精确角色(如 readWritedbOwner),避免使用过于宽泛的角色。
  • 本地主机例外:仅在初始化阶段临时利用 localhost 例外创建首个管理员,随后关闭该例外,防止未授权本地访问。
  • 企业认证扩展:如需对接企业目录,可使用 LDAPKerberos(MongoDB Enterprise),并合理设置缓存与连接池参数以降低目录服务压力。

二 网络与传输安全

  • 绑定地址最小化:在 net.bindIp 中仅绑定必要地址,优先 127.0.0.1;如为集群/多机通信,仅开放内网 LAN IP(如 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12 等),避免 0.0.0.0
  • 防火墙隔离:使用 ufw/iptables/firewalld 限制对 27017 的访问,仅允许受信任网段或跳板机。
  • 加密传输:启用 TLS/SSL,生产环境使用由受信任 CA 签发的证书;配置 net.ssl.mode: requireSSL,并正确设置 PEMKeyFile/CAFile;MongoDB 在支持的系统上默认禁用 TLS 1.0/1.1,仅允许强加密套件。
  • 集群内部通信:副本集/分片集群建议使用 TLSmember certificates,并通过 net.tls.clusterAuthX509.attributes 统一证书属性以便成员认证。

三 进程与系统加固

  • 最小权限运行:创建专用系统用户(如 mongod),使用 chown/chmod 收紧 /var/lib/mongodb、/var/log/mongodb 等目录权限,禁止以 root 运行。
  • 禁用不必要接口:关闭 HTTP 接口REST/JSONP 等历史接口,减少攻击面。
  • 审计与日志:开启 审计日志(auditLog) 记录关键操作;配置 systemLog.destination: file、logAppend: true、path,并定期审计与轮转。
  • 备份与恢复:建立例行 mongodump/mongorestore 备份策略,定期验证可恢复性。

四 复制集与分片场景的额外要点

  • 密钥文件认证:在 security.keyFile 中配置共享密钥,用于副本集/分片成员间的内部认证;确保文件权限为 400,各成员密钥内容一致。
  • 集群认证模式:根据部署选择 keyFilex509clusterAuthMode,并保持成员证书属性一致,确保滚动升级与节点互信稳定。
  • 证书与属性一致性:为成员证书配置一致的 O/OU/DC 等属性,或在 net.tls.clusterAuthX509.attributes 中显式指定用于认证的字段。

五 快速配置示例

  • 启用认证与本地仅监听
    • /etc/mongod.conf
      • security:
        • authorization: enabled
      • net:
        • bindIp: 127.0.0.1
        • port: 27017
      • systemLog:
        • destination: file
        • path: /var/log/mongodb/mongod.log
        • logAppend: true
      • processManagement:
        • fork: true
  • 创建管理员并重启
    • mongo
      • use admin
      • db.createUser({ user: “admin”, pwd: “StrongPass!23”, roles: [“root”] })
    • sudo systemctl restart mongod
  • 启用 TLS(示例)
    • 生成证书(测试可用自签,生产请用受信 CA)
      • openssl req -newkey rsa:2048 -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
    • /etc/mongod.conf
      • net:
        • ssl:
          • mode: requireSSL
          • PEMKeyFile: /path/to/mongodb-key.pem
          • CAFile: /path/to/mongodb-cert.pem
    • sudo systemctl restart mongod
  • 防火墙(UFW 示例,仅允许内网)
    • sudo ufw allow from 192.168.1.0/24 to any port 27017
    • sudo ufw enable

0