Elasticsearch 暴露面
Elasticsearch 提供 REST 风格的检索接口,默认配置下不要求认证:只要 9200 可达,任何人都能查看集群状态、索引清单与字段映射,还能通过查询接口直接读取文档内容。日志与埋点类索引里常有账号、订单、用户行为等数据,泄露后果直接可见。官方从 7.x 起提供安全特性,覆盖认证、传输加密与基于角色的权限,但并非所有部署都开启。检查聚焦接口可达性、安全特性启用情况与索引数据的敏感度分级。
基本信息
| 主要端口 | 9200 走 HTTP/REST,9300 用于节点间通信 |
|---|---|
| 核查项 | 接口可达性、认证与加密开关、索引敏感度 |
| 暴露信号 | 匿名即可查询索引元数据或文档 |
| 处置方向 | 启用安全特性、收敛网段、按索引分级授权 |
典型使用场景
- 日志集中检索:业务与访问日志进入索引,含用户标识与来源地址
- 应用搜索后端:商品或内容索引可被读,亦可被写入篡改
- 监控与埋点:行为数据量大且字段丰富,可拼出用户画像
- 快速搭建遗留:为验证功能临时开放且一直未收敛
- 配套组件暴露:Kibana 与采集组件端口同样可能对外可达
只读检查示例
只读检查示例
curl -s --max-time 5 http://10.0.20.7:9200/ # 查看版本与集群信息
curl -s --max-time 5 http://10.0.20.7:9200/_cat/indices?v | head -20
# 能列出索引即说明未开启认证;记录索引名称与数量后停止
# 不要使用搜索接口读取文档内容,也不要执行写入或删除类请求暴露形态判定
| 形态 | 判定依据 | 处置建议 |
|---|---|---|
| 公网可达且无认证 | 外部可直接访问接口 | 最高优先级:立即限制来源并启用认证 |
| 内网可达且无认证 | 内网任意主机可读 | 启用安全特性并限定网段 |
| 已认证但权限过宽 | 普通账号可见全部索引 | 按索引与字段收敛到角色权限 |
| 仅 Kibana 可达 | 面板可访问且未认证 | 面板与后端一并收敛,避免绕过授权 |
全程只做元数据核查:不导出文档内容,不执行写入、删除或重建索引类请求,避免造成数据泄露与破坏。
日志类索引常含敏感业务数据,暴露面应按数据分级定级;同时核对 Kibana、采集器与快照仓库等配套组件的可达性。