龙叔学ES:Elasticsearch XPACK安全认证


Elasticsearch往往存有公司大量的数据,如果安全不过关,那么就会有严重的数据安全隐患。
Elasticsearch 的安全认证方式有不少,如http-basic,search guard,shield等,本文讲的是使用Xpack进行安全认证。

1、什么是Xpack

X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。

自6.8以及7.1+版本之后,基础级安全永久免费。

基础版本安全功能列表如下:
在这里插入图片描述

2、相关安全配置介绍

这里挑一些比较重要常见的配置项介绍,完整的配置介绍可以查看官方文档

2.1、xpack.security.enabled

默认为true,启用节点上ES的XPACK安全功能,相当于总开关

2.2、xpack.security.http.ssl

这个是用来开启https的,以及对应的设置,整体配置项如下:

xpack.security.http.ssl:
  enabled: false 【开启还是关闭】
  verification_mode: certificate【如下】
   【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】
   【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】
   【none:它不执行服务器证书的验证。】
  truststore.path: certs/elastic-certificates.p12 【信任存储库文件的存放位置】
  keystore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】

2.3、xpack.security.transport.ssl

这个是传输层的认证设置,整体配置项如下:

xpack.security.transport.ssl:
  enabled: true【开启还是关闭】
  verification_mode: certificate【如下】
   【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】
   【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】
   【none:它不执行服务器证书的验证。】
  keystore.path: certs/elastic-certificates.p12【信任存储库文件的存放位置】
  truststore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】

3、ES集群认证配置

命令操作都是在ES安装根目录下执行的
在这里插入图片描述

3.1、创建证书

a、创建一个证书颁发机构

提示命名文件:直接回车,默认文件名elastic-stack-ca.p12文件
提示输入密码:可以直接回车,也可以输入密码进行设置

./bin/elasticsearch-certutil ca

在这里插入图片描述

b、为节点生成证书和私钥

提示命名文件,直接回车,默认文件名elastic-certificates.p12文件
提示输入密码:可以直接回车,也可以输入密码进行设置

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

c、config目录下创建下certs目录

makdir config/certs 

d、将文件可拷贝到certs目录下

mv elastic-certificates.p12 config/certs/

在这里插入图片描述

3.2、给keystore和truststore设置密码

注解:
keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。
truststore是放信任的证书的一个store
truststore和keystore的性质是一样的,都是存放key的一个仓库,区别在于,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书,而keystore是包含私钥的。

如果在创建证书的过程中加了密码,需要输入这个密码。每个节点都需要
在这里插入图片描述

./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

这样就会在config目录下keystore文件了
在这里插入图片描述

3.3、修改配置文件并重启

配置文件中加入以下配置,然后重启

xpack.security.enabled: true


xpack.security.http.ssl:
  enabled: false
  verification_mode: certificate
  truststore.path: certs/elastic-certificates.p12
  keystore.path: certs/elastic-certificates.p12

xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/elastic-certificates.p12
  truststore.path: certs/elastic-certificates.p12

3.4、创建用户密码

集群中的节点都按照上面的方式完成配置并启动后,就可以设置账号密码了

a、自动创建密码

./bin/elasticsearch-setup-passwords auto

b、手动输入密码

./bin/elasticsearch-setup-passwords interactive

c、重置用户密码(随机密码)

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

d、重置用户密码(指定密码)

./bin/elasticsearch-reset-password -u elastic -i <password>

4、认证验证场景

4.1、浏览器访问验证

这里说明一下:
xpack.security.http.ssl的enable为true 就会是https,为false就是http,我这里是关掉了
在这里插入图片描述

4.2、curl 认证

当你执行curl去访问es api的时候也会提示需要进行认证
在这里插入图片描述

但是带上账号密码就可以了
在这里插入图片描述

4.3、kibana 认证

kibana中配置ES中配置的kibana账号密码即可连接ES认证

elasticsearch.username: "kibana"
elasticsearch.password: "XXX"
elasticsearch.hosts: ["http://1.1.1.1:9200","http://2.2.2.2:9200","http://3.3.3.3:9200"]
server.port: 5601

在这里插入图片描述

在这里插入图片描述


欢迎关注我的公众号:龙叔运维
持续分享运维经验

下面是在 CentOS 上单机部署 Elasticsearch 和 X-Pack 的步骤: 1. 首先下载 Elasticsearch 和 X-Pack 的安装包。可以到官网下载最新版本,也可以使用 yum 安装。 2. 安装 Java 环境。Elasticsearch 需要 Java 环境的支持。可以使用以下命令安装 OpenJDK: ``` sudo yum install java-1.8.0-openjdk ``` 3. 解压 Elasticsearch 和 X-Pack 的安装包,并将其移动到 /usr/share 目录下: ``` sudo tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz sudo mv elasticsearch-7.6.2 /usr/share/elasticsearch sudo tar -zxvf x-pack-7.6.2-linux-x86_64.tar.gz sudo mv x-pack-7.6.2 /usr/share/x-pack ``` 4. 创建一个新用户来运行 Elasticsearch。可以使用以下命令创建一个名为 elasticsearch 的用户: ``` sudo useradd elasticsearch ``` 5. 给 Elasticsearch 和 X-Pack 相应的目录设置权限: ``` sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch sudo chown -R elasticsearch:elasticsearch /usr/share/x-pack ``` 6. 修改 Elasticsearch 的配置文件。编辑 /usr/share/elasticsearch/config/elasticsearch.yml 文件,修改以下配置项: ``` cluster.name: my_cluster node.name: node1 network.host: 0.0.0.0 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: /usr/share/x-pack/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /usr/share/x-pack/elastic-certificates.p12 xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: /usr/share/x-pack/http.p12 xpack.security.http.ssl.truststore.path: /usr/share/x-pack/http.p12 ``` 注意:xpack.security.enabled 设置为 true 是启用 X-Pack 的关键。xpack.security.transport.ssl.enabled 和 xpack.security.http.ssl.enabled 分别启用 Elasticsearch 和 HTTP 安全性。 7. 启动 Elasticsearch。使用以下命令启动 Elasticsearch: ``` sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch ``` 8. 验证 Elasticsearch 是否正常运行。在浏览器中访问 http://your_ip_address:9200,如果能够看到 Elasticsearch 的版本信息,则表示 Elasticsearch 已经成功运行。 至此,Elasticsearch 和 X-Pack 的单机部署就完成了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙叔运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值