# 06-MongoDB测评命令

LLMS index: [llms.txt](/wikis/llms.txt)

---

MongoDB数据库三级等级保护现场核查命令脚本（统一编号版）

适用范围：MongoDB 4.x/5.x/6.x

## 基础信息

```bash
mongo --version
```

db.version()

db.adminCommand({getCmdLineOpts: 1})

- **备注**：用于确认数据库版本、启动参数和当前部署方式。
- **预期证据**：版本截图、启动参数截图、部署说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">mongo</span><span class="w"> </span><span class="c1">--version
</span></span></span><span class="line"><span class="cl"><span class="n">MongoDB</span><span class="w"> </span><span class="n">shell</span><span class="w"> </span><span class="k">version</span><span class="w"> </span><span class="n">v6</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">14</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">Build</span><span class="w"> </span><span class="n">Info</span><span class="p">:</span><span class="w"> </span><span class="err">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="s2">&#34;version&#34;</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;6.0.14&#34;</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="s2">&#34;gitVersion&#34;</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;xxx…&#34;</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="s2">&#34;modules&#34;</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="s2">&#34;openssl&#34;</span><span class="p">:</span><span class="w"> </span><span class="err">{</span><span class="s2">&#34;running&#34;</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;OpenSSL 1.0.2k-fips&#34;</span><span class="err">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">&gt;</span><span class="w"> </span><span class="n">db</span><span class="p">.</span><span class="k">version</span><span class="p">()</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="mi">6</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">14</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">&gt;</span><span class="w"> </span><span class="n">db</span><span class="p">.</span><span class="n">adminCommand</span><span class="p">(</span><span class="err">{</span><span class="n">getCmdLineOpts</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="err">}</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">argv</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">&#34;/opt/app/mongodb/bin/mongod&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;--config&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;/etc/mongod.conf&#34;</span><span class="w"> </span><span class="p">],</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">parsed</span><span class="p">:</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">net</span><span class="p">:</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">port</span><span class="p">:</span><span class="w"> </span><span class="mi">27017</span><span class="w"> </span><span class="err">}</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="err">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">}</span><span class="w">
</span></span></span></code></pre></div>
</details>



## 身份鉴别

### A. 身份标识唯一、口令复杂度、定期更换

use admin

db.getUsers()

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

- **备注**：MongoDB 原生对复杂度与定期更换支持有限，通常需依赖 LDAP/AD 或外围平台。

- **预期证据**：用户列表截图、统一认证截图、账号管理制度。

### B. 登录失败处理、会话超时退出

```bash
grep authorization -A2 -B2 /etc/mongod.conf
grep authFailedDelayMs /etc/mongod.conf
```

- **备注**：原生登录失败处理能力有限，三级通常需要第三方补强；超时退出常依赖应用端或外围平台。
- **预期证据**：配置文件截图、第三方控制策略截图、访谈记录。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">grep</span><span class="w"> </span><span class="k">authorization</span><span class="w"> </span><span class="o">-</span><span class="n">A2</span><span class="w"> </span><span class="o">-</span><span class="n">B2</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">mongod</span><span class="p">.</span><span class="n">conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">security</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="k">authorization</span><span class="p">:</span><span class="w"> </span><span class="n">enabled</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">grep</span><span class="w"> </span><span class="n">authFailedDelayMs</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">mongod</span><span class="p">.</span><span class="n">conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">authFailedDelayMs</span><span class="p">:</span><span class="w"> </span><span class="mi">500</span><span class="w">
</span></span></span></code></pre></div>
</details>



### C. 远程管理传输保密

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

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

- **备注**：需结合不同版本使用 `tls` 或 `ssl` 字段的差异进行判断。
- **预期证据**：TLS/SSL 配置截图、证书截图、远程连接说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">grep</span><span class="w"> </span><span class="o">-</span><span class="n">A4</span><span class="w"> </span><span class="n">tls</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">mongod</span><span class="p">.</span><span class="n">conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">net</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">tls</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">mode</span><span class="p">:</span><span class="w"> </span><span class="n">requireTLS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">certificateKeyFile</span><span class="p">:</span><span class="w"> </span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">app</span><span class="o">/</span><span class="n">mongodb</span><span class="o">/</span><span class="n">pem</span><span class="o">/</span><span class="n">server</span><span class="p">.</span><span class="n">pem</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">mongo</span><span class="w"> </span><span class="c1">--tls --host 192.168.10.15 --eval &#39;db.adminCommand({getParameter:1, tlsMode:1})&#39;
</span></span></span><span class="line"><span class="cl"><span class="err">{</span><span class="w"> </span><span class="n">tlsMode</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;requireTLS&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">ok</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="err">}</span><span class="w">
</span></span></span></code></pre></div>
</details>



### 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. 审计功能是否开启

```bash
grep auditLog -A5 /etc/mongod.conf
grep systemLog -A5 /etc/mongod.conf
```

- **备注**：重点核查原生日志或审计能力是否启用。
- **预期证据**：配置文件截图、日志配置截图、审计平台截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">grep</span><span class="w"> </span><span class="n">auditLog</span><span class="w"> </span><span class="o">-</span><span class="n">A5</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">mongod</span><span class="p">.</span><span class="n">conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">auditLog</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">destination</span><span class="p">:</span><span class="w"> </span><span class="n">file</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">format</span><span class="p">:</span><span class="w"> </span><span class="n">JSON</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">path</span><span class="p">:</span><span class="w"> </span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">app</span><span class="o">/</span><span class="n">mongodb</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">audit</span><span class="p">.</span><span class="n">json</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">grep</span><span class="w"> </span><span class="n">systemLog</span><span class="w"> </span><span class="o">-</span><span class="n">A5</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">mongod</span><span class="p">.</span><span class="n">conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">systemLog</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">destination</span><span class="p">:</span><span class="w"> </span><span class="n">file</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">path</span><span class="p">:</span><span class="w"> </span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">app</span><span class="o">/</span><span class="n">mongodb</span><span class="o">/</span><span class="n">log</span><span class="o">/</span><span class="n">mongod</span><span class="p">.</span><span class="n">log</span><span class="w">
</span></span></span></code></pre></div>
</details>



### B. 审计范围与审计对象

- **备注**：核查是否覆盖登录、配置变更、关键集合访问等行为。

- **预期证据**：审计事件样例、审计策略截图、制度说明。

### C. 审计日志保护与留存

- **备注**：核查日志路径、目录权限、留存周期、备份和集中存储方式。

- **预期证据**：日志路径截图、权限截图、日志留存策略、备份策略。

### D. 审计失效告警

- **备注**：补查日志采集、监控、告警和审计平台。

- **预期证据**：告警规则截图、告警样例、监控平台截图。

## 数据完整性

### A. 传输过程完整性

```bash
grep -A2 tls /etc/mongod.conf
```

- **备注**：TLS 可作为传输完整性的重要证据。
- **预期证据**：TLS 配置截图、证书截图、连接方式说明。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="err">$</span><span class="w"> </span><span class="n">grep</span><span class="w"> </span><span class="o">-</span><span class="n">A3</span><span class="w"> </span><span class="n">tls</span><span class="w"> </span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">mongod</span><span class="p">.</span><span class="n">conf</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">net</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="n">tls</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">mode</span><span class="p">:</span><span class="w"> </span><span class="n">requireTLS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">certificateKeyFile</span><span class="p">:</span><span class="w"> </span><span class="o">/</span><span class="n">opt</span><span class="o">/</span><span class="n">app</span><span class="o">/</span><span class="n">mongodb</span><span class="o">/</span><span class="n">pem</span><span class="o">/</span><span class="n">server</span><span class="p">.</span><span class="n">pem</span><span class="w">
</span></span></span></code></pre></div>
</details>



### 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 配置截图、时间同步状态截图、运维制度或巡检记录。

## 主流版本差异说明

```bash
MongoDB主流版本核查差异说明
```

## 版本识别

```bash
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. 远程管理传输保密

推荐命令：

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

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

版本提示：

1. 不同版本可能使用 `ssl` 或 `tls` 命名。

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. 若是云托管版，需改由控制台或平台侧取证。
