温馨提示×

Linux MongoDB的安全策略如何实施

小樊
40
2026-01-03 03:19:46
栏目: 云计算

Linux 上实施 MongoDB 安全策略

一 基线加固

  • 启用身份验证:在配置文件 /etc/mongod.confsecurity 段开启 authorization: enabled,重启后在 admin 库创建管理员与业务用户,遵循最小权限原则。
  • 网络最小化暴露:在 net.bindIp 仅绑定需要的地址(如 127.0.0.1 或内网地址),避免 0.0.0.0;如版本低于 3.6,务必显式设置。
  • 传输加密:启用 TLS/SSL,配置 net.ssl.mode: requireSSL,提供 PEMKeyFileCAFile,确保节点间与客户端通信加密。
  • 禁用不必要接口:关闭 HTTP 接口REST API,减少攻击面。
  • 以非特权用户运行:创建专用系统用户(如 mongod),数据/日志目录属主设为该用户,服务以该用户启动。
  • 日志与审计:开启 systemLog(如 logpathlogappend),按需启用 auditLog(如输出为 JSON 到文件)。
  • 及时更新:保持 MongoDB 与操作系统 的安全补丁为最新。

二 网络与访问控制

  • 防火墙限制:仅放行受信任来源的 27017/tcp。示例:
    • Ubuntu/Debian(UFW):sudo ufw allow from 192.168.1.10 to any port 27017;sudo ufw enable
    • CentOS/RHEL(firewalld):sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.10” port port=“27017” protocol=“tcp” accept’ && sudo firewall-cmd --reload
    • 通用(iptables):先 DROP 再 ACCEPT 指定来源,注意规则顺序
  • 主机级限制:可用 /etc/hosts.allow/etc/hosts.denymongod 进程做来源 IP 白名单。
  • 绑定策略:生产环境优先绑定内网 IP127.0.0.1,避免公网直连;确需公网访问时,叠加 TLS防火墙白名单

三 身份与授权

  • 管理员账户:在 admin 库创建高权限账户(如 root 或具备用户管理能力的角色),用于日常运维与用户管理。
  • 业务最小权限:按库/集合分配 readreadWritedbAdmin 等角色,避免在生产库授予 root
  • 专用只读账号:为报表/监控创建 只读用户,定期轮换凭据并回收不必要权限。

四 加密与审计

  • TLS/SSL 配置示例:
    • 生成证书:openssl req -newkey rsa:2048 -nodes -x509 -days 3650 -keyout mongodb-key.pem -out mongodb-cert.pem
    • 配置:
      net:
      ssl:
      mode: requireSSL
      PEMKeyFile: /path/to/mongodb-key.pem
      CAFile: /path/to/mongodb-cert.pem
  • 审计日志示例:
    security:
    auditLog:
    destination: file
    format: JSON
    path: /var/log/mongodb/audit.json
  • 注意:开启 TLS/SSL审计 会带来一定性能开销,建议在测试环境评估阈值并合理设置日志保留策略。

五 运维与验证

  • 备份恢复:定期使用 mongodump/mongorestore 做全量/增量备份,验证可恢复性并异地存放。
  • 监控告警:启用 operationProfiling 与系统日志收集,关注失败登录、异常查询与连接数激增。
  • 变更与重启:修改 mongod.conf 后执行 sudo systemctl restart mongod;变更前备份配置与数据。
  • 连通性验证:
    • 本地:mongo --host 127.0.0.1 --port 27017 -u admin -p
    • 远程:mongo --host <内网IP> --port 27017 -u appuser -p --ssl --sslCAFile /path/to/ca.pem
  • 基线核查清单:
    • 认证已开启(authorization: enabled)
    • bindIp 仅含必要地址
    • 防火墙仅放行受信来源 27017/tcp
    • TLS/SSL 强制启用且证书有效
    • 无默认测试库/用户残留
    • 审计或集中日志已接入
    • 备份任务与恢复演练定期执行

0