适用场景
Elasticsearch 安全加固适用于以下场景:服务器上部署了 Elasticsearch 集群但未配置任何访问认证,公网或内网其他主机可直接访问 9200 端口读取全部索引数据;使用 Elasticsearch 存储日志、业务数据或敏感信息,需要满足等保合规或内部审计要求;或者已经发生过数据被删除、索引被篡改等疑似未授权访问事件,需要立即收紧访问控制。
前置条件
- 已安装 Elasticsearch 7.x 或 8.x 版本,服务正常启动
- 拥有服务器 root 权限或可操作 Elasticsearch 配置文件的用户
- 集群使用官方发行版(含 X-Pack 基础安全功能)
- 已规划好节点证书与密码管理方案
原理说明
Elasticsearch 默认监听 0.0.0.0:9200,且早期版本(6.x 及以前)默认不启用任何认证机制,任何能访问该端口的客户端都可以通过 REST API 直接读写数据,形成典型的未授权访问漏洞。攻击者常用 curl http://ip:9200/_cat/indices 探测索引列表,再通过 _search、_delete 等接口窃取或破坏数据。安全加固的核心思路有三个层面:网络层用防火墙限制来源 IP,传输层启用 TLS 加密通信,应用层开启 X-Pack 安全模块实现用户名密码认证与基于角色的访问控制(RBAC)。
操作步骤
第一步:关闭公网暴露并启用防火墙
先确认监听地址,若配置了 0.0.0.0 则立即收紧:
# 查看监听状态
netstat -tlnp | grep 9200
# iptables 仅允许内网网段访问
iptables -A INPUT -p tcp --dport 9200 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 9200 -j DROP
iptables-save > /etc/sysconfig/iptables
第二步:启用 X-Pack 安全认证
编辑 /etc/elasticsearch/elasticsearch.yml:
network.host: 192.168.1.10
http.port: 9200
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/certs/elastic-certificates.p12
第三步:生成节点证书并创建密码
# 生成 CA 与节点证书
/usr/share/elasticsearch/bin/elasticsearch-certutil cert -out /etc/elasticsearch/certs/elastic-certificates.p12 -pass ""
# 重启后为内置用户设置密码
systemctl restart elasticsearch
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
第四步:验证认证生效
# 无凭证访问应返回 401
curl http://192.168.1.10:9200/
# 使用凭证访问正常
curl -u elastic:密码 http://192.168.1.10:9200/_cluster/health
配置验证
通过以下清单确认加固完成:未携带凭证的请求全部返回 401;携带正确账号密码可正常读写;跨节点通信使用 TLS 加密;9200 端口仅对内网网段开放。
常见问题
Q1:启用安全模块后 Kibana 无法连接怎么办?
Kibana 需要同步配置 Elasticsearch 地址、用户名与密码,并安装同版本证书。在 kibana.yml 中设置 elasticsearch.username 与 elasticsearch.password,同时把 CA 证书加入信任列表即可。
Q2:忘记 elastic 用户密码如何重置?
可以使用 elasticsearch-reset-password 工具重置:/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i,该操作需要本地文件系统访问权限。
总结
Elasticsearch 安全加固的核心是三层防护:网络层限制访问来源、传输层启用 TLS、应用层开启认证与 RBAC。完成上述配置后,未授权访问风险基本消除,同时满足等保与内部审计对数据访问控制的基本要求。