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

Elasticsearch 未授权与暴露风险

ES 默认提供 HTTP 接口(9200),历史版本默认无认证;暴露后索引数据可被直接读取、删除,集群信息与节点元数据也会泄露。

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

Elasticsearch 暴露风险是什么

Elasticsearch 默认提供 HTTP 接口(9200)用于查询与管理,早期版本默认不启用认证,且安装后倾向监听所有网卡。这样的组合在暴露到网络后意味着任何人都能读取索引数据、查看集群与节点信息,甚至通过接口删除索引。由于 ES 常被用于存放日志与业务检索数据,泄露内容可能包含账号、内部拓扑与业务明细。防护的关键是把「网络可达」与「认证与授权」两件事一起处理:绑定内网地址、启用安全功能并为每个业务建最小权限角色。

基本信息

默认端口9200 HTTP,9300 节点间通信
默认认证状态早期版本无认证;6.8/7.1 起安全功能在基础许可中提供
常见暴露原因network.host 设为 0.0.0.0、云安全组放行、容器端口映射
直接危害索引数据读取与删除、集群信息泄露、资源被滥用
加固要点绑定内网、启用安全功能、按业务建最小权限角色
配套控制前置网关加认证与限来源、开启审计日志

典型暴露场景

  • 多节点集群为节点发现方便,把 network.host 改为全网卡监听
  • 云主机把 9200 加入安全组放行以便本地调试
  • 容器部署时把端口映射到宿主机全网卡
  • Kibana 与 ES 同机部署,前端暴露后直接可达后端接口
  • 版本升级时未同步启用安全功能与账号体系
  • 默认索引命名规则被外部掌握,攻击者可直接定位敏感索引

暴露核查(对本方资产)

暴露核查(对本方资产)
curl -s http://<目标IP>:9200/
# 返回 cluster_name 等 JSON 信息说明接口可达且未拦截
curl -s http://<目标IP>:9200/_cat/indices?v | head
# 若返回 401/403 说明已启用认证或前置网关拦截
# 核查仅限自有或已获书面授权的资产

加固要点

加固要点
1. network.host 绑定内网地址
2. 启用安全功能(X-Pack Security 基础版可用)配置用户与角色
3. 禁止直接暴露公网:前置 Nginx 加认证且仅内网可达
4. 开启审计日志监控异常访问
5. 按业务拆分索引与角色权限,避免共用超级用户
6. 快照与备份存放到不可公开访问的位置

风险点与加固动作

风险点后果加固动作
网络可达任意客户端读取索引绑定内网并收敛安全组
无认证无需凭据即可查询与删除启用安全功能与账号体系
角色过宽一处凭据泄露即可读全量数据按索引与操作拆分角色
无审计访问行为无法追溯开启审计并集中收集
备份暴露快照文件泄露全量数据备份位置加固并限制访问
ES 的安全功能自 6.8/7.1 起在基础许可中免费提供;启用后为各业务创建最小权限角色。
收敛前先确认业务调用方:应用、Kibana、日志采集与监控都可能依赖该接口,直接关闭监听会导致数据链路中断。

易错点

  • 只在前端网关加 Basic 认证不限制来源:网关本身暴露时认证可被暴力尝试
  • 为节点发现把监听改回全网卡:集群内部通信与对外服务监听必须区分
  • 所有业务共用一个超级账号:一处泄露等于全量数据可见
  • 忽略 Kibana 与采集端:它们的配置里同样写着 ES 地址与凭据,需要同步收敛
  • 开启认证后不做回归:采集与看板可能因权限调整停止工作,需在测试环境先验证
  • 备份快照可公开下载:数据保护的边界要覆盖备份链路,而不是只保护实例

数据来源与参考

  • Elastic 官方文档(Security 设置与 network.host)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌