- 首页 >
- 问答 >
-
云计算 >
- 在CentOS上如何进行MongoDB安全加固
在CentOS上如何进行MongoDB安全加固
小樊
43
2025-12-25 07:41:20
CentOS 上 MongoDB 安全加固清单
一 身份与访问控制
- 启用认证与授权:编辑配置文件 /etc/mongod.conf,在 security 下设置 authorization: enabled;如使用旧版 INI 风格可用 auth = true。修改后重启服务:sudo systemctl restart mongod。
- 创建管理员账户:连接 shell(mongosh),切换到 admin 库,创建具备用户管理能力的账户(示例赋予 userAdminAnyDatabase;如为全新实例且需最高权限可创建 root 角色)。
- 按库创建最小权限业务账户:仅为目标库授予 readWrite 或所需角色,遵循最小特权原则。
- 安全连接示例:使用 mongosh --authenticationDatabase “admin” -u -p 登录;或在连接后 use admin; db.auth(“”, passwordPrompt())。
- 容器场景:在 docker-compose.yml 中设置环境变量 MONGO_INITDB_ROOT_USERNAME / MONGO_INITDB_ROOT_PASSWORD 自动初始化;或给现有无密码实例添加 –auth 并重启。
二 网络与防火墙
- 限制监听地址:在 net.bindIp 中仅绑定必要地址,优先 127.0.0.1;如需局域网访问,绑定内网 IP(如 192.168.1.10),避免 0.0.0.0。
- 防火墙仅放行可信来源:使用 firewalld 仅对管理网段或跳板机开放 27017/tcp。
- 变更生效:每次修改 bindIp 后执行 sudo systemctl restart mongod。
三 加密与传输安全
- 启用 TLS/SSL:准备服务器证书与 CA(可用 OpenSSL 生成),在配置中启用:
- 示例:
- net:
- ssl:
- mode: requireSSL
- PEMKeyFile: /path/to/ssl.pem
- CAFile: /path/to/ca.pem
- 重启服务后,客户端使用 mongosh --tls --tlsCAFile <ca.pem> --host -u -p 连接。
- 说明:MongoDB 默认认证机制为 SCRAM-SHA-1/256;启用 TLS 可保护数据在传输过程中的机密性与完整性。
四 审计、日志与运行环境
- 审计与日志:在 systemLog 中开启文件日志、追加模式与适当冗余级别(如 verbose: true),并配置 auditLog 记录关键操作(连接、鉴权、授权变更、DDL 等),便于合规与溯源。
- 运行账户与权限:使用专用的 mongodb 系统用户运行进程,遵循最小权限原则配置文件系统权限。
- SELinux:若启用 SELinux,按需创建策略或调整布尔值以允许 MongoDB 正常访问所需资源。
- 备份与更新:建立定期备份(物理/逻辑皆可),并及时更新 MongoDB 至包含安全修复的版本,降低暴露面。
五 快速自检与常见加固项对照
- 自检要点:
- 认证与授权:未提供凭据时执行 show dbs 应返回 unauthorized。
- 监听地址:执行 ss -lntp | grep 27017,确认仅监听 127.0.0.1 或指定内网 IP。
- 防火墙:执行 sudo firewall-cmd --list-ports,仅见 27017/tcp 对可信网段开放。
- TLS:使用 mongosh --tls … 能成功连接,非 TLS 连接被拒绝。
- 审计与日志:检查 /var/log/mongodb/mongod.log 与审计日志是否正常落盘。
- 常见加固项与推荐值:
- 认证与授权:authorization: enabled(或命令行 –auth)
- 监听地址:bindIp: 127.0.0.1(或内网 IP)
- 防火墙:仅放行 27017/tcp 到受控来源
- 传输加密:net.ssl.mode: requireSSL + 有效 PEMKeyFile/CAFile
- 审计:auditLog 启用并覆盖关键事件
- 备份与更新:定期备份、及时打补丁