news 2026/4/16 18:42:49

Elasticsearch安全认证实战:从零配置密码与Kibana集成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Elasticsearch安全认证实战:从零配置密码与Kibana集成

1. Elasticsearch安全认证的必要性

第一次接触Elasticsearch时,很多人都会被它"裸奔"的默认配置吓一跳——不需要任何认证就能直接访问所有数据。这就像把家门钥匙插在锁上,谁都能进来翻箱倒柜。我在给客户部署ES集群时就遇到过真实案例:某公司开发环境ES暴露在公网,结果被黑客扫到后删除了所有索引,导致团队一周的工作成果全部丢失。

Elasticsearch从6.8版本开始,将X-Pack安全功能纳入了基础版授权。这意味着我们不用额外付费就能使用以下核心安全功能:

  • 身份认证:要求用户提供有效凭证才能访问
  • 通信加密:节点间数据传输使用TLS加密
  • 权限控制:细粒度的角色权限管理

特别提醒:生产环境一定要启用安全认证!即使在内网,也建议开启基础防护。去年某知名企业就因内网ES未加密,导致员工信息大规模泄露。

2. 从零配置Elasticsearch密码

2.1 修改核心配置文件

首先找到你的elasticsearch.yml配置文件(通常在/etc/elasticsearch或安装目录的config下)。用vim或nano编辑器添加以下关键配置:

# 启用安全模块 xpack.security.enabled: true # 单节点模式(开发环境推荐) discovery.type: single-node # 必须开启SSL传输加密 xpack.security.transport.ssl.enabled: true

这里有个坑我踩过:如果只开启安全认证不配SSL,启动时会报错"Transport SSL must be enabled"。因为基础版授权要求必须启用传输层加密。

2.2 设置用户密码

重启Elasticsearch服务后,进入ES的bin目录执行密码设置脚本。有两种方式:

交互式设置(推荐)

./elasticsearch-setup-passwords interactive

系统会依次提示为6个内置用户设置密码:

  • elastic:超级管理员
  • kibana_system:Kibana服务账号
  • logstash_system:Logstash连接专用
  • beats_system:Beats系列组件使用
  • apm_system:APM性能监控
  • remote_monitoring_user:远程监控

自动生成随机密码

./elasticsearch-setup-passwords auto

生成的密码会直接显示在终端,记得及时保存。我曾因为没记录随机密码,不得不重置整个集群。

2.3 验证认证状态

用curl测试未认证访问:

curl http://localhost:9200

应该返回401错误:

{ "error" : { "reason" : "missing authentication credentials", "header" : { "WWW-Authenticate" : "Basic realm=\"security\"" } } }

带认证的成功请求:

curl -u elastic:your_password http://localhost:9200

现在你应该能看到熟悉的ES版本信息了。

3. Kibana与安全ES的集成

3.1 直接配置法(适合开发环境)

编辑kibana.yml配置文件:

elasticsearch.username: "kibana_system" elasticsearch.password: "你设置的密码"

注意!这里90%的人会犯两个错误:

  1. 误用elastic用户而非kibana_system
  2. 密码与ES设置的不一致

启动Kibana后访问5601端口,这时应该会看到登录界面。用elastic账号和密码登录即可。

3.2 密钥库存储法(生产环境推荐)

更安全的方式是使用Kibana密钥库:

# 创建密钥库 ./bin/kibana-keystore create # 添加用户名 ./bin/kibana-keystore add elasticsearch.username # 输入kibana_system # 添加密码 ./bin/kibana-keystore add elasticsearch.password # 输入对应密码

这种方式密码不会明文存储在配置文件中。去年某金融客户就因配置文件泄露导致安全事故,后来全部改用密钥库方案。

3.3 命令行参数方式(临时调试用)

启动时直接指定凭证:

./bin/kibana --elasticsearch.username=elastic --elasticsearch.password=your_password

4. 常见问题排坑指南

4.1 密码正确却认证失败

可能原因:

  1. Kibana版本与ES不匹配(建议保持大版本一致)
  2. 网络问题导致连接超时(检查防火墙和端口)
  3. 使用了过时的kibana用户(7.x之后应改用kibana_system)

解决方案:

# 查看ES日志 tail -f /var/log/elasticsearch/your_cluster.log # 测试基础认证 curl -v -u username:password http://es_host:9200

4.2 忘记密码怎么办

重置elastic用户密码:

# 进入ES容器或安装目录 ./bin/elasticsearch-reset-password -u elastic

重置其他内置用户:

./bin/elasticsearch-reset-password -u kibana_system

4.3 多节点集群的特殊配置

生产集群需要额外配置:

# 所有节点相同的加密证书 xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12 # 开启节点发现 discovery.seed_hosts: ["node1:9300", "node2:9300"] cluster.initial_master_nodes: ["node1", "node2"]

生成证书的命令:

./bin/elasticsearch-certutil cert -out config/certs/elastic-certificates.p12 -pass ""

5. 进阶安全实践

5.1 自定义用户与角色

通过Kibana界面创建业务用户:

  1. 访问Stack Management > Security > Users
  2. 点击Create user
  3. 分配适当角色(如monitoring_user只读权限)

更精细的权限控制可以创建自定义角色:

POST /_security/role/business_role { "indices": [ { "names": ["order_*"], "privileges": ["read", "index"] } ] }

5.2 定期轮换密码

建议每90天更换密码,可以通过API实现:

curl -u elastic -X POST "localhost:9200/_security/user/elastic/_password" -H "Content-Type: application/json" -d' { "password": "NewComplex@Password123" }'

5.3 审计日志监控

在elasticsearch.yml中启用:

xpack.security.audit.enabled: true xpack.security.audit.logfile.events.include: "access_denied,anonymous_access_denied,authentication_failed"

典型的审计日志示例:

{ "timestamp": "2023-08-20T08:45:12.123Z", "event": "authentication_failed", "principal": "unknown", "origin": "192.168.1.100", "realm": "reserved", "node": "node-1" }

我在实际运维中发现,开启审计后能快速定位暴力破解等异常行为。某次就靠审计日志发现了一个尝试用常见密码字典攻击的IP,及时封禁避免了风险。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 18:41:53

TranslucentTB:让Windows任务栏焕然一新的终极美化工具

TranslucentTB:让Windows任务栏焕然一新的终极美化工具 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 厌倦了Windows系统单调…

作者头像 李华
网站建设 2026/4/16 18:40:56

Axure RP 中文汉化包:3分钟实现专业界面本地化

Axure RP 中文汉化包:3分钟实现专业界面本地化 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文…

作者头像 李华
网站建设 2026/4/16 18:36:39

从零构建:基于TCL脚本的Vitis HLS自动化设计流程实战

1. 为什么需要TCL脚本自动化Vitis HLS流程 第一次接触Vitis HLS时,我和大多数人一样都是从GUI界面开始。点几下按钮就能把C代码变成硬件电路,这种魔法般的体验确实令人兴奋。但当我真正开始项目开发时,问题接踵而至:每次修改代码…

作者头像 李华
网站建设 2026/4/16 18:36:20

免费AI率检测工具盘点:8款实用神器助力论文安全过审

当前学术写作领域,AI生成内容的检测已经成为不可忽视的核心环节。随着AI技术的快速普及,不少论文中都融入了AI辅助生成的内容,一旦处理不当,不仅会影响论文的原创性,还可能引发学术不端的风险。 为了帮助广大学生和科…

作者头像 李华
网站建设 2026/4/16 18:31:41

每日安全情报报告 · 2026-04-16

每日安全情报报告 2026-04-16 报告时间:2026-04-16 10:54 CST 数据来源:TheHackerNews、CISA、F5 Labs、CyberSecurityNews、TheCyberThrone、Aviatrix、CybelAngel、HelpNetSecurity、NVD、GitHub 一、高危漏洞速报 🔴 CVE-2026-33827 — …

作者头像 李华
网站建设 2026/4/16 18:31:41

前端测试进阶:从单元测试到端到端测试

前端测试进阶:从单元测试到端到端测试 一、引言:别再把测试当负担 "测试太麻烦了,我没有时间写测试!"——我相信这是很多前端开发者常说的话。 但事实是: 好的测试可以减少80%的线上bug测试可以提升代码质量…

作者头像 李华