searchguard-6的安装和配置

记录一下searchguard-6的安装和配置过程,


Overview

elasticsearch在暴露了一个node的ip和端口后就可以对整个集群进行各种操作,删索引,改数据等。在重要的项目应用中,需要防范这一点。

目前常见的安全防范方式有,

  1. X-Pack Elasticsearch Security,收费License
  2. Search Guard,免费开源

下面就Search Guard,将其最小化安装到es集群。

版本

  • elasticsearch-6.4.2.tar.gz
  • search-guard-6-6.4.2-23.1.zip

安装search guard

sg plugin installation

  1. tar -zxvf elasticsearch-6.4.2.tar.gz
  2. cd elasticsearch-6.4.2
  3. bin/elasticsearch-plugin install -b file:///path/to/search-guard-6-6.4.2-23.1.zip

image

sg plugin install success

sg demo quick installer

image

run demo installer, failed

image

run demo installer2, succeeded

  1. install_demo_configuration.sh赋权
  2. 运行install_demo_configuration.sh,此时该脚本会将秘钥文件生成,并cp到/config下,同时append sg配置内容到/config/elasticsearch.yml

image

sg自动append的esyml

启动es,正常。 通过浏览器访问es集群,不正常,报错如下,

image

SSLException

应该是浏览器没有建立ssl链接,没有深究这方面,换了一种方式,即在esyml里把SSL关闭。

  1. 关闭SSL

image

esyml

image

es login succeeded

image

sg demo config

sg自定义1

基于demo生成的证书,直接修改原有账户名及其密码,

  1. 生成hash新密码

image

hash new password

  1. 修改/sgconfig/sg_internal_users.yml

image

image.png

  1. 分发新配置到es集群 ``` cd ./plugins/search-guard-6/tools

./sgadmin.sh -cd ../sgconfig/ -icl -nhnv
-cacert ../../../config/root-ca.pem
-cert ../../../config/kirk.pem
-key ../../../config/kirk-key.pem ```

image

snapshot of new account and password

sg自定义2

sg可以自定义密码和加密方式。首先下载ssl生成工具,然后进行自定义配置,

  1. git clone –depth=1 https://github.com/floragunncom/search-guard-ssl.git
  2. 配置ca

image

root-ca

image

signing-ca

  1. 配置生成脚本example.sh

image

root,node,client的ca生成配置

  1. cp生成的node证书到es/config
    • 首先在es/config删除demo生成的(*.pem)
    • cp search-guard-ssl的node-*-keystore.jkstruststore.jks到es/config
  2. 配置esyml

image

esyml

  1. cp生成的client证书到/plugins/search-guard-6/sgconfig/

  2. 修改/sgconfig/sg_internal_users.yml

image

生成hash password

image

配置sg_internal_users.yml

  1. 分发新配置到es集群

image

重启使之生效

Reference