内网评估60 条

MongoDB 鉴权检查

MongoDB 常见问题:未启用鉴权、监听全网卡、账号权限过大;核查认证配置与网络暴露面。

MongoDB 鉴权与暴露面

MongoDB 的访问控制默认不启用,早期版本还默认监听全部网卡;只要端口可达就能列出所有数据库、读取集合并执行写入,历史上大量案例是数据被整体清空并留下勒索信息。新版已默认只绑定回环地址,但生产环境为便于远程连接常被改回监听全网卡,而鉴权往往没有同步开启。因此检查聚焦三点:认证是否开启、监听与绑定的地址范围、账号权限是否过大。

基本信息

默认端口27017(也常见自定义端口与副本集其他节点)
核查项认证开关、绑定地址、账号与角色权限
暴露信号无凭据即可列出数据库或集合元数据
加固方向开启认证、绑定内网地址、按最小权限建账号

典型使用场景

  • 内网开发库:为方便联调绑定全网卡且不设账号
  • 远程连接需求:运维打开监听范围以支持异地接入
  • 副本集部署:只检查主节点,遗漏其他节点的暴露面
  • 日志与埋点库:数据量大且含用户行为,暴露后泄露范围广
  • 云上自建:安全组放行过宽导致端口对公网可见

只读检查示例

只读检查示例
mongosh --host 10.0.20.6 --port 27017 --eval 'db.adminCommand({listDatabases:1})'
# 能返回数据库列表即说明未启用认证;记录后立即停止
mongosh --host 10.0.20.6 --eval 'db.runCommand({buildInfo:1}).version'  # 仅记录版本号
# 后续核查认证配置与账号权限,均以管理员配合的方式在配置侧完成
# 不要读取集合内容,也不要执行写入或清空类命令

暴露形态判定

形态判定依据处置建议
未开认证且公网可达无凭据可列库最高优先级:立即收敛并用防火墙拦截
未开认证仅内网可达内网任意主机可连开启认证并限定来源网段
已认证但账号为管理角色业务账号拥有全局权限按库与集合收敛到最小权限
副本集部分暴露个别节点未同步加固逐节点核查配置一致性
新版默认绑定回环地址,暴露多由配置改动造成:修复以纠正配置为主,并核对备份、监控脚本是否依赖原地址。
只做元数据级核查:不读取集合内容作为证据,也不执行任何写入或清理类命令。

易错点

  • 读取集合内容作为证据:即使为证明问题也构成数据泄露,只记录元数据
  • 只检查主节点,忽略副本集其他节点:其他节点往往配置更松
  • 开启认证后未收敛账号权限:业务账号仍持全局角色,风险只降一半
  • 忽视监控与备份脚本依赖:改绑定地址后监控失联、备份失败才发现
  • 只看端口开放不看安全组:云环境需同时核对实例与安全组两层放行

数据来源与参考

  • MongoDB 官方安全清单
  • CIS Benchmarks(MongoDB)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌