一、安装ElasticSearch6.4.3
下载ElasticSearch6.4.3
1、解压到/usr/local/elasticsearch-6.4.3
tar -zxvf elasticsearch-6.4.3.tar.gz
2、修改配置文件elasticsearch.yml
cluster.name: searchguard_demo
node.name: node123
network.host: 0.0.0.0
2、创建linux用户es
groupadd elasticsearch
useradd es -g elasticsearch-p 123456
chown -R es:elasticsearch /usr/local/elasticsearch-6.4.3
3、设置打开文件数量和最大内存大小
# vi /etc/security/limits.conf
添加下面内容:
es hard nofile 65536
es soft nofile 65536
# vi /etc/sysctl.conf
添加下面内容:
vm.max_map_count=262144
加载系统参数
# sysctl -p
4、给es用户文件elasticsearch-6.4.3
# chown -R es /usr/local/elasticsearch-6.4.3
5、切换用户到es
# su es
6、设置权限
chmod -R 777 /usr/local/elasticsearch-6.4.3/
二、安装SearchGuard
1、去官网下载search-guard-6-6.4.3-25.5.zip
https://releases.floragunn.com/search-guard-6/6.4.3-25.5/search-guard-6-6.4.3-25.5.zip
2、其他es版本对应searchguard版本
Latest Search Guard Versions | Elasticsearch Security | Search Guard
3、将下载的zip包复制到/usr/local/elasticsearch-6.4.3下(可以是其他目录)
4、安装
#cd /usr/local/elasticsearch-6.4.3
#bin/elasticsearch-plugin install -b file:./search-guard-6-6.4.3-25.5.zip
5、修改admin密码(此处的es6sg@asdftgb为密码,按照实际情况更改)
$ chmod -R 777 /usr/local/elasticsearch-6.4.3/plugins/search-guard-6/
$ cd /usr/local/elasticsearch-6.4.3/plugins/search-guard-6/tools
$ ./hash.sh -p es6sg@asdftgb
复制打印的hash到/usr/local/elasticsearch-6.4.3/plugins/search-guard-6/sgconfig/ sg_internal_users.yml里,替换原来的密码:
6、执行demo配置(tools目录)
$ ./install_demo_configuration.sh
7、启动es
cd /usr/local/elasticsearch-6.4.3/bin
./elasticsearch
8、尝试用网页打开
https://192.168.184.130:9200/
注:浏览器访问,es服务端会一直输出certificate_unknown错误,原因未明
可以配置es目录下的config目录下的elasticsearch.yml文件,将searchguard.ssl.http.enabled设置为false(如果希望使用https则需要自己看下是为什么。。。),则可以直接用http访问(也需要账号密码):
可以看到http请求中在header中加入了:
Authorization: Basic YWRtaW46ZXM2c2dAYXNkZnRnYg==
其中 “YWRtaW46ZXM2c2dAYXNkZnRnYg==” 是 admin:es6sg@asdftgb 进行base64编码的结果
=》类似在原先的http请求头中加入该项则可以正常访问,否则无法访问
三、配置SearchGuard证书
1、生成证书方式有两种,一种是在线生成,一种是离线生成
在线生成:
TLS Certificate Generator - Search Guard
提交后会收到邮件,从邮件给的地址下载相应的证书
2、将解压后的文件拷贝到/usr/local/elasticsearch-6.4.3/config的 key目录下
3、 修改/usr/local/elasticsearch-6.4.3/config/elasticsearch.yml
(其中pemkey_password为下载的证书中的README.txt中对应Host下的password)
(需要删除原es目录/config下的esnode.pem, esnode-key.pem, kirk.pem, kirk-key.pem, root-ca.pem)
4、配置sgadmin
复制es目录/config/key下的root-ca.pem,client-certificates/CN=sgadmin.crtfull.pem,client-certificates/CN=sgadmin.key.pem 到/usr/local/elasticsearch-6.4.3/plugins/search-guard-6/tools下
执行:(其中14f2766d6b1bb9a98f96为下载的证书中的README.txt中的“Admin keystore and private key password”)
# cd /usr/local/elasticsearch-6.4.3/plugins/search-guard-6/tools
# ./sgadmin.sh -cacert root-ca.pem -cert CN=sgadmin.crtfull.pem -key CN=sgadmin.key.pem -keypass 14f2766d6b1bb9a98f96 -nhnv -icl -cd ../sgconfig/
同时也可以配置keystore和truststore(应该可以不配置,取决于Client端使用的方式)(配置方式见README.txt(复制文件 并 执行sgadmin.sh)):