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
将内容复制并保存在记事本中,留待后续恢复使用
复制后,将原内容删除后保存退出。(类似 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
出现 Installed search-guard-5 即安装成功。
ll plugins/ 可看见如下信息
六、制作证书
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
找到上图位置,根据实际需要修改并留存。
同上修改 signing-ca.conf
vi signing-ca.conf
4、修改节点证书生成脚本
cd ..
vi gen_node_cert.sh
找到如下图
两个 -ext san=dns:$NODE_NAME 的位置。
将后面的.isearch.com.cn 改成 3 中配置的 [1.domainComponent].[0.domainComponent]。
[.isearch.com.cn 去掉,可以仅以主机名做标识]
修改后保存退出。
5、修改制作证书脚本
vi example.sh
上图红框位置,为 elasticsearch 节点服务器的节点名称,根据实际情况修改。
Elasticsearch 集群,进行如下调整:
gen_node_cert.sh 为创建 elasticsearch 服务端节点证书文件。
gen_client_node_cert.sh 为创建客户端证书文件。
该脚本使用的密码为随机串,生成后,会保存在 Readme.txt 中。
6、生成证书文件
./example.sh
主要文件,箭头指示。
Readme.txt 为密码文件
keystore.jks 为密钥文件,前缀不同。
truststore.jks 为全局密钥,所有服务使用同一个。
查看 Readme.txt 内容,并记录相应密码
七、配置 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
改为以下内容:
以上有颜色部分需要和 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 内容最后增加如下两段:
角色文件中 kibana、logstash 部分改完如下图所示:
更多细节配置,后续使用中整理。目前改动这些,可供系统正常使用。
3、配置导入 sgadmin 用户、角色信息
执行以下命令
看见如下返回信息,说明导入成功。
如果要修改用户、角色信息,只有修改 sgconfig 中的相关信息,重新进行该步操作即可。
九、检查 elasticsearch 状态
1、浏览器打开以下地址
提示证书问题时,添加例外。
此时会要求输入用户名密码。可以使用 logstash/logstash 进行测试登录。
登录成功页面会显示如下信息:
第四章 Kibana 访问集成 search-guard 的 Elasticsearch
1、上传文件
将 searchguard-kibana-5.5.1-4.zip 用 isearch 用户上传到 /home/isearch 目录。
2、执行以下命令进行插件安装
返回如下显示,说明安装完成
检查 kibana 目录
Searchguard 插件已安装在 kibana 跟目录下,即可。
3、修改 kibana 配置
4、替换 kibana 页面
CDA 对 kibana 页面做了调整。需要重新调整集成 search-guard 后的 kibana 页面。
【待实现】
5、启动 kibana
kibanad restart
使用以下命令查看 kibana 日志:
tail -f /isearch/kibana/logs/kibana.stdout
日志未报错,出现类似如下日志,说明配置正常。
6、页面访问 kibana
会出现如下登录页面:
使用 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 段部分进行修改。如下所示:
上述配置中:
hosts:在本例中,在生成证书的时候,-ext san=dns 部分,填写的是节点名称加上公司网站后缀。节点名称为 isearch-spdb,公司网站后缀为.isearch.com.cn。后一个 dns 配置的为 localhost,ip 配置的 127.0.0.1。所以 host 直接写 IP 地址,是不能访问的。这里配置的为域名加端口号。故需要root权限增加一个 hosts映射,ip地址为实际 Elasticsearch**** 服务器地址。
user、password 为在 sgadmin 配置用户时配置的 Logstash 用户帐号。
truststore_password 为生成证书时,trust 证书的密码。
3、启动 Logstash
logstashd restart
tail -f /isearch/logstash/logs/_logstash.log/logstash-plain.log
显示如下信息,说明 Logstash 启动成功。
4、验证
验证步骤会向 Elasticsearch 数据库中写入测试数据。现场可等待系统正常写入数据进行测试。
第六章 Web 访问集成 search-gurad 的 Elasticsearch 库
1、上传升级文件
上传 web 升级中的 SecretUtil.zip 和 webapp.tar.gz 包到 isearch 用户的 /home/isearch 目录。
2、拷贝证书文件
3、升级 web
执行以下命令进行 web 升级
ll /isearch/isa/webapp/WEB-INF/lib/ |wc -l
后返回 186 说明 jar 包个数正确。
vi jdbc.properties 后进行配置文件修改
增加如下配置
以上两个密码分别是 sgadmin 的密码和 trustore 的密码,通过 SecretUtil.zip 工具进行加密后的密文。
并注意其他 es 配置是否一致。
4、启动 tomcat
tomcatd restart
tail -f /isearch/tomcat/logs/ueba.log 查看日志。
启动用,浏览器打开 http://ip:9080
输入用户名、密码登录后。点击历史录屏菜单
能正常打开后,说明集成成功。
很有用处!