首页 > 其他分享 >rocky Elasticsearch 8.7.1集群 x-spack 安全验证 及 集群内部TLS加密传输 (ca)

rocky Elasticsearch 8.7.1集群 x-spack 安全验证 及 集群内部TLS加密传输 (ca)

时间:2023-05-22 11:55:06浏览次数:58  
标签:TLS 加密传输 ca 192.168 ssl 集群 elasticsearch security certs

目录

 

简介

常规部署 Elasticsearch 集群时,不管是集群之间的数据传输,或者是 Client 访问Elasticsearch 集群时 均不需要相关验证,可通过对外提供的http接口,直接访问到ES的内部数据

这情况下,相对来说安全度没有保障,那么本次部署一套 基于 x-spack 安全验证的安全认证

其实不光是 对外提供服务的 9200 端口需要验证,集群内服务端口 9300 之间数据通信,也需要安全机制,本次使用自签ca证书,用于集群内部加密通信

说明: x-spack 组件是收费的,但好的是基础安全验证是其中的免费的,不用担心商用问题;

环境准备

 

系统版本

主机名

IP

ES 版本

ES 用户端口

ES 集群端口

Rocky Linux release 9.2 (Blue Onyx) es01 192.168.8.114 8.7.1 9200 9300
Rocky Linux release 9.2 (Blue Onyx) es02 192.168.8.115 8.7.1 9200 9300
Rocky Linux release 9.2 (Blue Onyx) es03 192.168.8.116 8.7.1 9200 9300

安装

现在下载的 elasticsearch 安装包中,自带 jdk ,无需像以前老版本一样,还要需要安装jdk环境,方便很多。

官方下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-linux-x86_64.tar.gz

需要优化文件描述符

useradd es

cat >> /etc/security/limits.conf <<EOF
*   hard    nofile  65536
*   soft    nofile  65536
*   hard    nproc   5000
*   soft    nproc   5000
es soft memlock unlimited
es hard memlock unlimited
EOF echo 'vm.max_map_count=262144' >> /etc/sysctl.conf sysctl -p

配置 hostname 解析

所有节点配置好 hostname 解析

cat >> /etc/hosts <<EOF

192.168.8.114 es01
192.168.8.115 es02
192.168.8.116 es03
EOF

安装

useradd -s /sbin/nologin -M es
cd /opt/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-linux-x86_64.tar.gz
tar xf elasticsearch-8.7.1-linux-x86_64.tar.gz
ls -al /usr/local/elasticsearch-8.7.1 

生成ca证书

证书签发在es02上操作即可

通过查看官网集群证书的创建方式分为两种:

  1. 通过 elasticsearch-certutil 命令逐一创建证书
  2. 使用 elasticsearch-certutil 的 Silent Mode 创建

这里使用简约的 Silent Mode 创建;

进入到 ES 的目录:

cd /usr/local/elasticsearch-8.7.1

创建证书所需的 instances.yml 文件,具体格式请查看官网:官网集群证书

cat >config/certs/instances.yml<<EOF
instances:
  - name: "es01" 
    ip: 
      - "192.168.8.114"
  - name: "es02"
    ip:
      - "192.168.8.115"
  - name: "es03"
    ip:
      - "192.168.8.116"
EOF

注解: name 为实例名

然后执行

    bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip

   unzip config/certs/ca.zip -d config/certs;

bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;

 unzip config/certs/certs.zip -d config/certs;


然后把对应的 目录 拷贝到对应的服务器,并做如下操作:

mv node02 config/certs
[es@es02 elasticsearch]# rsync -avz es01 [email protected]:/usr/local/elasticsearch/config/certs
[es@es02 elasticsearch]# rsync -avz es01 [email protected].116:/usr/local/elasticsearch/config/certs

配置

es02 配置:

cat > /usr/local/elasticsearch/config/elasticsearch.yml <EOFnode.name: es02
cluster.name: YnGames
network.host: 192.168.8.115
http.host: 0.0.0.0
transport.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["192.168.8.114", "192.168.8.115", "192.168.8.116"]
discovery.seed_hosts: ["192.168.8.114", "192.168.8.116"]
bootstrap.memory_lock: true
xpack.security.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: certs/es02/es02.key
xpack.security.http.ssl.certificate: certs/es02/es02.crt
xpack.security.http.ssl.certificate_authorities: certs/ca/ca.crt
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: certs/es02/es02.key
xpack.security.transport.ssl.certificate: certs/es02/es02.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca/ca.crt
xpack.security.transport.ssl.verification_mode: certificate
xpack.license.self_generated.type: basic
http.cors.enabled: true
http.cors.allow-origin: "*" EOF

es03 配置:

cat > /usr/local/elasticsearch/config/elasticsearch.yml <EOFnode.name: es03
network.host: 192.168.8.116
cluster.name: YnGames
http.host: 192.168.8.116
transport.host: 192.168.8.116
http.port: 9200
cluster.initial_master_nodes: ["192.168.8.114", "192.168.8.115", "192.168.8.116"]
discovery.seed_hosts: ["192.168.8.114", "192.168.8.115"]
bootstrap.memory_lock: true
xpack.security.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: certs/es03/es03.key
xpack.security.http.ssl.certificate: certs/es03/es03.crt
xpack.security.http.ssl.certificate_authorities: certs/ca/ca.crt
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: certs/es03/es03.key
xpack.security.transport.ssl.certificate: certs/es03/es03.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca/ca.crt
xpack.security.transport.ssl.verification_mode: certificate
xpack.license.self_generated.type: basic
http.cors.enabled: true
http.cors.allow-origin: "*" EOF

es01 配置:

cat > /usr/local/elasticsearch/config/elasticsearch.yml <EOFnode.name: es01
network.host: 192.168.8.114
cluster.name: YnGames
http.host: 0.0.0.0
transport.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["192.168.8.114", "192.168.8.115", "192.168.8.116"]
discovery.seed_hosts: ["192.168.8.115", "192.168.8.116"]
bootstrap.memory_lock: true
xpack.security.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: certs/es01/es01.key
xpack.security.http.ssl.certificate: certs/es01/es01.crt
xpack.security.http.ssl.certificate_authorities: certs/ca/ca.crt
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.key: certs/es01/es01.key
xpack.security.transport.ssl.certificate: certs/es01/es01.crt
xpack.security.transport.ssl.certificate_authorities: certs/ca/ca.crt
xpack.security.transport.ssl.verification_mode: certificate
xpack.license.self_generated.type: basic
http.cors.enabled: true
http.cors.allow-origin: "*"
EOF

给所有 ES 配置相同的用户密码

使用命令: ./bin/elasticsearch-users useradd username -p password -r superuser

-r 表示角色,superuser 是超级用户

./bin/elasticsearch-users useradd test -p password123 -r superuser

./elasticsearch-reset-password -u user   重置密码

 

添加了用户,并需要给这个用户添加角色不然会报错

角色授权

bin/elasticsearch-users roles -a superuser test

bin/elasticsearch-users roles -a kibana_system test  //这里一定要授权kibana_system ,不然kibana无法登录,即使有超级权限也不行

启动查看

启动所有节点的 elasticsearch ;

./bin/elasticsearch -d

[root@localhost elasticsearch-8.7.1]# curl -uadmin:viu@1234 https://192.168.8.115:9200/_cat/nodes?v -k    //只能像带有星号的执行查询,目前不解
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.8.114 28 67 0 0.00 0.01 0.00 cdfhilmrstw - es01
192.168.8.115 22 90 3 0.02 0.02 0.00 cdfhilmrstw * es02
192.168.8.116 24 67 1 0.11 0.04 0.01 cdfhilmrstw - es03

kibana配置

server.port: 5601
server.host: "192.168.8.115"
server.maxPayload: 1048576
server.name: "kibana"
server.ssl.enabled: false
elasticsearch.hosts: ["https://192.168.8.115:9200"]
elasticsearch.username: "admin"
elasticsearch.password: "viu@1234"
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
i18n.locale: "zh-CN"
elasticsearch.ssl.certificateAuthorities: config/certs/ca/ca.crt   //拷贝es下ca证书即可
elasticsearch.ssl.verificationMode: certificate

 

---------------或者跳过证书

 

server.port: 5601
server.host: "192.168.8.115"
server.maxPayload: 1048576
server.name: "kibana"
server.ssl.enabled: false
elasticsearch.hosts: ["https://192.168.8.115:9200"]
elasticsearch.username: "admin"
elasticsearch.password: "viu@1234"
elasticsearch.pingTimeout: 1500
elasticsearch.requestTimeout: 30000
i18n.locale: "zh-CN"
#elasticsearch.ssl.certificateAuthorities: config/certs/ca/ca.crt
#elasticsearch.ssl.verificationMode: certificate
elasticsearch.ssl.verificationMode: none

 

 

 

---------

filebeats

output.elasticsearch:
hosts: ["https://xxxxg:443"]
username: "elastic"
password: ""
index: "cloudgame-%{+yyyy.MM}"
ssl:
verification_mode: none

标签:TLS,加密传输,ca,192.168,ssl,集群,elasticsearch,security,certs
From: https://www.cnblogs.com/cheyunhua/p/17420243.html

相关文章

  • RocketMQ 5.0 如何配置TLS加密传输?
    本文作者:李伟,社区里大家叫小伟,ApacheRocketMQCommitter,RocketMQPython客户端项目Owner,ApacheDorisContributor,腾讯云RocketMQ开发工程师。01传输架构图Namesrv:5.1.0Broker:5.1.0Dashboard:1.0.1-SNAPSHOT02准备Namesrv、Broker、Client的ca证书、密钥以下全部操作在......
  • PostgreSQL集群运维案例之---构建recpmgr集群管理
    案例说明:在构建流复制集群后,可以通过repmgr实现集群的管理,并通过repmgr实现集群节点状态监控、switchover、failover切换等管理。数据库版本:PostgreSQL14集群节点信息:[root@node101~]#cat/etc/hosts192.168.1.101node101;primary节点192.168.1.102node102......
  • 分布式和集群部署架构设计
    一、微服务部署架构设计方案1、先采用微服务架构设计,将工程拆分成多个模块(通过接口彼此调用,降低代码的耦合度)2、后采用分布式工作方式将拆分开的各个模块分别部署到多台服务器上(通过缩短单个任务的执行时间来提升效率)3、再采用集群物理方式将各个模块部署到多台服务器上(通过提......
  • TLS1.2握手流程分析(RSA,ECDHE),和TLS1.3区别
    目录一、加密算法简介1.2RSA简要流程1.1ECDHE简要流程二、TLS1.2握手消息简介三、TLS1.2RSA流程四、TLS1.2ECDHE流程五、TLS1.2和TLS1.3区别5.1更快的访问速度5.2更强的安全性六、wareshark抓包验证TLS1.2流程6.1搭建httpsserver(springboot)6.2请求并抓包6.3抓包结果分......
  • ent M2M模型在pxc集群中的一个大坑
    entM2M模型在pxc集群中的一个大坑事故简要分析PXC集群3个节点,在插入数据时,如果使用数据库自己生成的主键,一般顺序为1,4,7,10…这里就是坑的源头,在ent底层代码中,在做M2M模型插入时,会先插入两个模型,再插入中间表。即,假设M2M模型为group和user(https://entgo.io/docs/schema-edges......
  • k8s集群环境搭建
    注:如下文档不是一次性搭建成功的,可能有一些地方ip地址和实际成功的那次地址不一样。首先,我们准备3台虚拟机,配置都是是2核心2.2G内存192.168.3.121k8s-master192.168.3.133k8s-node1192.168.3.119k8s-node21修改主机名经过实践,发现,如果不修改主机名的话,安装可能......
  • kafka设置多代理集群
    到目前为止,我们一直在使用单个代理,这并不好玩。对Kafka来说,单个代理只是一个大小为一的集群,除了启动更多的代理实例外,没有什么变化。为了深入了解它,让我们把集群扩展到三个节点(仍然在本地机器上)。首先,为每个代理创建一个配置文件(在Windows上使用copy 命令来代替):12>cpconfig......
  • 第13章 使用Bind提供域名解析服务。 dns 正向反向解析 主从 dns加密传
    章节简述: 本章讲解了DNS域名解析服务的原理以及作用,介绍了域名查询功能中正向解析与反向解析的作用,并通过实验的方式演示了如何在DNS主服务器上部署正、反解析工作模式,以便让大家深刻体会到DNS域名查询的便利以及强大。本章还介绍了如何部署DNS从服务器以及DNS缓存服务器来提......
  • HIVE跨集群迁移
    查看mysql使用端口ps-ef|grepmysqlss-antp|grep[ps查出来的pid]停止HIVE写入服务创建备份路径mkdir-p/root/hivebackup/执行备份数据库命令:(在目标集群执行)mysqldump-uroot-pPassword-h1.1.1.1-P3306--databaseshive_prode>/root/jws/hiveba......
  • Kafka 集群安装 docker-compose安装
    目录Kafka集群安装docker-compose安装docker-compose.yml安装Kafka集群安装docker-compose安装docker-compose.ymlversion:"2"services:zookeeper:image:docker.io/bitnami/zookeepercontainer_name:zookeeperports:-"2181:2181"......