Elasticsearch主节点配置TLS

发布于 2022-07-12  426 次阅读


1、在 Elasticsearch 主节点上配置 TLS

停止es集群所有节点,在其中一个节点执行:

使用 cd 命令进入es安装目录,然后运行下列命令:

./bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""

将生成的elastic-certificates.p12文件分发到其他es节点的config目录下:

scp config/elastic-certificates.p12 root@10.255.50.69:/usr/local/elastic/config

在所有节点上修改elastic-certificates.p12文件的权限为es

chown es.es config/elastic-certificates.p12

接下来,在所有es节点的配置文件 config/elasticsearch.yaml中,将下列代码行粘贴到文件末尾。

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

2 、创建Elasticsearch 集群密码

启动es,进入es安装目录。然后我们运行命令 bin/elasticsearch-setup-passwords auto。这将会为不同的内部堆栈用户生成随机密码。或者,您也可以跳过 auto 参数,改为通过 interactive 参数手动定义密码。请务必记录这些密码,我们很快就会再次用到这些密码。建议将密码写入到一个文件中,放在es目录下即可

3、Kibana 界面实现密码保护

我们要做的最后一件事是配置 Kibana。我们可以从之前 setup-passwords 命令的输出内容中找到密码。

我们使用 cd 命令更改至 Kibana 目录,然后使用您的文本编辑器打开 config/kibana.yml 文件。找到类似下面的代码行

#elasticsearch.username: "user" 
#elasticsearch.password: "pass"

kibana开启密码保护后,最好不要修改预留账号密码,否则很容易出现kibana不能正常打开的问题

4 、在 logstash 中实现安全性

修改logstash配置文件中连接es的output区域

output {
        elasticsearch {
                hosts => ["10.255.50.67:9200","10.255.50.68:9200","10.255.50.69:9200"]
                index => "syslog"
                user => "elastic"
                password => "1q2w3e4r"
        }
}

问题

kibana修改预留账号密码导致不能打开

登录之前记录es密码的主机,执行一下命令,user后的kibana自行替换成相关用户,password后的密码修改为初始化时生成的kibana密码。

curl -H "Content-Type:application/json" -XPOST -u elastic 'http://10.255.50.68:9200/_xpack/security/user/kibana/_password' -d '{ "password" : "QRZMtcXi84l1lj7UL3H4" }'

es启动就绪后,报错

Authentication of [elastic] was terminated by realm [reserved] - failed to authenticate user [elastic]

问题处理流程:
1. 停止es
2. xpack取消
3. 启动,以无密码形式登录
4. 删除.security (curl -XDELETE 'http://127.0.0.1:9200/.security-7')
5. 停es
6. xpack开启
7. 删除elasticsearch/config目录下elasticsearch.keystore、elastic-certificates.p12
8. bin目录下执行
./elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
如果是集群,需要把config/elastic-certificates.p12拷贝到其他节点的config目录下
9. es节点依次启动
10. 设置密码,等待cluster health is currently RED.变为green在下一步