本文不讲elk的安装,只说如何在现有elk环境下添加searchguard功能。
(官方文档:http://floragunncom.github.io/search-guard-docs/)
1、elasticsearch安装searchguard:
1.版本选择:https://github.com/floragunncom/search-guard/wiki
官网给出了对应地址,按照自己elk版本选择最新的sg版本即可
2.安装插件(每个节点):
bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.5.2-16
在线安装可能不成功,可以下载离线安装包安装
bin/elasticsearch-plugin install -b file:///path/to/search-guard-5-<version>.zip
安装过程中,提示输入y/n。按y通过即可
3.安装完成后,更改elasticsearch.yml(每个节点)
(我们先按官方给的例子做一遍,第二章再将如何定义自己的证书)
停止 Elasticsearch
cd into <Elasticsearch directory>/plugins/search-guard-5/tools
执行./install_demo_configuration.sh
, 这个脚本帮我们在es的配置目录生成了下面三个文件:
truststore.jks—the root CA and intermediate/signing CA.
keystore.jks—the node certificate.
kirk.jks—the admin certificate required for running sgadmin
并且在elasticsearch.yml文件中添加了以下类似内容(下面是我改过的了,先按默认就可以)
searchguard.ssl.transport.keystore_filepath: CN=node1-keystore.jks
searchguard.ssl.transport.keystore_password: d38bc22059de78ebd105
searchguard.ssl.transport.truststore_filepath: truststore.jks
searchguard.ssl.transport.truststore_password: 62ef1c559f6ba96e4ca1
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.keystore_filepath: CN=node1-keystore.jks
searchguard.ssl.http.keystore_password: d38bc22059de78ebd105
searchguard.ssl.http.truststore_filepath: truststore.jks
searchguard.ssl.http.truststore_password: 62ef1c559f6ba96e4ca1
searchguard.authcz.admin_dn:
- CN=sgadmin
其实还有两行是配置集群name和监听地址的,因为我们已经配置过了,这里又给加上了,直接删掉就可以,否则会启动失败
4.初始化sg(es集群中任意一台即可)
确保整个集群是正常的
进入cd <Elasticsearch directory>/plugins/search-guard-5/tools
执行./sgadmin_demo.sh(我们先按官方给的默认配置来做,但是这个文件中指定的集群名字跟我们es集群的名字不一样,就会报错)
我们先把 -cn my-application改成自己的集群名字再执行
看到下面信息说明初始化成功了
WARNING: JAVA_HOME not set, will use
/usr/bin/java
Search Guard Admin v5
Will connect to localhost:9300 ... done
### LICENSE NOTICE Search Guard ###
If you use one or more of the following features in production
make sure you have a valid Search Guard license
(See https://floragunn.com/searchguard-validate-license)
* Kibana Multitenancy
* LDAP authentication/authorization
* Active Directory authentication/authorization
* REST Management API
* JSON Web Token (JWT) authenticatio