最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何借助安全基线扫描MongoDB的配置合规性
时间:2026-07-13 09:35:03 编辑:袖梨 来源:一聚教程网
扫描前必须确认mongod已启用访问控制,若security.authorization未设为enabled或未加--auth,则所有扫描结果不可信;实操需检查配置文件、运行getCmdLineOpts验证授权状态,未启用则须修正并重启服务。
扫描前必须确认 mongod 已启用访问控制
没开 security.authorization: enabled 或启动时没加 --auth,所有后续扫描结果都不可信——连基础身份验证都没生效,合规性检查直接失效。
实操建议:
- 查配置文件(如
/etc/mongod.conf)里security.authorization是否为true - 进 shell 执行
db.runCommand({getCmdLineOpts: 1}),看parsed.security.authorization字段值是否为"enabled" - 若返回
"authorization" : "disabled",停止扫描,先修正配置并重启服务
用 mongo-audit 扫描时权限和连接参数常出错
工具连得上不等于能扫全。常见失败不是报错,而是静默漏检或卡住,尤其在 MongoDB 6.0+ 上。
实操建议:
- 扫描账号必须有
clusterAdmin+readAnyDatabase角色,仅root不够(某些审计命令需集群级权限) - 脚本若未显式切换到 admin 库,
listDatabases在非 admin 上默认被禁用——改用--eval "db.getSiblingDB('admin').runCommand({listDatabases: 1})" - TLS 连接别依赖配置自动推断,强制加参数:
--tls --tlsCAFile /path/to/ca.pem,否则可能卡在 handshake 阶段无提示
默认 admin 用户未重命名会被合规工具直接标高危
CIS MongoDB Benchmark、Nessus 等工具会直接匹配用户名为 admin 的 root 角色账户,命中即报“Default administrative account exists”。
实操建议:
- 执行
use admin后运行:db.getUsers({filter: {roles: {$elemMatch: {role: "root", db: "admin"}}}}) - 若返回中含
user: "admin",必须新建语义化账户(如"ops-admin-2026"),再执行db.dropUser("admin") - 只改密码无效——用户名本身是检测依据
密码策略和 TLS 版本不达标,社区版需绕过原生限制
MongoDB 社区版不支持口令复杂度、过期周期等策略,等保/ISO 27001 要求的“最小长度 12、历史密码禁止复用”无法靠 db.createUser() 实现。
实操建议:
- 社区版只能靠 OS 层 PAM 补足:确认
/etc/pam.d/mongod加载了pam_pwquality.so,且配置minlen=12 difok=5 - TLS 必须为 1.2+:检查
net.tls.mode: requireTLS,并用openssl s_client -connect host:27017 -tls1_2实测握手是否成功 - 密钥硬编码是高频高危项——
encryptionKeyFile路径不能出现在配置文件明文里,应由密钥管理服务(KMS)动态注入
相关文章
- 王者荣耀世界零氪玩家如何生存 07-28
- 快手极速版怎么绑定手机号 07-28
- 明日方舟和轻松小熊联动活动内容一览 07-28
- 逆战未来黎明之光 逆战未来黎明之光玩法机制与新手入门指南 07-28
- 植物大战僵尸融合版毁灭土豆地雷介绍 07-28
- 逆战未来飓风之龙 逆战未来飓风之龙武器获取方法详解 07-28