我之前写了ELK+shield的部署文档,由于shield是商业收费的,很多人都推崇开源项目search-guard来做ELK的安全组件,准确来说是elasticsearch的安全组件。search-guard的部署很简单,但是开始着手弄,完全不了解的情况下还是会踩一些坑,加上网上对新版本使用介绍少,所以我决定写一遍search-guard的部署文档。 
search-guard插件包含两部分,search-guard-ssl和search-guard-2两个插件(官网提供了一个特殊的包,包含了search-guard和elasticsearch的一个压缩包,里面东西齐全,但是有点乱,还有windows的执行文件,所以我还是一步步安装插件)。 
我们先安装search-guard-ssl。按照以下步骤安装:

  • 安装search-guard-ssl插件

    切换到elasticsearch的目录(一般是/usr/share/elasticsearch) 
    命令安装插件:

sudo bin/plugin install com.floragunn/search-guard-ssl/2.3.4.16
  • 1
  • 1
 注意版本,这里elasticsearch的版本就是2.3.4,它是要跟search-guard的版本进行对应的。
  • 克隆search-guard-ssl项目,生成相关证书

    克隆项目命令:

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

一般来说创建数字证书流程如下: 
创建证书流程: 
1.创建ROOT CA(根证书/CA认证机构) 
2.应用服务器创建CSR(证书签名请求文件),同时会创建好自己的密钥对(公钥和私钥) 
3.将CSR发送到CA认证机构 
4.CA机构将返回一个数字签名证书

首先切换到刚刚克隆的search-guard-ssl的项目目录下 
修改etc目录下的配置文件 
example-pki-scripts/etc/root-ca.conf 
example-pki-scripts/etc/signing-ca.conf 
根据自己情况改为公司相关信息等 
利用脚本,写入密码,生成根证书

sudo ./gen_root_ca.sh paswd paswd
  • 1
  • 1

search-guard-ssl 还提供了以下脚本 
gen_node_cert.sh 
可以修改成自己的信息,生成相应服务器证书,里面包含了上述生成数字证书的过程。 
gen_client_node_cert.sh 
同理生成客户端数字证书。这里记住-dname参数后面的信息,后面认证客户端,就靠这个。 
修改完脚本,就可以执行脚本,就会生成相关证书了。 
- 配置ssl 
将生成的证书,keystore.jks 和 truststore.jks复制到/etc/elasticsearch目录下,然后配置elasticsearch.yml添加配置 
searchguard.ssl.transport.enabled: true 
searchguard.ssl.transport.keystore_filepath: example-keystore.jks 
searchguard.ssl.transport.keystore_password: paswd 
searchguard.ssl.transport.truststore_filepath: truststore.jks 
searchguard.ssl.transport.truststore_password: paswd 
searchguard.ssl.transport.enforce_hostname_verification: false 
searchguard.ssl.transport.resolve_hostname: false

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

searchguard.ssl.http.enabled: false 
searchguard.ssl.http.keystore_filepath: example-keystore.jks 
searchguard.ssl.http.keystore_password: paswd 
searchguard.ssl.http.truststore_filepath: truststore.jks 
searchguard.ssl.http.truststore_password: paswd

searchguard.allow_all_from_loopback: true

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

searchguard.authcz.admin_dn: 
- CN=example, OU=client, O=client, L=Test, C=DE

安装search-guard-2插件

  • 安装插件
sudo bin/plugin install -b com.floragunn/search-guard-2/2.3.4.4
  • 1
  • 1

这里同样,版本注意与elasticsearch对应。

  • 修改配置并插入

切换目录到/usr/share/elasticsearch/plugins/search-guard-2/ 
修改该目录下的sgconfig目下的配置文件 
这里和shield类似,修改用户,角色,角色映射几个配置文件即可。

注意,这里用户密码,可以通过plugins下的tools/hash.sh工具生成密码的hash加密文本

配置文件修改完成后,通过命令将配置插入到elasticsearh中,

sudo tools/sgadmin.sh -cd sgconfig/ -ks sgconfig/example-keystore.jks  -kspass paswd -ts sgconfig/truststore.jks -tspass paswd -nhnv
  • 1
  • 1

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

接下来就是配置kibana和logstash的了。

注意: 
为了logstash通过ssl连接elasticsearch,需要将elasticsearch的证书导入到Java的cacerts中 
其中要求必须是 x509标准的证书

错误提示如:keytool 错误: java.lang.Exception: 所输入的不是 X.509 证书

这时候就需要把我们的jks的证书做如下转换 
sudo keytool -export -alias example -file example.der -keystore example.jks 
sudo openssl x509 -inform der example.der -out example.pem 
sudo openssl x509 -outform der -in example.pem -out example.crt 
sudo keytool -importcert -file example.crt -alias example -keystore cacerts -storepass changeit

(转)Elasticsearch search-guard 插件部署的更多相关文章

  1. Elasticsearch 5.0 安装 Search Guard 5 插件 (五)

    一.Search Guard 简介 Search Guard  是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...

  2. Elasticsearch 5.0 安装 Search Guard 5 插件

    一.Search Guard 简介 Search Guard  是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...

  3. (转) Elasticsearch 5.0 安装 Search Guard 5 插件

    一.Search Guard 简介 Search Guard  是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...

  4. elasticsearch安装与使用(5)-- search guard安装与配置

    一.安装search guard插件必须要安装两部分: ①search-guard-xx ②search-guard-ssl (XX指的是与elasticsearch引擎对应的版本) github地址 ...

  5. elasticsearch 6.x 安装search guard

    前言 es之前版本一直无用户验证功能,不过官方有提供一x-pack,但是问题是付费.在es的6.3.2版本中,已经集成了x-pack,虽然es团队已经对x-pack开源,但是在该版本中如果需要使用到安 ...

  6. ELK之安装了search guard认证后安装elasticsearch-head

    安装searc guard参考https://www.cnblogs.com/minseo/p/10576126.html 安装elasticsearch-head参考 https://www.cnb ...

  7. ELK之elasticsearch6安装认证模块search guard

    参考:https://www.cnblogs.com/marility/p/9392645.html 1,安装环境及软件版本 程序 版本 安装方式  elasticsearch  6.3.1  rpm ...

  8. Elasticsearch介绍及安装部署

    本节内容: Elasticsearch介绍 Elasticsearch集群安装部署 Elasticsearch优化 安装插件:中文分词器ik 一.Elasticsearch介绍 Elasticsear ...

  9. ELK教程1:ElasticSearch集群的部署ELK

    在分布式系统中,应用数量众多,应用调用链复杂,常常使用ELK作为日志收集.分析和展示的组件.本篇文章将讲讲解如何部署ELK,然后讲解如何使用Filebeat采集Spring Boot的日志输出到Log ...

  10. Elasticsearch 5.0Head插件

    Elasticsearch 5.0 —— Head插件部署指南   使用ES的基本都会使用过head,但是版本升级到5.0后,head插件就不好使了.下面就看看如何在5.0中启动Head插件吧! 官方 ...

随机推荐

  1. GD32F20x系列使用问题总结

    GD单片机近几年越来越火了,既有他自身相比与ST的价格优势,也有支持国货的信仰加成.然而一个新的东西,或者说一个相对较新的东西,在使用的友好性和资料的完整性方面还有很长的路要走. 现将个人使用过程中碰 ...

  2. springMVC补充——springMVC的表单标签

    同其他标签一样,使用标签的第一步是进行标签库的导入(如果页面频繁导入比较多的标签库,应当专门建立导入标签库的页面,详见ztree的随笔) 导入标签库: <%@ taglib prefix=&qu ...

  3. 20155317 《Java程序设计》实验五网络编程与安全实验报告

    20155317 <Java程序设计>实验五网络编程与安全实验报告 遇到问题 在刚开始启动客户端或者服务端时,出现了一系列的错误情况,总是提示异常信息 后来经过询问同学,反应将端口号修改一 ...

  4. VBox&vmware虚拟机安装Linux及Linux基础入门学习

    VBox&vmware虚拟机安装Linux及Linux基础入门学习 通过VMware workstation安装Linux 在安装虚拟机之前,我特意上网搜索了一下目前常使用的虚拟机软件,了解了 ...

  5. 20155334 2016-2017-2 《Java程序设计》第二周学习总结

    20155334 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 java中的基本类型 整数:有short.int.long三种 字节:byte 字符:cha ...

  6. echarts y轴,显示数据,但不显示竖线

    在yAxis中插入: axisLine: {show:false}, axisTick: {show:false}, yAxis : [ { show:true, axisLine: {show:fa ...

  7. 【LG3231】[HNOI2013]消毒

    题面 洛谷 题解 代码 \(100pts\) #include<iostream> #include<cstdio> #include<cstdlib> #incl ...

  8. 监听Entity Framework生成的Sql语句

               Entity Framework为我们提供了很大的方便,但有时候,我们想看看EF生成的Sql语句到底是怎样的,一种方式是我们可以启用Sql Server Profer工具.今天介 ...

  9. 我们一起学习WCF 第九篇聊天功能

    说到聊天,那么其实就是传输数据,把自己写的东西传给自己想发送的那么人.我总结一下传输常见的有三种方式 1:就是我们常见的数据库传输 2:就是文件(流)传输 3:就是socket传输 今天我们说的wcf ...

  10. 自动化之UI(autoit)

    自动化 说到自动化,我真的很不喜欢UI这层去做实践.前置条件要求比较严谨,如果不满足特定的前置条件,那么成本实在太大了. 投入与产出差过大,效果打折扣.从互联网来说,UI自动化是入门门槛很低的一种实践 ...