zoukankan      html  css  js  c++  java
  • (转)Elasticsearch search-guard 插件部署

    我之前写了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

  • 相关阅读:
    C/C++ 知识点---存储区
    Objective-C中的@property和@synthesize用法
    C/C++ 知识点---数组与指针
    C/C++ 知识点---C语言关键字(32个)
    js里json和eval()
    js--冒泡排序
    js数学公式-曲线运动
    事件绑定兼容(事件流的机制;事件委托
    2 获取元素在页面中的位置
    Dom关于位置和尺寸的api
  • 原文地址:https://www.cnblogs.com/ywcz060/p/6999729.html
Copyright © 2011-2022 走看看