如何提高Linux MongoDB安全性

Linux 上提升 MongoDB 安全性的实用清单一 身份与访问控制启用授权:在配置文件中开启 security.authorization: enabled,或使用命令行 –auth,强制所有客户端进行身份验证。首次启用前,先在 admin 库创建具备用户管理能力的账户(如 userAdminAnyDatabase 或 root),再开启授权,避免被锁死。完成后为各业务库创建最小权限的专用用

Linux 上提升 MongoDB 安全性的实用清单

一 身份与访问控制

  • 启用授权:在配置文件中开启 security.authorization: enabled,或使用命令行 –auth,强制所有客户端进行身份验证。首次启用前,先在 admin 库创建具备用户管理能力的账户(如 userAdminAnyDatabaseroot),再开启授权,避免被锁死。完成后为各业务库创建最小权限的专用用户,遵循最小权限原则。
  • 基于角色的访问控制 RBAC:为用户分配精确的角色,按需使用内置角色或自定义角色;撤销不需要的权限(如用 revokeRolesFromUser)。如需来源限制,可使用 authenticationRestrictions 限制用户只能从指定 IP 段 连接。
  • 安全连接示例(mongosh):连接启用了 TLS 的实例时,使用 –tls –host <域名> –tlsCAFile <CA.pem>;如服务端要求客户端证书,再添加 –tlsCertificateKeyFile <client.pem>。客户端会校验证书 CA主机名/SAN 是否匹配。

二 网络与传输安全

  • 绑定地址最小化:在 net.bindIp 中仅保留必要地址(如 127.0.0.1 或内网地址),避免对公网开放 27017
  • 主机与端口加固:仅在内网或受控网络中开放 27017/TCP,并限制来源 IP。
  • 强制加密传输:在 mongod.conf 中启用 net.tls.mode: requireTLS,配置 net.tls.certificateKeyFile(服务器证书+私钥),如需双向认证再配置 net.tls.CAFile 并要求客户端证书;客户端使用 mongosh –tls 连接并校验证书。
  • 协议与加密套件:禁用不安全协议(如 TLS 1.0),MongoDB 在支持 TLS 1.1+ 的系统上默认禁用 TLS 1.0;必要时通过 –tlsDisabledProtocols 明确禁用弱协议与弱套件。

三 系统与服务加固

  • 最小权限运行:创建专用系统用户(如 mongod),以该用户运行 MongoDB,数据/日志目录权限仅对该用户可写。
  • 目录与文件权限:确保 /var/lib/mongodb/var/log/mongodb 仅由 mongod 访问;配置文件权限最小化。
  • 服务与内核:使用 systemd 管理服务,限制服务权限与能力;按需配置 seccomp/apparmor 等系统防护。
  • 禁用不安全接口:在配置中关闭 HTTP 接口REST 接口,减少攻击面。
  • 安全更新与补丁:保持 MongoDBLinux 内核/库为最新稳定版本,及时修复已知漏洞。

四 审计、监控与备份

  • 审计日志:在 security.auditLog 中启用审计(如输出为 JSON/var/log/mongodb/audit.json),记录关键操作(认证、授权、DDL/DML 等),便于合规与溯源。
  • 日志与监控:启用 systemLog(如 destination: file、path、logAppend),结合 operationProfiling 与监控系统(如 mongostat/mongotop、指标采集与告警)及时发现异常。
  • 定期备份与恢复演练:使用 mongodump/mongorestore 定期备份,验证备份可用性与恢复流程,确保灾难恢复能力。

五 快速配置示例

  • 启用认证与本地绑定(/etc/mongod.conf)
    • security:
      • authorization: enabled
    • net:
      • bindIp: 127.0.0.1
      • port: 27017
  • 启用 TLS(/etc/mongod.conf)
    • net:
      • tls:
        • mode: requireTLS
        • certificateKeyFile: /etc/ssl/mongodb.pem
        • CAFile: /etc/ssl/ca.pem
  • 创建管理员与业务用户(先本地连接)
    • use admin
    • db.createUser({ user: “admin”, pwd: “”, roles: [“root”] })
    • use appdb
    • db.createUser({ user: “appuser”, pwd: “”, roles: [“readWrite”, “dbOwner”] })
  • 客户端连接命令
    • mongosh –tls –host 127.0.0.1 –tlsCAFile /etc/ssl/ca.pem
  • 防火墙示例
    • ufw: sudo ufw allow from 192.168.1.0/24 to any port 27017
    • firewalld: sudo firewall-cmd –permanent –add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port port=“27017” protocol=“tcp” accept’ && sudo firewall-cmd –reload

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1463997.html

(0)
派派
上一篇 2025-12-02
下一篇 2025-12-02

发表回复

登录后才能评论