Elasticsearch学习笔记(五)Elastic stack安全配置二

news2024/10/5 22:44:37

一、手动配置http层SSL

通过前面的配置,我们为集群传输层手动配置了TLS,集群内部节点之间的通信使用手动配置的证书进行加密,但是集群与外部客户端的http层目前还是使用的自动配置,集群中HTTP的通信目前仍然使用自动生成的证书http.p12,这同样具有一定的安全风险,接下来我们 要手动生成http证书。

1.生成http.p12证书

HTTP层的加密也是通过数字证书实现的,如果大家有过使用数字证书的经验这里应该非常容易理解。这里我们使用ES 自带的elasticsearch-certutil工具生成自定义的证书和密钥。

首先将elastic集群、kibana关闭,然后在任意一个节点上使用下面的命令生成http证书。

/usr/share/elasticsearch/bin/elasticsearch-certutil http

在提示是否生成CSR时,选择N。
在这里插入图片描述
在提示是否使用已经存在的CA时选择y。

在这里插入图片描述
输入elastic-statck-ca.p12文件的绝对路径:/usr/share/elasticsearch/elastic-stack-ca.p12

📓 elastic-stack-ca.p12就是在6.1步骤中生成的CA。
在这里插入图片描述
接着输入文件密码。

输入证书的有效期。
在这里插入图片描述
在这里插入图片描述
👿 每个节点证书都有自己的私钥,并将为特定的主机名或IP地址颁发。

在这里插入图片描述
📓 节点名称可以自定义,建议使用节点 的hostname.

接着输入第一个节点的hostname。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此第一个节点的证书就生成成功了。

继续生成第二个节点的证书,方法和步骤和生成第一个节点的相同,不在赘述,在生成节点证书时仔细阅读提示信息。

在这里插入图片描述
在这里插入图片描述
接着输入要生成的证书文件名,直接回车使用默认名称。
在这里插入图片描述

2.颁发证书

通过上面的操作,在/usr/share/elasticsearch目录下生成了elasticsearch-ssl-http.zip,解压这个文件就能得到各个节点的证书和密钥文件了。
在这里插入图片描述
http.p12复制到elasticsearch的配置目录(先将es.自动配置生成的http.p12备份一下)。

systemctl stop elasticsearch
mv /etc/elasticsearch/certs/http.p12 /etc/elasticsearch/certs/http.p12.old
cp /usr/share/elasticsearch/elasticsearch/node1/http.p12 /etc/elasticsearch/certs/

接着修改http.p12文件的属性。

chown root:elasticsearch /etc/elasticsearch/certs/http.p12
chmod 660 /etc/elasticsearch/certs/http.p12

在这里插入图片描述
分别将手动生成的node2.node3.的http.p12证书复制到各个节点对应的配置目录下,并修改文件属性,步骤和第一个节点的相同。

3.添加私钥密码到keystore

在生成http证书时,如果添加了文件保护密码还需要使用下面的命令将这个密码添加到keystore中。

/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password

在这里插入图片描述
集群中的每个节点都进行上面的操作。

4.重启集群

完成前面的操作后,重启集群,此时集群的HTTP层就使用我们手动配置的http证书进行加密了。

重启kibana此时你会发现kibana已经无法监控到集群状态了。
在这里插入图片描述

二、为Kibana加密HTTP客户端通信

在上一步生成http证书时,生成了一个elasticsearch-ssl-http.zip文件,这个文件解压后除了

elasticsearch还有一个kibana文件,在kibana文件夹中就包含了kibana与elastic通信的证书文件:elasticsearch-ca.pem。

将elasticsearch-ca.pem复制到kibana的配置目录。

cp /usr/share/elasticsearch/kibana/elasticsearch-ca.pem /etc/kibana/

修改kibana的配置。

vim /etc/kibana/kibana.yml
elasticsearch.ssl.certificateAuthorities: [/etc/kibana/elasticsearch-ca.pem]

在这里插入图片描述
重启kibana,发现kibana已经正常了,说明目前kibana与ES集群之间的通信也启用了我们手动配置的数字证书,ES集群与其他组件之间的安全性得到了进一步的提升。但是细心的同学还是会发现我们浏览器访问kibana时目前还是使用的http协议,这个不是同样会形成Elastic stack的安全短板吗?接下来我们继续配置Elastic stack加密kibana与浏览器之间的通信。

三、加密kibana与浏览器之间的通信

1.为Kibana生成服务器证书和私钥

在node1上使用下面的命令为Kibana生成服务器证书和私钥。

/usr/share/elasticsearch/bin/elasticsearch-certutil csr -name kibana-server -dns example.com,www.example.com

在这里插入图片描述
这个命令将生成有一个通用名称(CN) kibana-server,一个SAN为example.com,另一个SAN为www.example.com的证书文件。

解压csr-bundle.zip会得到kibana-server.csrkibana-server.key
在这里插入图片描述

2.生成签名

发送kibana-server.csr向您的内部CA或受信任的CA请求进行签名,以获得已签名的证书。签名的文件可以是不同的格式,如kibana-server.crt。

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --pem -ca /usr/share/elasticsearch/elastic-stack-ca.p12 -name kibana-server

在这里插入图片描述

上述命令生成certificate-bundle.zip,解压这个文件,会提示是否覆盖kibana-server.key,选y.

unzip certificate-bundle.zip

在这里插入图片描述
kibana-server.crtkibana-server.key复制到kibana配置目录。

cp /usr/share/elasticsearch/kibana-server/kibana-server.crt /etc/kibana/
cp /usr/share/elasticsearch/kibana-server/kibana-server.key /etc/kibana/

在这里插入图片描述
⚠️ 不要照抄我的命令,根据自己的实际情况将证书文件复制到kibana的配置目录。

3.修改kibana配置

修改kibana.yml文件。

 vim /etc/kibana/kibana.yml
server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/kibana-server.crt
server.ssl.key: /etc/kibana/kibana-server.key

在这里插入图片描述

配置文件中要使用绝对路径。

重启kibana,通过上面的操作此时kibana和ES以及kibana和浏览器之间已经全部启用SSL了,因此再访问kibana时就需要使用https://:5601进行访问了。

在这里插入图片描述

转眼长假就要结束了:)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【韩顺平Java笔记】第7章:面向对象编程(基础部分)【227-261】

文章目录 227. 重载介绍228. 重载快速入门229. 重载使用细节230. 重载课堂练习1231. 232. 重载课堂练习2,3233. 可变参数使用233.1 基本概念233.2 基本语法233.3 快速入门案例 234. 可变参数细节235. 可变参数练习236. 作用域基本使用237. 作用域使用细节1238. 作用域使用细节2…

Docker安装部署和常用命令

Docker 是一种开源的平台,旨在帮助开发者和运维人员更轻松地创建、部署和运行应用程序。通过将应用程序及其依赖项打包到一个名为容器的标准化单位中,Docker 提供了一种轻量级的虚拟化解决方案。与传统虚拟机相比,Docker 容器可以在同一主机上…

GoogleNet原理与实战

在2014年的ImageNet图像识别挑战赛中,一个名叫GoogLeNet 的网络架构大放异彩。以前流行的网络使用小到11,大到77的卷积核。本文的一个观点是,有时使用不同大小的卷积核组合是有利的。 回到他那个图里面你会发现,这里的一个通过我们最大的池化…

12条职场经验总结

01 事干得好不好尚且不说,但是话一定要说得漂亮。 比如,当领导给你安排工作的时候,你一定要非常积极地响应,拍着胸脯跟领导说“放心吧”。至于后续到底怎么干,再结合实际情况有的放矢地把握。 02 当别人夸奖你的时…

记录使用crypto-js、jsencrypt实现js加密的方法

实用为主,直接上干货。 使用工具:pycharm专业版2020.3.2。 记录通过crypto-js模块、jsencrypt模块两种方式实现加密。 本文在pycharm中新建一个项目,一步一步记录实现步骤。 一、新建pycharm项目并新建两个js文件,分别命名为c…

Python 工具库每日推荐 【Requests】

文章目录 引言Python网络库的重要性今日推荐:Requests工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例1:获取天气信息案例分析案例2:文件上传案例分析高级特性会话和Cookie处理自定义请求头超时设置代理设置扩展阅读与资源优缺点分析优点:缺…

Markdown 语法详解大全(超级版)(三)——甘特图语法详解

Markdown 语法详解大全(超级版)(三)——甘特图语法详解 Markdown 语法详解大全(超级版)(一) Markdown 语法详解大全(超级版)(二) Markdown 语法详解大全(超级版)(三) Markdown 语法…

[Linux#61][UDP] port | netstat | udp缓冲区 | stm32

目录 0. 预备知识 1. 端口号的划分范围 2. 认识知名端口号 3. netstat 命令 4. pidof 命令 二.UDP 0.协议的学习思路 1. UDP 协议报文格式 报头与端口映射: 2. UDP 的特点 面向数据报: 3. UDP 的缓冲区 4. UDP 使用注意事项 5. 基于 UDP 的…

栈的介绍与实现

一. 概念与结构 栈:⼀种特殊的线性表,其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out的原则。 压栈:栈的插…

平面电磁波(解麦克斯韦方程)电场相位是复数的积分常数,电场矢量每个分量都有一个相位。磁场相位和电场一样,这是因为无损介质中实数的波阻抗

注意无源代表你立方程那个点xyzt处没有源,电场磁场也是这个点的。 j电流面密度,电流除以单位面积,ρ电荷体密度,电荷除以单位体积。 j方程组有16个未知数,每个矢量有三个xyz分量,即三个未知数,…

k8s的简介和部署

一、k8s简介 在部署应用程序的方式上面,主要经历了三个阶段: 传统部署:互联网早期,会直接将应用程序部署在物理机上优点:简单,不需要其它技术的参与缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源&…

fiddler抓包18-1_导出jmeter脚本(jmx文件)

课程大纲 方法1 ① 下载2个扩展文件,FiddlerExtensions.dll和FiddlerExtensions.pdb,到Fiddler根目录中的“ImportExport”下,重启Fiddler。 下载链接: https://pan.baidu.com/s/1qtLoaiTd-VfHFb3UIPoSZw?pwdtwcu提取码: twcu ② Fiddler导…

UIAbility组件

一、作用 UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。一个应用可以包含一个或多个UIAbility组件 1、每一个UIAbility组件实例都会在最近任务列表中显示一个对应的任务。 如果开发者希望在任务视图中看到一个任务,建议使用“一个UIAbility+多个页面”的方…

Qt教程(002):Qt项目创建于框架介绍

二、创建Qt项目 2.1 创建项目 【1、New Project】 【2、选择Qt Widgets Application】 【3、设置项目名称和保存路径】 注意,项目名称和路径不要带中文。 【4、选择QWidget】 带菜单栏的窗口QMainWindow空白窗口QWidget对话框窗口QDialog 【5、编译】 2.2 项目框…

No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史

大家好!作为一个喜欢探索本质的INTP,我整理了一份简明易懂的Web安全笔记。希望能帮助你轻松掌握这个领域的核心知识。 这份笔记涵盖了Web发展的历程,从静态的Web 1.0到智能化的Web 3.0。我们将探讨URL和HTTP协议,揭示它们在网络中…

【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。

【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。 【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。 文章目录 【深度学习基础模型】神经图灵机&#xf…

利用条件概率解决“两个孩子的性别问题”

利用条件概率解决“两个孩子的性别问题”:深入分析与扩展 在日常生活中,概率问题常常会带来直观上的困惑,尤其是在涉及到条件概率的时候。今天我们讨论的这个问题是一个非常经典的例子:已知一对父母有两个孩子,其中一…

二叉树的中序&后序遍历——非递归版本

1.题目解析 题目来源:二叉树的中序遍历——力扣 测试用例 题目来源:二叉树的后序遍历——力扣 测试用例 2.算法原理 中序遍历 中序遍历:左子树->根节点->右子树 与之前前序遍历的思路基本相同,不过需要注意的是中序变量需要…

今日指数项目股票Code联想推荐功能实现

股票Code联想推荐 1 股票Code联想推荐功能介绍 1) 原型效果 输入框输入股票编码后,显示关联的股票信息; 2)接口定义说明 接口说明: 功能描述:根据输入的个股代码,进行模糊查询,返回证券代码和证券名称…