06-MongoDB测评命令
Categories:
2 分钟阅读
MongoDB数据库三级等级保护现场核查命令脚本(统一编号版)
适用范围:MongoDB 4.x/5.x/6.x
基础信息
mongo --version
db.version()
db.adminCommand({getCmdLineOpts: 1})
- 备注:用于确认数据库版本、启动参数和当前部署方式。
- 预期证据:版本截图、启动参数截图、部署说明。
示例输出(节选)
$ mongo --version
MongoDB shell version v6.0.14
Build Info: {
"version": "6.0.14",
"gitVersion": "xxx…",
"modules": [],
"openssl": {"running": "OpenSSL 1.0.2k-fips"}
}
> db.version()
6.0.14
> db.adminCommand({getCmdLineOpts: 1})
{
argv: [ "/opt/app/mongodb/bin/mongod", "--config", "/etc/mongod.conf" ],
parsed: { net: { port: 27017 }, ... }
}
身份鉴别
A. 身份标识唯一、口令复杂度、定期更换
use admin
db.getUsers()
db.system.users.find().pretty()
备注:MongoDB 原生对复杂度与定期更换支持有限,通常需依赖 LDAP/AD 或外围平台。
预期证据:用户列表截图、统一认证截图、账号管理制度。
B. 登录失败处理、会话超时退出
grep authorization -A2 -B2 /etc/mongod.conf
grep authFailedDelayMs /etc/mongod.conf
- 备注:原生登录失败处理能力有限,三级通常需要第三方补强;超时退出常依赖应用端或外围平台。
- 预期证据:配置文件截图、第三方控制策略截图、访谈记录。
示例输出(节选)
$ grep authorization -A2 -B2 /etc/mongod.conf
security:
authorization: enabled
$ grep authFailedDelayMs /etc/mongod.conf
authFailedDelayMs: 500
C. 远程管理传输保密
grep -A2 tls /etc/mongod.conf
grep -A2 ssl /etc/mongod.conf
db.adminCommand({getParameter: 1, tlsMode: 1})
- 备注:需结合不同版本使用
tls或ssl字段的差异进行判断。 - 预期证据:TLS/SSL 配置截图、证书截图、远程连接说明。
示例输出(节选)
$ grep -A4 tls /etc/mongod.conf
net:
tls:
mode: requireTLS
certificateKeyFile: /opt/app/mongodb/pem/server.pem
$ mongo --tls --host 192.168.10.15 --eval 'db.adminCommand({getParameter:1, tlsMode:1})'
{ tlsMode: 'requireTLS', ok: 1 }
D. 组合鉴别
备注:一般依赖 LDAP、Kerberos、堡垒机或统一认证系统实现。
预期证据:统一认证截图、堡垒机截图、访谈记录。
访问控制
A. 账户、角色、权限分配
db.getUsers()
db.runCommand({rolesInfo: 1, showPrivileges: true, showBuiltinRoles: true})
备注:重点核查用户角色与权限范围。
预期证据:用户/角色截图、权限分配截图、岗位分工说明。
B. 默认账户、多余账户、来源与高权限账户
备注:重点核查 root、userAdminAnyDatabase、dbAdminAnyDatabase 等高权限账户及未使用账户。
预期证据:高权限角色截图、账号台账、抽查记录。
C. 细粒度授权与最小权限
db.runCommand({rolesInfo: 1, showPrivileges: true})
备注:重点关注是否对重要库、集合、操作权限进行了细粒度控制。
预期证据:角色权限截图、敏感集合权限抽查记录。
D. 角色继承与特殊角色
db.runCommand({rolesInfo: 1, showBuiltinRoles: true})
备注:重点说明内置角色和自定义角色的继承关系。
预期证据:角色继承截图、角色设计说明。
安全审计
A. 审计功能是否开启
grep auditLog -A5 /etc/mongod.conf
grep systemLog -A5 /etc/mongod.conf
- 备注:重点核查原生日志或审计能力是否启用。
- 预期证据:配置文件截图、日志配置截图、审计平台截图。
示例输出(节选)
$ grep auditLog -A5 /etc/mongod.conf
auditLog:
destination: file
format: JSON
path: /opt/app/mongodb/log/audit.json
$ grep systemLog -A5 /etc/mongod.conf
systemLog:
destination: file
path: /opt/app/mongodb/log/mongod.log
B. 审计范围与审计对象
备注:核查是否覆盖登录、配置变更、关键集合访问等行为。
预期证据:审计事件样例、审计策略截图、制度说明。
C. 审计日志保护与留存
备注:核查日志路径、目录权限、留存周期、备份和集中存储方式。
预期证据:日志路径截图、权限截图、日志留存策略、备份策略。
D. 审计失效告警
备注:补查日志采集、监控、告警和审计平台。
预期证据:告警规则截图、告警样例、监控平台截图。
数据完整性
A. 传输过程完整性
grep -A2 tls /etc/mongod.conf
- 备注:TLS 可作为传输完整性的重要证据。
- 预期证据:TLS 配置截图、证书截图、连接方式说明。
示例输出(节选)
$ grep -A3 tls /etc/mongod.conf
net:
tls:
mode: requireTLS
certificateKeyFile: /opt/app/mongodb/pem/server.pem
B. 存储过程完整性
备注:结合 WiredTiger、磁盘、备份和审计数据保护方式判定。
预期证据:存储配置说明、备份校验记录、制度材料。
数据保密性
A. 传输过程保密性
db.adminCommand({getParameter: 1, tlsMode: 1})
备注:应证明数据库管理连接和重要业务连接采用了加密传输。
预期证据:TLS 模式截图、连接加密说明、运维链路说明。
B. 存储过程保密性
备注:结合存储加密、磁盘加密或应用层加密核查。
预期证据:磁盘加密截图、加密方案说明、制度材料。
备份恢复
A. 本地数据备份与恢复
备注:补查备份脚本、任务计划、恢复演练记录。
预期证据:备份任务截图、脚本、恢复演练记录。
B. 异地实时备份
rs.status()
备注:重点核查副本集状态和异地部署情况。
预期证据:副本集状态截图、异地部署说明、拓扑图。
C. 热冗余与高可用
db.isMaster()
备注:副本集、分片和切换演练是关键证据。
预期证据:主从状态截图、切换记录、演练材料。
剩余信息保护
A. 鉴别信息所在存储空间释放前清除
备注:通常需结合磁盘加密、存储回收和介质销毁制度综合判定。
预期证据:清除制度、销毁记录、存储平台策略。
B. 敏感数据所在存储空间释放前清除
备注:同上。
预期证据:设备回收制度、销毁记录、加密截图。
个人信息保护
A. 个人信息访问控制与审计
备注:抽查集合、字段级访问控制和导出审计。
预期证据:权限截图、审计截图、抽查记录。
B. 个人信息存储与传输保护
备注:抽查加密、脱敏和专门保护措施。
预期证据:加密说明、脱敏策略截图、分类分级文件。
入侵防范
A. 访问来源限制/白名单
备注:结合数据库监听/配置与防火墙策略,确认仅允许授权来源访问。
预期证据:数据库访问控制或监听配置截图、主机/网络防火墙策略、堡垒机访问策略截图。
B. 异常访问与爆破防护
备注:结合登录失败处理、连接限制、WAF/堡垒机/防暴力破解策略,确认具备阻断或告警能力。
预期证据:失败登录限制参数截图、策略截图、告警样例、访谈记录。
C. 漏洞扫描与补丁管理
备注:确认数据库漏洞扫描周期、补丁评估与修复流程。
预期证据:漏洞扫描报告、补丁更新记录、变更单。
D. 恶意代码/工具防护
备注:确认主机侧安全防护软件或EDR对数据库进程的防护与告警能力。
预期证据:安全软件截图、策略配置截图、告警样例。
时间同步与日志一致性
备注:确认数据库服务器时间同步(NTP/chrony),保证审计日志时间一致、可溯源。
预期证据:NTP/chrony 配置截图、时间同步状态截图、运维制度或巡检记录。
主流版本差异说明
MongoDB主流版本核查差异说明
版本识别
mongo --version
db.version()
db.adminCommand({getCmdLineOpts: 1})
主流版本分档
MongoDB 4.2/4.4
MongoDB 5.0
MongoDB 6.0
MongoDB 7.0
重点差异
A. 身份鉴别
推荐命令:
use admin
db.getUsers()
db.system.users.find().pretty()
版本提示:
核查逻辑总体一致,差异更多在配置项命名和默认安全项。
对复杂度、定期更换、失败登录处理,仍需重点说明外围实现。
B. 远程管理传输保密
推荐命令:
grep -A2 tls /etc/mongod.conf
grep -A2 ssl /etc/mongod.conf
db.adminCommand({getParameter: 1, tlsMode: 1})
版本提示:
不同版本可能使用
ssl或tls命名。现场应优先依据实际配置文件,不要只套用旧脚本。
C. 访问控制
推荐命令:
db.runCommand({rolesInfo: 1, showPrivileges: true, showBuiltinRoles: true})
版本提示:
- 角色模型总体兼容,但内置角色说明和扩展能力随版本增强。
D. 备份恢复与高可用
推荐命令:
rs.status()
db.isMaster()
版本提示:
较新版本部署更常见副本集、分片和云托管方式。
如遇
db.isMaster()兼容性问题,可现场以状态命令输出为准并保留截图。
现场编制建议
4.2/4.4 重点关注基础认证、TLS 和副本集状态。
5.0/6.0/7.0 重点关注更严格的 TLS、安全默认项和副本集/审计配套。
取证注意事项
MongoDB 大量证据来自配置文件而非单纯数据库命令。
若是云托管版,需改由控制台或平台侧取证。