一、Search Guard 简介

Search Guard  是 Elasticsearch 的安全插件。它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearch添加审核日志记录和文档/字段级安全性。

Search Guard 所有基本安全功能都是免费的,并且内置在Search Guard中。  Search Guard 支持OpenSSL并与Kibana和logstash配合使用。

基本安全功能包括:

  • 通过SSL / TLS进行节点到节点加密
  • 通过HTTPS(SSL / TLS)安全REST层
  • 灵活的REST层访问控制(基于用户/角色;基于别名,索引和类型)
  • 灵活的传输层访问控制(基于用户/角色;基于别名,索引和类型)
  • HTTP基本认证
  • HTTP代理身份验证
  • HTTP SSL/客户端证书身份验证
  • X-Forwarded-For(XFF)支持
  • 内部认证/授权
  • 匿名登录/未认证访问
  • 用户模拟
  • Tribe 节点支持

 二、安装Search Guard插件

对于Search Guard 5 只需要安装一个插件,即 Search Guard 。SSL层与主插件捆绑在一起。

在Elasticsearch的安装目录执行:

bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.0.0-9

在安装Search Guard时将看到以下警告消息,对于某些ES版本,您需要通过按“y”主动确认它:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.misc
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission loadLibrary.*
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission shutdownHooks
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission getProperty.ssl.KeyManagerFactory.algorithm
* java.util.PropertyPermission java.security.krb5.conf write
* java.util.PropertyPermission javax.security.auth.useSubjectCredsOnly write
* javax.security.auth.AuthPermission doAs
* javax.security.auth.AuthPermission modifyPrivateCredentials
* javax.security.auth.kerberos.ServicePermission * accept
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

当看到 Installed search-guard-5 时,说明安装成功,在Elasticsearch的安装目录plugin可以看到 search-guard-5 目录被创建。

三、配置TLS/SSL

1.生成密钥库和信任库

要使SSL正常工作,您必须拥有一个密钥库和一个包含每个节点上所有必需的证书和密钥的信任库。Search Guard 提供了两种方法生成证书,如果了解TLS或者已经有PKI基础架构,可以自己生成所需的证书。

1)TLS生成服务,填写相关信息便可将相关信息发送到个人邮箱中。链接地址为:https://floragunn.com/tls-certificate-generator/

2)PKI 实例脚本,要求必须安装OpenSSL且版本至少为1.0.1k。脚本将生成包含生成的根证书的信任库文件。 信任库文件可以在所有节点上使用。

下载解压5.0.0版本的 search-guard-ssl ,在example-pki-scripts目录中即为相对应的脚本。通过执行 example.sh 将自动生成证书。如果由于任何原因需要重新执行脚本,在同一目录中执行./clean.sh,即可自动删除所有生成的文件。

官方提供的脚本固定CA证书以及节点证书的密码分别为:capass、changeit,个人修改官方脚本将密码改为40位、20位的随机字符串,并将密码写入到Readme.txt中,脚本下载地址:example-pki-scripts.tar.gz

2.复制密钥库和信任库文件

在每个节点上,将keystore.jks和truststore.jks文件放在运行Elasticsearch的用户可读的目录中,这里放在了Elasticsearch的配置文件目录中。并且给予Elasticsearch用户读取文件权限。keystore.jks在每个节点上是特定的。

3、配置插件

停止Elasticsearch节点,并在Elasticsearch的配置文件中添加

searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks
searchguard.ssl.transport.keystore_password: e15fdd1f936e972f59c9
searchguard.ssl.transport.truststore_filepath: truststore.jks
searchguard.ssl.transport.truststore_password: 4461255a948bd9777b44
searchguard.ssl.transport.enforce_hostname_verification: false

推荐每个Elasticsearch节点使用不同的密钥库文件(node-0-keystore.jks)。此时节点之间的流量是TLS加密的。以上密码是由脚本自动生成,务必要修改为自己的密码。

注意:每个节点的密钥库文件不同,密码也不相同,但是信任库文件相同,密码也相同。

4、配置HTTPS

加密通过REST-API的http流量,添加如下配置:

searchguard.ssl.http.enabled: true
searchguard.ssl.http.keystore_filepath: node-0-keystore.jks
searchguard.ssl.http.keystore_password: e15fdd1f936e972f59c9
searchguard.ssl.http.truststore_filepath: truststore.jks
searchguard.ssl.http.truststore_password: 4461255a948bd9777b44

此时Elasticsearch将不再接受http请求。

5、导入 Root CA

为了使您的浏览器信任我们生成的证书,您需要导入 Root CA,并且对于某些浏览器或操作系统,还要信任此证书。双击root-ca.crt即可安装证书。

使用https访问节点如下图所示:

6、客户端身份验证(可选)

HTTPS通常只验证服务器标识,Search-Guard-SSL也提供了仅接受来自可信客户端的HTTPS连接。

在 elasticsearch.yml 配置文件中添加如下配置,开启客户端认证:

searchguard.ssl.http.clientauth_mode: REQUIRE

重新启动节点后,请再次尝试通过浏览器进行连接。你可以看到类似“基于证书的身份验证失败”或者“ERR_CONNECTION_CLOSED”的报错信息。

这意味着SG SSL要求您的浏览器标识自己。由于到目前为止,还没有为此目的安装任何证书,所以SG SSL拒绝连接。

和导入Root CA相同,需要安装让ES节点信任的证书,脚本 example.sh 也为我们生成了此类证书,证书的名称为kirk、spock,使用与节点证书相同的Root CA证书生成,并且生成了不同合适证书提供给不同的浏览器和操作系统。

导入证书后再次访问ES节点,浏览器会询问我们需要选择的证书。

四、配置管理证书

Search Guard的几乎所有配置设置都保存在Elasticsearch本身中,并且可以在运行时使用sgadmin命令行工具进行更改。使用sgadmin工具将配置设置加载到Search Guard索引中。 sgadmin通过客户端SSL证书将其自身标识为SG安全的Elasticsearch集群。称之为管理员证书。

务必将证书的DN配置到 elasticsearch.yml 中

searchguard.authcz.admin_dn:
- CN=sgadmin,OU=client,O=client,L=test,C=DE

可以配置多个管理证书。

sgadmin工具在 $ES_HOME/plugins/search-guard-5/tools 目录,并赋予工具执行权限 chmod +x tools/*.sh ,此时可以在任意节点执行脚本,配置将被推送到节点,并根据分片复制到其他节点。

sgadmin基本参数需要指定key和truststore,以及相应密码和配置文件目录。可以通过 -cn 选项指定集群名称,或者使用 -icl 忽略集群名称。

cd $ES_HOME/plugins/search-guard-5/
tools/sgadmin.sh -ts /etc/elasticsearch/truststore.jks -tspass 4461255a948bd9777b44 -ks sgconfig/sgadmin-keystore.jks -kspass d98a49bf3242b6873377 -cd sgconfig/ -icl -nhnv -h 10.10.51.240

此时访问ES节点是就要求输入账号密码,默认账号密码在 sgconfig/sg_internal_users.yml 中,可以通过工具 tools/hash.sh 设置密码。

更多sgadmin工具命令可以查看:https://github.com/floragunncom/search-guard-docs/blob/master/sgadmin.md

查看客户端身份验证信息,红框中便是证书的DN信息:

至此,已经成功在Elasticsearch5上安装Search Guard 5。

(转) Elasticsearch 5.0 安装 Search Guard 5 插件的更多相关文章

  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 6.x 安装search guard

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

  4. IDA7.0安装keypatch和findcrypt-yara插件

    IDA7.0安装keypatch和findcrypt-yara插件 谢天谢地终于装上了,赶紧把方法写一下.找了半天网上的安装方法又繁琐有坑人,偏偏这个插件利用keystone对版本要求很高. Keyp ...

  5. Linux下,非Docker启动Elasticsearch 6.3.0,安装ik分词器插件,以及使用Kibana测试Elasticsearch,

    Linux下,非Docker启动Elasticsearch 6.3.0 查看java版本,需要1.8版本 java -version yum -y install java 创建用户,因为elasti ...

  6. elasticsearch6.6.0安装配置及elasticsearch-head插件安装

    一.最小化安装centos7.6 cat /etc/redhat-release 二.配置网络,可以上外网 三.安装常用命令工具,修改系统时区,校对系统时间,关闭selinux,关闭firewalld ...

  7. elasticsearch 2.0+ 安装 Marvel

    Marvel 2.0+ Compatible with the latest versions of Elasticsearch and Kibana Step 1: Install Marvel i ...

  8. MyEclipse10.0安装jad反编译插件

    1.下载反编译工具jad(下面提供下载) 将下载下来的jadstar158.zip解压缩,将jad.exe文件放入jdk安装目录下 如:C:\Program Files\Java\jdk1.6.0_2 ...

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

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

随机推荐

  1. NIH周三讲座视频爬虫

    最近网是越来越差了,在线播放基本是没戏了,所以就动了爬虫下载的念头. NIH把视频片段存放,一般都是8秒一段,大概看下视频长度估算一下片段个数就差不多了. 新建一个NIH的文件夹,然后把爬虫下来的.t ...

  2. 接口与协议学习笔记-Ethernet UDP通信协议(一)

    总线(BUS,即公共汽车,数据的公共传输路线)分类的方式有很多,如被分为外部和内部总线.系统总线和非系统总线等等,下面是几种最常用的分类方法.另外,总线的传输核心思想是多路复用:时分多路复用-TDMA ...

  3. tarjan 强连通分量

    一.强连通分量定义 有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly c ...

  4. 20155231 实验三 敏捷开发与XP实践

    20155231 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器&g ...

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

    教材学习内容总结 SRP高内聚 开发工作原则:对扩充开发,对修改封闭.(对模块的行为可以扩充:模块的源代码不可更改) OO设计 依赖倒置原则:高层模块不依赖于 Linux视频笔记 安装时的说明(非ub ...

  6. [BZOJ4444][SCOI2015]国旗计划-[ST表]

    Description 传送门 Solution 说真的这道题在场上没做出来的我必定是脑子有洞.. 我们用st表记录以某个位置开始,派了1<<j个战士能到达的最远位置. 由于边境线是一圈, ...

  7. 【BZOJ4560】[NOI2016]优秀的拆分

    [BZOJ4560][NOI2016]优秀的拆分 题面 bzoj 洛谷 题解 考虑一个形如\(AABB\)的串是由两个形如\(AA\)的串拼起来的 那么我们设 \(f[i]\):以位置\(i\)为结尾 ...

  8. 15、Java并发编程:Callable、Future和FutureTask

    Java并发编程:Callable.Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一 ...

  9. pyhon3.0 day01 变量、输入、输出、循环

    pyhon3.0 基础01 1 python解释器 Python的解释器很多,但使用最广泛的还是CPython.如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython, ...

  10. PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理

    只要有人用了: select t.* from 表名  t where 字段=xxx  for update 而不是: select t.rowid,t.* from 表名  t where 字段=x ...