# 身份鉴别

<span style="color: rgb(224, 62, 45);">**测评项：a）应对登录的用户进行身份标识和鉴别，身份标识具有唯一性，身份鉴别信息具有复杂度要求并定期更换；**</span>

1\) 访谈数据库管理员系统用户是否已设置密码，并查看登录过程中系统账户是否使用了密码进行验证登录，

（方法 1）Windows系统中查看 **<span style="color: rgb(35, 111, 161);">mongod.cfg </span>**文件中 security.authorization 是否为 enabled，若无则需要配置；

[![5902e6cff7cfcf74651bdf5e1320db8.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/5902e6cff7cfcf74651bdf5e1320db8.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/5902e6cff7cfcf74651bdf5e1320db8.png)

  
（方法 2）Linux系统中则通过命令查看：cat /etc/**<span style="color: rgb(35, 111, 161);">mongod.conf</span>** | grep "Auth=" 如果有返回行说明安全，否则需要进行修复

2\) 确保 MongoDB 本地用户也不能绕过身份验证，查询是否含有配置项 cat /etc/mongod.conf | grep "enableLocalhostAuthBypass" 如果没有返回行说明安全，否则需要进行修复

3\) 确保 MongoDB 身份验证在集群环境下正常使用，集群环境中身份验证依赖于密钥。如果不使用密钥，在集群的环境中会出现绕过身份验证，非授权用户登录到 MongoDB.  
查询是否含有配置项 cat /etc/mongod.conf | grep "keyFile=" 如果有返回行说明安全，否则需要进行修复

访谈数据库管理员是否启用口令复杂度配置，Linux系统检查配置命令如下：

```json
#!/bin/bash

# 1. 访谈数据库管理员是否启用口令复杂度配置:  

# 查看MongoDB的主配置文件，获取当前的配置设置  
cat /etc/mongod.conf  

# 检查配置文件中是否启用了安全授权（security.authorization）  
cat /etc/mongod.conf | grep security.authorization  

# 查找配置文件中关于认证模式（Auth=）的设置  
cat /etc/mongod.conf | grep "Auth="  

# 检查是否允许本地访问绕过身份验证（enableLocalhostAuthBypass）的设置  
cat /etc/mongod.conf | grep "enableLocalhostAuthBypass"  

# 查看配置文件中关于密钥文件（keyFile）的设置  
cat /etc/mongod.conf | grep "keyFile="  
```

<span style="color: rgb(224, 62, 45);">**测评项：b）应具有登录失败处理功能，应配置并启用结束会话、限制非法登录次数和当登录连 接超时自动退出等相关措施。**</span>

1)查看是否启用**<span style="color: rgb(35, 111, 161);">登录失败限制</span>**策略 ;

**<span style="color: rgb(35, 111, 161);">MongoDB 默认不直接提供登录失败限制 / 锁定功能</span>**，需通过以下方式实现：

**<span style="color: rgb(35, 111, 161);">Windows系统：</span>**

（方法1）检查MongoDB配置文件

```json
 Get-Content "C:\Program Files\MongoDB\Server\版本号\bin\mongod.cfg" | Select-String -Pattern "retryFailedAuthenticationAttempts"
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/iatimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/iatimage.png)

若配置文件中完全没有 retryFailedAuthenticationAttempts 字段，命令会静默返回空结果（不报错）。

原因：**<span style="color: rgb(35, 111, 161);">MongoDB 默认不启用登录失败限制策略</span>**，或使用了其他方式实现（如系统防火墙）。

若 MongoDB 已启用登录失败限制策略（即配置了 retryFailedAuthenticationAttempts 参数），这段 PowerShell 命令会返回配置文件中包含该参数的行。例如：

示例输出：

```json
# 假设配置文件中有如下配置：
security:
  authorization: enabled
  retryFailedAuthenticationAttempts: 5  # 限制 5 次失败尝试

# 命令执行结果：
retryFailedAuthenticationAttempts: 5
```

参数含义：retryFailedAuthenticationAttempts: 5 表示允许 5 次失败的认证尝试，超过后会临时锁定账户（需<span style="color: rgb(35, 111, 161);"> **MongoDB 5.0+**</span> 版本支持）。

（方法2）检查Windows防火墙规则

```json
# 查看是否有针对 MongoDB 端口的失败连接限制规则
Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*MongoDB*" -or $_.LocalPort -eq 27017} | Format-Table DisplayName,Direction,Action,Enabled
```

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/mWoimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/mWoimage.png)

若无显示，则表明系统未配置与 MongoDB 端口相关的防火墙规则；

若返回规则列表，需进一步检查是否包含失败连接限制条件（如使用高级安全防火墙自定义规则）。

示例输出（有规则时）：

[![image.png](https://document.nat.ac.cn/uploads/images/gallery/2025-07/scaled-1680-/sgqimage.png)](https://document.nat.ac.cn/uploads/images/gallery/2025-07/sgqimage.png)

输出字段说明  
DisplayName：防火墙规则的显示名称（如管理员自定义的规则名称）。  
Direction：规则方向（Inbound 入站 / Outbound 出站）。  
Action：规则动作（Allow 允许 / Block 阻止）。  
Enabled：规则是否启用（True 启用 / False 禁用）。

<span style="color: rgb(35, 111, 161);">**Linux系统：**</span>

```json
#（1）检查 MongoDB 自身配置（适用于 MongoDB 5.0+）
# 检查是否配置了 retryFailedAuthenticationAttempts 参数（需在 mongod.conf 中配置）
cat /etc/mongod.conf | grep -i "retryFailedAuthenticationAttempts"
#若返回类似 retryFailedAuthenticationAttempts: 5，表示启用了失败重试限制（示例为 5 次）。

#（2）或者检查系统级防火墙规则（如 iptables）
# 查看是否有针对 MongoDB 端口（默认 27017）的失败连接限制规则
iptables -L -n | grep 27017
#若返回类似 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:27017 state INVALID,NEW recent: SET name: DEFAULT side: source，表示通过防火墙限制了失败连接。

```

2)查看是否启用登录失败锁定策略 ;

<span style="color: rgb(35, 111, 161);">**MongoDB 默认不提供会话超时自动退出功能**</span>，需通过以下方式实现：

（方法 1）：检查客户端连接超时配置

javascript  
// 在 MongoDB Shell 中执行，查看当前会话的 idleSessionTimeoutMinutes 参数  
db.adminCommand({ getParameter: 1, idleSessionTimeoutMinutes: 1 })

  
若返回 { "idleSessionTimeoutMinutes": 30, ok: 1 }，表示会话空闲 30 分钟后自动超时（需 MongoDB 4.4+）。

（方法 2）：检查 MongoDB 配置文件

bash  
\# Linux 系统  
cat /etc/mongod.conf | grep -i "idleSessionTimeoutMinutes"

\# Windows 系统  
Get-Content "C:\\Program Files\\MongoDB\\Server\\{版本号}\\bin\\mongod.cfg" | Select-String -Pattern "idleSessionTimeoutMinutes"

若返回类似配置项，说明已启用会话超时策略。

  
3)查看是否启用登录超时退出策略;