ElasticSearch 加密 Searchguard 插件使用

第一章 准备工作

一、工具包准备

1、search-guard-5-5.5.1-16.zip 对应 Elasticsearch-5.5.1

2、searchguard-kibana-5.5.1-4.zip 对应 Kibana-5.5.1

3、search-guard-ssl-5.5.0.tar.gz 证书生成工具。

二、Linux 用户

使用系统运行用户。浦发默认为 isearch 用户。上传文件、执行操作,均在 isearch 用户下进行。

三、停止所有服务

按文档顺序进行服务停止

1、停止 crontab

crontab -e

将内容复制并保存在记事本中,留待后续恢复使用
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用

复制后,将原内容删除后保存退出。(类似 vi 保存退出)

2、停止 tomcat

停止所有有 tomcat 的服务器上的 tomcat 服务。

tomcatd stop

2、停止 logstash

停止所有有 logstash 的服务器上的 logstash 服务。

logstashd stop

3、停止 kibana

停止所有有 kibana 的服务器上的 kibana(集群下,基本上仅 Portal 主机有 Kibana)

kibanad stop

4、停止 elasticsearch

停止所有有 elasticsearch 的服务器上的 elasticsearch。(浦发 elasticsearch 由浦发卡中心管理,我们不操作)

elasticsearchd stop

5、检查停止情况

crontab -l 返回空

ps -ef|grep tomcat

ps -ef|grep logstash

ps -ef|grep kibana

ps -ef|grep elasticsearch

以上 4 个返回无相关进程即可。

第二章 Elasticsearch 安装 search-guard 插件

四、上传文件

将 search-guard-5-5.5.1-16.zip 和 search-guard-ssl-5.5.0.tar.gz 用 isearch 用户上传到 /home/isearch 目录。

五、Search-guard 插件安装

1、进入 elasticsearch 根目录

cd /isearch/elasticsearch

2、安装插件

bin/elasticsearch-plugin install -b file:///home/isearch/search-guard-5-5.5.1-16.zip

ElasticSearch 加密 Searchguard 插件使用

出现 Installed search-guard-5 即安装成功。

ll plugins/ 可看见如下信息

ElasticSearch 加密 Searchguard 插件使用

六、制作证书

1、解压证书生成工具

cd /home/isearch

tar -zxvf search-guard-ssl-5.5.0.tar.gz

cd search-guard-ssl-5.5.0

2、备份原证书制作脚本

cp -rf example-pki-scripts example-pki-scripts-bak

cd example-pki-scripts

3、修改证书配置信息

cd etc

vi root-ca.conf

ElasticSearch 加密 Searchguard 插件使用

找到上图位置,根据实际需要修改并留存。

同上修改 signing-ca.conf

vi signing-ca.conf

ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用

4、修改节点证书生成脚本

cd ..

vi gen_node_cert.sh

找到如下图

ElasticSearch 加密 Searchguard 插件使用

两个 -ext san=dns:$NODE_NAME 的位置。

将后面的.isearch.com.cn 改成 3 中配置的 [1.domainComponent].[0.domainComponent]。

[.isearch.com.cn 去掉,可以仅以主机名做标识]

修改后保存退出。

5、修改制作证书脚本

vi example.sh

ElasticSearch 加密 Searchguard 插件使用

上图红框位置,为 elasticsearch 节点服务器的节点名称,根据实际情况修改。

Elasticsearch 集群,进行如下调整:

ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用

gen_node_cert.sh 为创建 elasticsearch 服务端节点证书文件。

gen_client_node_cert.sh 为创建客户端证书文件。

该脚本使用的密码为随机串,生成后,会保存在 Readme.txt 中。

6、生成证书文件

./example.sh

ElasticSearch 加密 Searchguard 插件使用

主要文件,箭头指示。

Readme.txt 为密码文件

keystore.jks 为密钥文件,前缀不同。

truststore.jks 为全局密钥,所有服务使用同一个。

查看 Readme.txt 内容,并记录相应密码

ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用

七、配置 search-guard

接第六步操作。

1、拷贝 Elasticsearch 密钥文件到 Elasticsearch 配置目录

cp isearch-spdb-keystore.jks /isearch/elasticsearch/config/

cp truststore.jks /isearch/elasticsearch/config/

7、修改 Elasticsearch 配置文件

vi /isearch/elasticsearch/config/elasticsearch.yml

改为以下内容:

ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用

以上有颜色部分需要和 Readme.txt 中的相关内容对应。

两个 filepath 值,需要要实际使用的文件名对应。

8、启动 Elasticsearch

elasticsearchd restart

使用以下命令查看 elasticsearch 日志

tail -f /isearch/elasticsearch/logs/escluster.log

escluster.log 文件名前缀为 cluster.name: escluster 配置的集群名称。日志不报错,就说明启动成功了。

第三章 Search-guard 配置管理帐号

八、配置管理证书

1、拷贝密钥文件

cd /home/isearch/search-guard-ssl-5.5.0/example-pki-scripts

cp sgadmin-keystore.jks
/isearch/elasticsearch/plugins/search-guard-5/sgconfig/

cp truststore.jks
/isearch/elasticsearch/plugins/search-guard-5/sgconfig/

2、角色权限配置

cd /isearch/elasticsearch/plugins/search-guard-5/sgconfg

编辑 sg_roles.xml 文件

vi sg_roles.xml

(1) 找到所有 indices 包含?kibana 的地方

将?kibana 改为 *kibana

(2) 找到 sg_logstash 所在段落

在 indices 内容最后增加如下两段:
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用
角色文件中 kibana、logstash 部分改完如下图所示:
ElasticSearch 加密 Searchguard 插件使用
ElasticSearch 加密 Searchguard 插件使用
更多细节配置,后续使用中整理。目前改动这些,可供系统正常使用。

3、配置导入 sgadmin 用户、角色信息

执行以下命令
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用
看见如下返回信息,说明导入成功。
ElasticSearch 加密 Searchguard 插件使用
如果要修改用户、角色信息,只有修改 sgconfig 中的相关信息,重新进行该步操作即可。

九、检查 elasticsearch 状态

1、浏览器打开以下地址

https://ip:9200

提示证书问题时,添加例外。

此时会要求输入用户名密码。可以使用 logstash/logstash 进行测试登录。

登录成功页面会显示如下信息:
ElasticSearch 加密 Searchguard 插件使用

第四章 Kibana 访问集成 search-guard 的 Elasticsearch

1、上传文件

将 searchguard-kibana-5.5.1-4.zip 用 isearch 用户上传到 /home/isearch 目录。

2、执行以下命令进行插件安装
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用
返回如下显示,说明安装完成
ElasticSearch 加密 Searchguard 插件使用
检查 kibana 目录
ElasticSearch 加密 Searchguard 插件使用
Searchguard 插件已安装在 kibana 跟目录下,即可。

3、修改 kibana 配置
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用
4、替换 kibana 页面

CDA 对 kibana 页面做了调整。需要重新调整集成 search-guard 后的 kibana 页面。

【待实现】

5、启动 kibana

kibanad restart

使用以下命令查看 kibana 日志:

tail -f /isearch/kibana/logs/kibana.stdout

日志未报错,出现类似如下日志,说明配置正常。
ElasticSearch 加密 Searchguard 插件使用

6、页面访问 kibana

http://ip:5601

会出现如下登录页面:
ElasticSearch 加密 Searchguard 插件使用
使用 kibanaro/kibanaro 登录,可访问 kibana 页面。

第五章 Logstash 连接集成 search-guard 的 Elasticsearch

1、拷贝证书文件

cd /home/isearch/search-guard-ssl-5.5.0/example-pki-scripts

cp truststore.jks /isearch/logstash/config/

2、修改配置

cd /isearch/logstash/config

vi logstash.conf

找到 output 部分。

将所有 elasticsearch 段部分进行修改。如下所示:
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用

上述配置中:

hosts:在本例中,在生成证书的时候,-ext san=dns 部分,填写的是节点名称加上公司网站后缀。节点名称为 isearch-spdb,公司网站后缀为.isearch.com.cn。后一个 dns 配置的为 localhost,ip 配置的 127.0.0.1。所以 host 直接写 IP 地址,是不能访问的。这里配置的为域名加端口号。故需要root权限增加一个 hosts映射,ip地址为实际 Elasticsearch**** 服务器地址
ElasticSearch 加密 Searchguard 插件使用
ElasticSearch 加密 Searchguard 插件使用
user、password 为在 sgadmin 配置用户时配置的 Logstash 用户帐号。

truststore_password 为生成证书时,trust 证书的密码。

3、启动 Logstash

logstashd restart

tail -f /isearch/logstash/logs/_logstash.log/logstash-plain.log

显示如下信息,说明 Logstash 启动成功。
ElasticSearch 加密 Searchguard 插件使用
4、验证

验证步骤会向 Elasticsearch 数据库中写入测试数据。现场可等待系统正常写入数据进行测试。

第六章 Web 访问集成 search-gurad 的 Elasticsearch 库

1、上传升级文件

上传 web 升级中的 SecretUtil.zip 和 webapp.tar.gz 包到 isearch 用户的 /home/isearch 目录。

2、拷贝证书文件
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用
3、升级 web

  执行以下命令进行 web 升级
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用
ll /isearch/isa/webapp/WEB-INF/lib/ |wc -l

后返回 186 说明 jar 包个数正确。

vi jdbc.properties 后进行配置文件修改

增加如下配置

以上两个密码分别是 sgadmin 的密码和 trustore 的密码,通过 SecretUtil.zip 工具进行加密后的密文。

并注意其他 es 配置是否一致。
ElasticSearch 加密 Searchguard 插件使用 ElasticSearch 加密 Searchguard 插件使用

4、启动 tomcat

tomcatd restart

tail -f /isearch/tomcat/logs/ueba.log 查看日志。

启动用,浏览器打开 http://ip:9080

输入用户名、密码登录后。点击历史录屏菜单

能正常打开后,说明集成成功。