首页/安全/漏洞与攻击面速查/Consul 未授权访问风险
主机与服务风险面53 条

Consul 未授权访问风险

Consul 提供 HTTP API(8500)、DNS 接口(8600)与集群端口(8300-8302);ACL 未启用时可读取服务目录、KV 数据,甚至注册恶意服务。

漏洞与攻击面速查安全更新于 2026-10-13

Consul 暴露后能做什么

Consul 提供服务发现与键值存储能力,对外接口包括 HTTP API 与 UI(8500)、DNS 接口(8600)以及集群通信端口(8300-8302)。当 ACL 系统未启用或默认策略是允许时,可达者可以读取服务目录与 KV 数据,甚至注册恶意服务把流量引向攻击者控制的地址。

基本信息

HTTP API 与 UI8500
DNS 接口8600
集群通信8300-8302
ACL 要求启用 ACL 且默认策略为 deny
加密要求gossip 加密与 TLS(verify_incoming/outgoing)

典型使用场景

  • 暴露面盘点:确认 8500/8600 是否只对控制面网段可达
  • ACL 审计:确认默认策略是否真的为 deny,而不是形式上的开启
  • 加密核查:检查 gossip 加密与 TLS 双向校验是否已启用
  • UI 收敛:管理界面是否加了认证与来源白名单
  • 上下游梳理:发现依赖 Consul 的应用,评估注册权限是否过宽

核查命令

核查命令
curl -s --max-time 3 http://127.0.0.1:8500/v1/status/leader      # 探测 API 可达性
curl -s http://127.0.0.1:8500/v1/catalog/services | head -c 200  # 服务目录
dig @127.0.0.1 -p 8600 consul.service.consul                     # DNS 接口查询
# 返回内容说明接口可达,需结合 ACL 配置判断是否受控

加固要点

加固要点
1. 启用 ACL 系统,并把默认策略设为 deny
2. 8500/8600 绑定管理网卡,不暴露公网
3. 启用 gossip 加密与 TLS(verify_incoming / verify_outgoing)
4. UI 入口加认证与来源白名单
5. 为应用分配最小权限 token,避免共用高权限令牌

端口与用途

端口用途暴露后果
8500HTTP API 与 UI读取服务目录、KV,注册恶意服务
8600DNS 接口枚举服务拓扑与节点地址
8300集群通信加入或扰动集群通信
8301/8302局域网与广域网 gossip影响集群成员状态
DNS 接口(8600)最常被忽略:未授权时同样可以枚举服务拓扑,而很多环境只加固了 HTTP 端口,端口清单里完全没有 8600。
开了 ACL 但默认策略是 allow,等于没有 ACL:新建的 token 自动获得全部权限,这一类『形式合规』在审计里最容易通过,也最危险。

ACL 上线顺序

  • 先在测试集群启用 ACL 并验证应用仍可注册与发现
  • 为每个应用申请最小权限 token,替代共用令牌
  • 确认默认策略为 deny 后再推广到生产
  • 上线后抽查:用无权限 token 尝试读取目录,应被拒绝
8500 同时承载 HTTP API 与 UI,关闭 UI 并不等于收敛:接口本身仍可被直接调用,ACL 才是访问控制的实际边界。

易错点

  • 开了 ACL 但默认策略是 allow:新建 token 全权限,等于没开
  • 只收敛 8500 漏掉 8600:DNS 接口仍可枚举服务与节点信息
  • 服务注册权限过宽:攻击者注册同名服务把流量引流到自己的地址
  • 只在边界防火墙限制来源:内网横向可达的主机仍可直接访问 API

数据来源与参考

  • HashiCorp Consul 官方文档(Security、ACL 系统)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌