Skip to main content

身份鉴别

测评项:a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;

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

(方法 1)Windows系统中查看 mongod.cfg 文件中 security.authorization 是否为 enabled,若无则需要配置;

5902e6cff7cfcf74651bdf5e1320db8.png


(方法 2)Linux系统中则通过命令查看:cat /etc/mongod.conf | grep "Auth=" 如果有返回行说明安全,否则需要进行修复

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

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

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

#!/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="  

测评项:b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连 接超时自动退出等相关措施。

1)查看是否启用登录失败限制策略 ;  

MongoDB 默认不直接提供登录失败限制 / 锁定功能,需通过以下方式实现:

Windows系统:

(方法1)检查MongoDB配置文件

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

image.png

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

原因:MongoDB 默认不启用登录失败限制策略,或使用了其他方式实现(如系统防火墙)。

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

示例输出:

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

# 命令执行结果:
retryFailedAuthenticationAttempts: 5

参数含义:retryFailedAuthenticationAttempts: 5 表示允许 5 次失败的认证尝试,超过后会临时锁定账户(需 MongoDB 5.0+ 版本支持)。

(方法2)检查Windows防火墙规则

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

image.png

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

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

示例输出(有规则时):

image.png

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

Linux系统:

#(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)查看是否启用登录失败锁定策略 ;  

MongoDB 默认不提供会话超时自动退出功能,需通过以下方式实现:

(方法 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)查看是否启用登录超时退出策略;