记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

Elasticsearch7.2集群的安全性配置


目录

 

集群身份认证

集群内部通讯的安全

集群与外部间的安全通信


集群身份认证

说明:访问ES集群需要用户名和密码,否则不能调用接口等。
具体实现:这里以单个节点进行演示,ip为192.168.52.127
1)elasticsearch.yml初始配置:
cluster.name: test
node.name: node-1
path.data: /home/elk/elasticsearch-7.2.0/data
path.logs: /home/elk/elasticsearch-7.2.0/logs
http.port: 9200
network.host: 0.0.0.0
discovery.seed_hosts: ["192.168.52.127"]
cluster.initial_master_nodes: ["node-1"]


bin/elasticsearch测试可正常启动,然后访问http://192.168.52.127:9200/可正常访问
关闭elasticsearch


2)更新elasticsearch.yml配置,添加以下内容:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true


bin/elasticsearch测试可正常启动,

然后访问http://192.168.52.127:9200/发现需要输入用户名和密码才能访问
可以创建默认的用户和分组


3)创建默认的用户和分组
首先,确保elasticsearch启动;
然后,bin/elasticsearch-setup-passwords interactive

按照上图中输入密码后(我这里设置的是123456),重新访问http://192.168.52.127:9200/,输入账号:elastic,密码:123456,可正常访问

集群内部通讯的安全

说明:使用证书实现,一方面可以保证数据安全,避免因数据抓包导致的敏感信息泄露,另一方面避免一个其他节点(即未配置证书的节点)的随意加入。
具体实现:配置好证书,先启动集群一个节点,然后先后测试新加入的节点(未配置证书,配置证书)
1)bin/elasticsearch-certutil ca

2)ls

3)bin/elasticsearch-certutil cert --ca /home/elk/elasticsearch-7.2.0/config/certs/elastic-stack-ca.p12

4)ls

5)elasticsearch.yml中:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /home/elk/elasticsearch-7.2.0/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /home/elk/elasticsearch-7.2.0/config/certs/elastic-certificates.p12

6)启动es
首先删除data目录:rm -rf data/
启动:bin/elasticsearch
7)验证
a.新加入一个节点,elasticsearch.yml配置为:
cluster.name: test
node.name: node-2
path.data: /home/elk/elasticsearch-7.2.0/data
path.logs: /home/elk/elasticsearch-7.2.0/logs
http.port: 9200
network.host: 0.0.0.0
discovery.seed_hosts: ["192.168.52.127"]
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true


b.删除data目录
c.启动
bin/elasticsearch
会发现报错:unable to find valid certification path to requested target
按照步骤5)在配置中添加,在执行,发现正常了
在浏览器中输入:http://192.168.52.127:9200/_cluster/health

集群与外部间的安全通信

说明:使用https访问集群,不能通过http访问
1)https访问ES集群
elasticsearch.yml中:
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /home/elk/elasticsearch-7.2.0/config/certs/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: /home/elk/elasticsearch-7.2.0/config/certs/elastic-certificates.p12


以http访问集群,报错:io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record
以https访问,则可以正常访问


2)https访问kibana
a.因为ES集群配置了https访问,所以首先需要配置kibana连接ES https。具体操作如下:
第一步:openssl version -a  //查看openssl是否安装
第二步:openssl pkcs12 -in /home/elk/elasticsearch-7.2.0/config/certs/elastic-certificates.p12 -cacerts -nokeys -out /home/elk/elasticsearch-7.2.0/config/certs/elastic-ca.pem     //生成证书
第三步:在kibana.yml中配置:
server.host: "192.168.52.127"
server.port: 5601
elasticsearch.hosts:["https://localhost:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
elasticsearch.ssl.certificateAuthorities: /home/elk/elasticsearch-7.2.0/config/certs/elastic-ca.pem
elasticsearch.ssl.verificationMode: certificate


4)在浏览器中输入http://192.168.52.127:5601/启动kibana,在devtool中操作
get /
发现可正常调用ES的接口。
b.配置使用https访问kibana
第一步:bin/elasticsearch-certutil ca --pem 

第二步:解压elastic-stack-ca.zip
yum install -y unzip zip //安装unzip
unzip elastic-stack-ca.zip //将上述zip解压
第三步:在kibana.yml中添加如下配置:
server.ssl.enabled: true
server.ssl.certificate: /home/elk/elasticsearch-7.2.0/config/certs/ca/ca.crt
server.ssl.key: /home/elk/elasticsearch-7.2.0/config/certs/ca/ca.key

第四步:启动kibana,bin/kibana
使用http访问kibana,不能访问;https就可以了。

特别注意:因为在上述证书生成时,我是直接回车没有设置密码的,如果你给证书设置了密码,参考https://www.elastic.co/guide/en/elasticsearch/reference/7.2/configuring-tls.html,记得如下操作:




参考资料:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/secure-cluster.html
http://gk.link/a/10jw7



转载请标明出处【Elasticsearch7.2集群的安全性配置】。

《www.92cto.com》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论