匿名绑定的泄露面
LDAP 目录服务如果允许匿名绑定,未认证用户就能读取命名上下文与部分条目:用户名、归属组、邮箱、手机号可以直接导出,为口令尝试与钓鱼提供素材。问题通常不在协议本身,而在默认配置与目录访问控制没有收紧——匿名可读的属性范围,往往比管理员以为的宽得多。
基本信息
| 组件 | OpenLDAP、Active Directory 等目录服务 |
|---|---|
| 默认端口 | 389 明文 LDAP,636 LDAPS |
| 匿名绑定 | 客户端不做认证直接连接,命令行工具用 -x 参数 |
| 可能泄露 | 命名上下文、用户与组条目、邮箱与联系方式属性 |
| 加固方向 | 关闭匿名绑定、目录 ACL 收紧、强制 TLS、专用绑定账号 |
| 检查方式 | 授权范围内用 ldapsearch 验证匿名可读范围 |
核查项与期望
| 核查项 | 检查方式 | 期望状态 |
|---|---|---|
| 命名上下文 | 匿名查询 namingContexts | 不泄露内部目录结构 |
| 用户条目 | 匿名查询 person 类条目 | 被拒绝,或只返回极少条目 |
| 敏感属性 | 匿名读取 mail、mobile 等 | 被 ACL 拒绝 |
| 传输加密 | 检查是否强制 StartTLS 或 LDAPS | 绑定凭据不裸奔 |
| 查询频率 | 查看目录日志 | 异常枚举可被发现并告警 |
匿名绑定测试
匿名绑定测试
# 查看匿名可读的命名上下文
ldapsearch -x -H ldap://ldap.example.com -b '' -s base namingContexts
# 尝试匿名读取用户条目:能返回说明匿名读取未收敛
ldapsearch -x -H ldap://ldap.example.com -b 'dc=example,dc=com' '(objectClass=person)' cn mail
# 限制返回条数,避免对目录服务造成压力
ldapsearch -x -H ldap://ldap.example.com -b 'dc=example,dc=com' -z 20 '(objectClass=person)' cn收敛要点
收敛要点
1. OpenLDAP:olcDisallows 增加 bind_anon,关闭匿名绑定
2. 目录 ACL 收紧,匿名仅允许必要的根查询(如根 DSE)
3. 强制 StartTLS 或 LDAPS,避免绑定凭据明文传输
4. 查询频率限制与失败日志告警,异常枚举可被及时发现
5. 应用改用专用绑定账号,避免共享高权限账号典型使用场景
- 目录服务上线前的匿名绑定核查
- 季度巡检中的身份服务暴露面检查
- 渗透测试报告里目录信息泄露问题的整改
- 关闭匿名绑定后的应用回归验证
- 账号枚举风险排查(钓鱼前置动作)
- 审计举证:ACL 规则与专用绑定账号清单
关闭匿名绑定后需要回归应用:部分系统把匿名读取当作默认探测方式,关闭后可能直接报错,建议先在测试环境验证。
目录里可读的姓名、部门与邮箱是钓鱼攻击的直接素材,可枚举的账号清单还会方便后续口令尝试,不要把它当低风险项处理。