06-MongoDB测评命令

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})

  • 备注:需结合不同版本使用 tlsssl 字段的差异进行判断。
  • 预期证据: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})

主流版本分档

  1. MongoDB 4.2/4.4

  2. MongoDB 5.0

  3. MongoDB 6.0

  4. MongoDB 7.0

重点差异

A. 身份鉴别

推荐命令:

use admin

db.getUsers()

db.system.users.find().pretty()

版本提示:

  1. 核查逻辑总体一致,差异更多在配置项命名和默认安全项。

  2. 对复杂度、定期更换、失败登录处理,仍需重点说明外围实现。

B. 远程管理传输保密

推荐命令:

grep -A2 tls /etc/mongod.conf
grep -A2 ssl /etc/mongod.conf

db.adminCommand({getParameter: 1, tlsMode: 1})

版本提示:

  1. 不同版本可能使用 ssltls 命名。

  2. 现场应优先依据实际配置文件,不要只套用旧脚本。

C. 访问控制

推荐命令:

db.runCommand({rolesInfo: 1, showPrivileges: true, showBuiltinRoles: true})

版本提示:

  1. 角色模型总体兼容,但内置角色说明和扩展能力随版本增强。

D. 备份恢复与高可用

推荐命令:

rs.status()

db.isMaster()

版本提示:

  1. 较新版本部署更常见副本集、分片和云托管方式。

  2. 如遇 db.isMaster() 兼容性问题,可现场以状态命令输出为准并保留截图。

现场编制建议

  1. 4.2/4.4 重点关注基础认证、TLS 和副本集状态。

  2. 5.0/6.0/7.0 重点关注更严格的 TLS、安全默认项和副本集/审计配套。

取证注意事项

  1. MongoDB 大量证据来自配置文件而非单纯数据库命令。

  2. 若是云托管版,需改由控制台或平台侧取证。