elasticsearch的search guard的安装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_39150148/article/details/80681768

search guard的安装

配置清单:

  • elasticsearch-5.6.4.tar.gz
  • search-guard-5-5.6.4-18.zip
  • search-guard-ssl-5.6.0.zip
  • search-guard-tlstool-1.1.tar.gz

一:elasticsearch集群正常配置(略)

二:安装search guard插件

三:生成证书文件

1.下载search guard 源码工具,里面包含证书生成工具

git clone https://github.com/floragunncom/search-guard-ssl.git

2.切换到search guard ssl 源码目录,进入example-pki-scripts文件夹,里面有3个脚本

cd search-guard-ssl/example-pki-scripts
gen\_client\_node_cert.sh  创建客户端证
gen\_node\_cert.sh           创建节点证书
gen\_root\_ca.sh               创建根证书

3..进入example-pki-scripts/etc目录,里面是证书生成时的一些配置文件,可根据需要修改相应的信息

root-ca.conf            根证书配置
signing-ca.conf        签名证书配置

其中自定义的信息如下:

domainComponent = "www.test.com”域名1.
domainComponent = "www.test.com"  域名
organizationName = "Test" 组织名称
organizationalUnitName = "Test Root CA" 组织单位名称
commonName = "Test Root CA" 通用名称

以上信息随便填写,只要保证生成证书时跟证书、签名证书中的信息一致即可

4.生成证书

返回到example-pki-scripts目录下,修改example.sh文件:

修改之后如下:

#!/bin/bash
set -e
./clean.sh
./gen\_root\_ca.sh 12345678 12345678
./gen\_node\_cert.sh 0 12345678 12345678&& ./gen\_node\_cert.sh 1 12345678 12345678 && ./gen\_node\_cert.sh 2 12345678 12345678
./gen\_client\_node_cert.sh test 12345678 12345678
./gen\_client\_node_cert.sh test 12345678 12345678

参数说明:

./gen\_root\_ca.sh 12345678 12345678
  1. 第一个参数为CA_PASS,即CA密码(根证书密码)
  2. 第二个参数为TS_PASS,即TS密码(truststore,信任证书密码)
./gen\_node\_cert.sh 0 12345678 12345678
  1. 第一个参数为node编号,生成证书后的文件名为node-0*
  2. 第二个参数为KS_PASS(keystore文件密码)
  3. 第三个参数为CA_PASS
./gen\_client\_node_cert.sh test 12345678
  1. 第一个参数为客户端节点名称,生成证书后的文件名为test*
  2. 第二个参数为KS_PASS
  3. 第三个参数为CA_PASS

5.运行example.sh文件,会在当前目录下生成各种证书文件:

sh example.sh

四、配置

1.证书上传到elasticsearch

将example-pki-scripts文件夹中的node-0-keystore.jks和truststore.jks复制到elasticsearch的配置目录中(/elasticsearch-5.6.4/config)

cp node-0-keystore.jks /etc/elasticsearchcp truststore.jks /etc/elasticsearch

将example-pki-scripts文件夹中的test-keystore.jks和truststore.jks复制到elasticsearch程序目录下的plugins/search-guard-5/sgconfig下,如果这个节点是主节点,则所有节点的search guard配置都从这个节点中配置,然后分发到其它节点中

cp test-keystore.jks /usr/share/elasticsearch/plugins/search-guard-5/sgconfig/cp truststore.jks /usr/share/elasticsearch/plugins/search-guard-5/sgconfig/

2.修改elasticsearch配置文件:

vim /etc/elasticsearch/elasticsearch.yml

修改以下配置:

cluster.name: test
node.name: node-0

增加以下配置:

search-guard配置

配置ssl

searchguard.ssl.transport.enabled: true
searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks
searchguard.ssl.transport.keystore_password: 12345678
searchguard.ssl.transport.truststore_filepath: truststore.jks
searchguard.ssl.transport.truststore_password: 12345678
searchguard.ssl.transport.enforce\_hostname\_verification: false
searchguard.ssl.transport.resolve_hostname: false

配置http

http配置,这里我只是为了测试方便,配置完,应该设置为true

searchguard.ssl.http.enabled: false
searchguard.ssl.http.keystore_filepath: node-0-keystore.jks
searchguard.ssl.http.keystore_password: 12345678
searchguard.ssl.http.truststore_filepath: truststore.jks
searchguard.ssl.http.truststore_password: 12345678
searchguard.allow\_all\_from_loopback: true

# 这里注意,下面的配置一定要和签的客户端证书一致,否则不能插入配置

searchguard.authcz.admin_dn:

\- CN=test, OU=client, O=client, L=Test, C=DE

3.配置完后重启elasticsearch

systemctl restart elasticsearch
systemctl status elasticsearc

五、将配置写入运行中的elasticsearch

进入到elasticsearch安装目录中

cd /usr/share/elasticsearch/

运行如下命令将配置写入到elasticsearch中:

./plugins/search-guard-2/tools/sgadmin.sh -cn 集群名称 -h hostname -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/admin-keystore.jks -kspass password -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass password -nhnv

hostname:指的是elasticsearch的elasticsearch.yml配置文件中 network.host 设置的值

根据上面的配置,输入的命令如下:

./plugins/search-guard-2/tools/sgadmin.sh -cn test -h 0.0.0.0 -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass 12345678 -nhnv

需要注意:

如果提示没有操作权限,则必须先把hash.sh文件的权限开放

chmod -R 777 plugins/search-guard-2/tools/sgadmin.sh

的是这时候elasticsearch的服务必须是运行状态。如果插入配置失败,检查配置文件,比如前面提到的,生成客户端证书的时候dname的参数 必须与配置文件中searchguard.authcz.admin_dn:下的认证列表进行对应。

如成功写入配置,则会显示以下信息:

六、search guard 配置文件介绍

search-guard中的用户权限管理

相关配置文件的介绍

searchguard 主要有5个配置文件在plugins/search-guard-5/sgconfig 下:

  1. sg_config.yml:主配置文件不需要做改动。
  2. sg_internal_users.yml:本地用户文件,定义用户密码以及对应的权限。
  3. sg_roles.yml:权限配置文件
  4. sg_roles_mapping.yml:定义用户的映射关系
  5. sg_action_groups.yml:定义权限

修改内置用户密码,然后再运行一次search guard 配置写入命令。

1.则先用plugins/search-guard-2/tools/hash.sh生成hash字符串,生成密码:

cd /usr/share/elasticsearch/
plugins/search-guard-5/tools/hash.sh -p 123456

如果提示没有操作权限,则必须先把hash.sh文件的权限开放

chmod -R 777 plugins/search-guard-5/tools/hash.sh

获得哈希生成后的密码

2.将字符串复制到sg_internal_users.yml文件的对应用户密码位置,在密码下面记得写入原密码的提示,难保你那天忘记了。

vim plugins/search-guard-5/sgconfig/sg\_internal\_users.yml

3.添加用户权限

vim /usr/share/elasticsearch/plugins/search-guard-5/sgconfig/sg\_roles\_mapping.yml

在39行处的sg_all_access添加你新增的用户名,就获得所有权限了

4.重新写入配置

先回到elasticsearch的安装文件夹

cd /usr/share/elasticsearch/

./plugins/search-guard-5/tools/sgadmin.sh -cn test -h 0.0.0.0 -cd plugins/search-guard-5/sgconfig -ks plugins/search-guard-5/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-5/sgconfig/truststore.jks -tspass 12345678 -nhnv

5.测试

curl -XGET "http://shifu:123456@127.0.0.1:9200"

如果密码设置成功则显示

现在每次想访问你网站的9200端口都必须要有搜索认证的保护了。

七:参考文档:

  1. https://docs.search-guard.com/v5/search-guard-installation
  2. https://www.cnblogs.com/shifu204/p/6376683.html

Original url: Access

Created at: 2018-09-14 15:45:26

Category: default

Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论