身份鉴别
测评项:a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
1) 访谈数据库管理员系统用户是否已设置密码,并查看登录过程中系统账户是否使用了密码进行验证登录,
(方法 1)Windows系统中查看 mongod.cfg 文件中 security.authorization 是否为 enabled,若无则需要配置;
(方法 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"
若配置文件中完全没有 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
若无显示,则表明系统未配置与 MongoDB 端口相关的防火墙规则;
若返回规则列表,需进一步检查是否包含失败连接限制条件(如使用高级安全防火墙自定义规则)。
示例输出(有规则时):
输出字段说明
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)查看是否启用登录超时退出策略;




No comments to display
No comments to display