当前位置: 首页 > news >正文

ELK开启安全策略

背景

近期,我们的开发系统在一次客户漏洞扫描中被检测出存在高危漏洞,其中一项便是Elasticsearch(ES)未配置用户名密码访问。尽管此前我们的ES集群主要作为基础设施在内网运行,并未直接对外暴露,但此次扫描结果明确指出了潜在的安全风险。为了消除这些隐患,并进一步提升系统的整体安全性,我们决定对ELK Stack进行全面的安全加固。

注意,本篇不会介绍elk相关的部署操作,而是基于已经部署好的elk服务,进行安全配置,关于elk的部署,可以参考官方文档或者其他博客,笔者也曾出过一篇相关的博客,地址:https://xie.infoq.cn/article/809dd91a0ec9d6e23c3db67dc

ElasticSearch相关

配置证书

生成证书

使用es自带的cert工具生成证书

# 创建ca
./bin/elasticsearch-certutil ca

执行此命令后,系统会提示您输入一个密码,请按需输入并牢记。如果忘记密码,将无法使用该CA证书。

如果按默认保存,您将获得一个p12格式的CA证书文件(elastic-stack-ca.p12)。您可以通过openssl查看其包含的信息:

可以通过openssl查看其包含的信息,此命令将显示p12证书文件的详细信息,包括证书链和私钥。请注意,输出内容可能较多。

openssl pkcs12 -info -nodes -in elastic-stack-ca.p12

您还可以查看CA证书的过期时间:

openssl pkcs12 -in elastic-stack-ca.p12 -nodes -nokeys -clcerts | openssl x509 -enddate -noout

接下来,利用已创建的CA证书生成ES服务所需的加密证书:

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

执行此命令后,同样会提示您输入密码。完成后,您将获得ES服务所需的证书文件(elastic-certificates.p12)。

同样的,可以使用刚才查看证书内容和过期时间的方法查看一下这个证书的信息,该文件就是我们下面需要放到es的配置文件里,进行传输层加密的证书。

提取CA证书

p12证书是一个类似加密文件的文件类型,不能直接再kibana,logstash等客户端使用,需要需要将其提取成crt文件

openssl pkcs12 -in config/certs/elastic-certificates.p12 -cacerts -nokeys -out config/certs/elastic-ca.crt

注意,关于证书的格式大家可以自行了解一下,p12格式在多数场景下是不能直接用的,需要解压转换成crt或者pem格式。

生成提取证书的操作只执行一次就行,然后将生成的证书复制到集群内的各个节点

授权

完成证书的生成和提取操作后,需要将证书文件复制到集群各个节点,然后进行授权操作,一般是对证书所在路径和文件进行授权就可以,基本就是下面这几个语句

注意,我这里的路径写的是相对路径,操作时要确保你在证书所在目录的主路径里,比如/usr/elasticsearch等。

sudo chown -R elsearch:elsearch /config/certs/*
chmod 600 /home/elastic/elasticsearch-7.14.1/config/certs/*
sudo chown -R elsearch:elsearch /config
chmod 750 /config

同步证书

将准备好的证书文件同步到其他服务器,注意,要尽量确保每个节点的es服务存储路径规则一致,这主要是为了运维方便,如果不一致,配置证书的时候要小心一点,别弄错了。

# 注意生产环境如果有安全要求,可以使用更安全可靠的方式进行同步
scp -r ./config/certs 192.168.0.188:/opt/elastic/config/certs
scp -r ./config/certs 192.168.0.189:/opt/elastic/config/certs

至此,准备工作完成

修改配置

修改每个节点的配置文件,在elasticsearch.yml文件中添加以下安全配置:

http://www.lryc.cn/news/619830.html

相关文章:

  • web安全开发,在线%射击比赛管理%系统开发demo,基于html,css,jquery,python,django,三层mysql数据库
  • 【微实验】基频提取的MATLAB实现(优化版)
  • 基于MATLAB的图像处理与圆弧拟合技术
  • 深度学习(6):参数初始化
  • Jenkins(集群与流水线配置)
  • 卷积神经网络(CNN):卷积和池化
  • 常用 MaxKB 函数库(HTTP、MYSQL)
  • Day 39: 图像数据与显存
  • 智算赋能:移动云助力“世界一流数据强港”建设之路
  • 深度学习·ExCEL
  • RK3568项目(十五)--linux驱动开发之进阶驱动
  • Spring Boot (v3.2.12) + application.yml + jasypt 数据源加密连接设置实例
  • Java Stream API 中常用方法复习及项目实战示例
  • AR技术赋能风电组装:效率提升30%,错误率降低50%
  • 华为悦盒EC6108V9-1+4G版-盒子有【蓝色USB接口】的特殊刷机说明
  • UniApp开发常见问题及解决办法
  • RabbitMQ面试精讲 Day 21:Spring AMQP核心组件详解
  • FluxApi - 使用Spring进行调用Flux接口
  • 后端Web实战-MySQL数据库
  • 【SpringBoot系列-01】Spring Boot 启动原理深度解析
  • 力扣121:买卖股票的最佳时机
  • 敲响变革的钟声:AI 如何重塑前端开发的基础认知
  • Java毕业设计选题推荐 |基于SpringBoot的水产养殖管理系统 智能水产养殖监测系统 水产养殖小程序
  • Kubernetes部署apisix的理论与最佳实践(三)
  • 从原材料到成品,光模块 PCB 制造工艺全剖析
  • JavaWeb-XML、HTTP协议和Tomcat服务器
  • 解析Vue3中集成WPS Web Office SDK的最佳实践
  • DAY42 Grad-CAM与Hook函数
  • Spring Boot调用优化版AI推理微服务 集成 NVIDIA NIM指南
  • 利用生成式AI与大语言模型(LLM)革新自动化软件测试 —— 测试工程师必读深度解析