安装完Elastic Stack打开Kibana网页端没有账号认证就能直接访问。之前的做法是使用Apache的密码认证进行安全配置,然后通过访问Nginx转发kibana服务器地址。从 7.1.0 版本开始, Elastic Stack安全功能可以实现账号认证。用户能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色, Kibana 提供访问保护。

配置Elasticsearch

在 Elasticsearch 主节点上配置 TLS

首先关闭相关进程以免造成异常

[root@cncs ~]# systemctl stop elasticsearch
生成自签名证书

在 Elasticsearch 主节点生成证书,文件名为elastic-stack-ca.p12。

[root@cncs ~]# cd /usr/share/elasticsearch
#生成CA,包含CA私钥和证书,默认名称elastic-stack-ca.p12
[root@cncs elasticsearch]# bin/elasticsearch-certutil ca
 #敲2次回车
#颁发一个实例证书,默认名称elastic-certificates.p12
[root@cncs elasticsearch]#   bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
#敲3次回车
拷贝证书到Elasticsearch配置目录
[root@cncs ~]# mkdir /etc/elasticsearch/certs
[root@cncs ~]# cp /usr/share/elasticsearch/elastic-certificates.p12 /etc/elasticsearch/certs
[root@cncs ~]# chown -R elasticsearch:elasticsearch /etc/elasticsearch/certs

如有多个Elasticsearch节点,每个节点复制一份。

开启Elasticsearch Security特性

Security特性默认是被禁用的,打开文件 config/elasticsearch.yaml。将下列代码行粘贴到文件末尾,开启Elasticsearch Security特性,加密内部通信流量与http流量。

[root@cncs ~]# vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

如有多个Elasticsearch节点,每个节点都需配置。

为内置用户创建密码

启动 Elasticsearch

[root@cncs ~]# systemctl start elasticsearch

Elasticsearch默认的内置用户有kibana_system、kibana、elastic、beats_system等。

  • kibana_system用户用于Kibana连接Elasticsearch认证
  • kibana用户用于Elasticsearch集群认证
  • beats_system用户用于beats连接Elasticsearch认证
  • elastic用户用于Kibana网页端登录认证

通过运行 elasticsearch-setup-passwords 命令为内置用户设置密码。auto参数是自动生成随机密码,也可以通过 interactive 参数手动定义密码。请记录这些密码,非常重要。

[root@cncs ~]# cd /usr/share/elasticsearch
[root@cncs elasticsearch]# bin/elasticsearch-setup-passwords auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = UymyZjBfqSS743TwTgpe

Changed password for user kibana_system
PASSWORD kibana_system = lwjCX1ho1oOMGf30bbJW

Changed password for user kibana
PASSWORD kibana = lwjCX1ho1oOMGf30bbJW

Changed password for user logstash_system
PASSWORD logstash_system = 6RYXgJw9V6LBnT53Qgzt

Changed password for user beats_system
PASSWORD beats_system = FiwFQBTuJsumTnWslM2f

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = oU73njEE3ynCThCT2NwZ

Changed password for user elastic
PASSWORD elastic = QA4xUfjBwnfjI6u73Af2

配置Kibana

配置Kibana连接Elasticsearch的账号

上文生成了kibana_system这个账号密码,现在给Kibana配置上这个账号使Kibana能够连接Elasticsearch。

[root@cncs ~]# vi /etc/kibana/kibana.yml
elasticsearch.username: "kibana_system"
elasticsearch.password: "lwjCX1ho1oOMGf30bbJW"

现在可以使用elastic这个账号访问网页端http://10.18.224.112:5601/了。

配置Filebeat

配置Filebeat连接Elasticsearch的账号

这里用的是elastic这个账号密码

[root@localhost ~]# vi /etc/filebeat/filebeat.yml
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["10.18.224.112:9200"]
  username: "elastic"
  password: "QA4xUfjBwnfjI6u73Af2"