博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ElasticSearch使用SearchGuard插件
阅读量:5772 次
发布时间:2019-06-18

本文共 9912 字,大约阅读时间需要 33 分钟。


title: ElasticSearch使用SearchGuard插件 tags:

  • searchguard
  • es
  • elk
  • shield categories: 工作日志 date: 2017-02-25 18:18:55

背景

关于最近一段时间es的勒索新闻给广大开源组件使用者带来一丝不安。

基于这种情况,阿里云强制阿里云用户使用es组件的必须加强安全,否则直接关停服务器 

阿里云提供方案为 shield插件ElasticSearch提供很多的安全插件供用户方便安装使用,在这里推荐1款安全插件:

Shield是Elastic公司为ElasticSearch开发的一个安全插件。在安装此插件后,Shield会拦截所有对ElasticSearch的请求,并加上认证与加密,保障ElasticSearch及相关系统的安全性。

Shield是商业插件,需要ElasticSearch的商业许可。第一次安装许可的时候,会提供30天的免费试用权限。30天后,Shield将会屏蔽clusterhealth, cluster stats, index stats这几个API,其余功能不受影响。
使用Shield可以定义一系列已知的用户,并用其认证用户请求。这些用户存在于抽象的“域”中。一个域可能是下面几种类型:

因此毫不犹豫选择了shield插件,结果一个月后

插件过期了,几经波折找到原因

Kibana requires Elasticsearch health and monitoring permissions to make sure Elasticsearch backend is available. So you’ll need to get a valid license to use Kibana with Shield.

方案

使用searchGuard方案(好吧,又可以省1600 $/year/cluster )

github地址如下

这里使用的是 elasticsearch-2.3.4

安装 ES 插件

bin/plugin install -b com.floragunn/search-guard-ssl/2.3.4.12

bin/plugin install -b com.floragunn/search-guard-2/2.3.4.4

clone ssl project

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

修改脚本vim example.sh

#!/bin/bash    set -e    ./clean.sh    ./gen_root_ca.sh password password    ./gen_node_cert.sh 0 password  password    ./gen_client_node_cert.sh admin password password    cp truststore.jks node-0-keystore.jks /usr/local/elasticsearch-2.3.4/config/    cp truststore.jks admin-keystore.jks /usr/local/elasticsearch-2.3.4/plugins/search-guard-2/sgconfig/复制代码

配置es配置

    # ======================== Elasticsearch Configuration =========================     #     # NOTE: Elasticsearch comes with reasonable defaults for most settings.     #       Before you set out to tweak and tune the configuration, make sure you     #       understand what are you trying to accomplish and the consequences.     #     # The primary way of configuring a node is via this file. This template lists     # the most important settings you may want to configure for a production cluster.     #     # Please see the documentation for further information on configuration options:     # 
    #     # ---------------------------------- Cluster -----------------------------------     #     # Use a descriptive name for your cluster:     #     cluster.name: f6car     #     # ------------------------------------ Node ------------------------------------     #     # Use a descriptive name for the node:     #     # node.name: node-1     #     # Add custom attributes to the node:     #     # node.rack: r1     #     # ----------------------------------- Paths ------------------------------------     #     # Path to directory where to store the data (separate multiple locations by comma):     #     path.data: /data/elastic-data/data     #     # Path to log files:     #     path.logs: /data/elastic-logs     #     # ----------------------------------- Memory -----------------------------------     #     # Lock the memory on startup:     #     # bootstrap.mlockall: true     #     # Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory     # available on the system and that the owner of the process is allowed to use this limit.     #     # Elasticsearch performs poorly when the system is swapping the memory.     #     # ---------------------------------- Network -----------------------------------     #     # Set the bind address to a specific IP (IPv4 or IPv6):     #     #     # Set a custom port for HTTP:     #     # http.port: 9200     #     # For more information, see the documentation at:     # 
    #     # --------------------------------- Discovery ----------------------------------     #     # Pass an initial list of hosts to perform discovery when new node is started:     # The default list of hosts is ["127.0.0.1", "[::1]"]     #     # discovery.zen.ping.unicast.hosts: ["host1", "host2"]     #     # Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):     #     # discovery.zen.minimum_master_nodes: 3     #     # For more information, see the documentation at:     # 
    #     # ---------------------------------- Gateway -----------------------------------     #     # Block initial recovery after a full cluster restart until N nodes are started:     #     # gateway.recover_after_nodes: 3     #     # For more information, see the documentation at:     # 
    #     # ---------------------------------- Various -----------------------------------     #     # Disable starting multiple nodes on a single system:     #     # node.max_local_storage_nodes: 1     #     # Require explicit names when deleting indices:     #     # action.destructive_requires_name: true     network.host: XXX     transport.tcp.port: 9300     transport.tcp.compress: true     http.port: 9200     #############################################################################################     #                                     SEARCH GUARD                                          #     #                                     Configuration                                         #     #############################################################################################     searchguard.enable: true     searchguard.authcz.admin_dn:       - CN=admin, OU=client, O=client, L=Test, C=DE     #############################################################################################     #                                     SEARCH GUARD SSL                                      #     #                                       Configuration                                       #     #############################################################################################           #############################################################################################     # Transport layer SSL                                                                       #     #                                                                                           #     #############################################################################################     # Enable or disable node-to-node ssl encryption (default: true)     searchguard.ssl.transport.enabled: true     # JKS or PKCS12 (default: JKS)     #searchguard.ssl.transport.keystore_type: PKCS12     # Relative path to the keystore file (mandatory, this stores the server certificates), must be placed under the config/ dir     searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks     # Alias name (default: first alias which could be found)     #searchguard.ssl.transport.keystore_alias: my_alias     # Keystore password (default: changeit)     searchguard.ssl.transport.keystore_password: password     # JKS or PKCS12 (default: JKS)     #searchguard.ssl.transport.truststore_type: PKCS12     # Relative path to the truststore file (mandatory, this stores the client/root certificates), must be placed under the config/ dir     searchguard.ssl.transport.truststore_filepath: truststore.jks     # Alias name (default: first alias which could be found)     #searchguard.ssl.transport.truststore_alias: my_alias     # Truststore password (default: changeit)     searchguard.ssl.transport.truststore_password: password     # Enforce hostname verification (default: true)     searchguard.ssl.transport.enforce_hostname_verification: false     # If hostname verification specify if hostname should be resolved (default: true)     searchguard.ssl.transport.resolve_hostname: false     # Use native Open SSL instead of JDK SSL if available (default: true)     searchguard.ssl.transport.enable_openssl_if_available: false 复制代码

运行es后执

./plugins/search-guard-2/tools/sgadmin.sh -cn f6car -h xxx -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/admin-keystore.jks -kspass password -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass password -nhnv复制代码

显示如下

Clustername: f6car   Clusterstate: YELLOW   Number of nodes: 1   Number of data nodes: 1   Index does already exists   Populate config from /usr/local/elasticsearch-2.3.4/plugins/search-guard-2/sgconfig   Will update 'config' with plugins/search-guard-2/sgconfig/sg\_config.yml   SUCC Configuration for 'config' created or updated   Will update 'roles' with plugins/search-guard-2/sgconfig/sg\_roles.yml   SUCC Configuration for 'roles' created or updated   Will update 'rolesmapping' with plugins/search-guard-2/sgconfig/sg\_roles\_mapping.yml   SUCC Configuration for 'rolesmapping' created or updated   Will update 'internalusers' with plugins/search-guard-2/sgconfig/sg\_internal\_users.yml   SUCC Configuration for 'internalusers' created or updated   Will update 'actiongroups' with plugins/search-guard-2/sgconfig/sg\_action\_groups.yml   SUCC Configuration for 'actiongroups' created or updated   Done with success 复制代码

修改logstash配置文件

    output {
        elasticsearch {
            hosts => ["XXXX"]             index => "logstash-sql-{type}-%{+YYYY.MM.dd}"             document_type => "%{type}"             template_overwrite => true             user => "logstash"              password => "password"         }     } 复制代码

修改kibana配置文件

    elasticsearch.requestTimeout: 60000     # Time in milliseconds for Elasticsearch to wait for responses from shards.     # Set to 0 to disable.     # elasticsearch.shardTimeout: 0     # Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying     # elasticsearch.startupTimeout: 5000     # Set the path to where you would like the process id file to be created.     # pid.file: /var/run/kibana.pid     # If you would like to send the log output to a file you can set the path below.     logging.dest: /usr/local/kibana-4.5.3-linux-x64/logs/kibana.log     kibana_elasticsearch_username: f6car     kibana_elasticsearch_password: password 复制代码

如存在既存数据,直接将既存数据文件夹重命名为kibana对应的用户(此处为f6car)

mv elastic f6car

如上,可以完成searchguard与elk的整合

转载地址:http://bhaux.baihongyu.com/

你可能感兴趣的文章
自定义消息弹出框的一个很不错的实例
查看>>
使用Bootstrap的suggest下拉插件
查看>>
java访问权限
查看>>
VBS字符编码的说明
查看>>
c#接口作为参数传递、返回
查看>>
通过分析WP的代码来学习PHP。1
查看>>
docker 6 docker运行的底层原理
查看>>
ARM linux的启动部分源代码简略分析【转】
查看>>
如何在linux系统下配置无线网卡?【转】
查看>>
王可言:「萬物聯網+人聯網+隨時在線」的新時代
查看>>
JAVA编程思想一
查看>>
java四种线程池简介,使用
查看>>
一般处理程序(.ashx)中session的使用方法
查看>>
EasyUI笔记(二)Layout布局
查看>>
ios View之间的切换 屏幕旋转
查看>>
js创建表格时最好要创建tbody元素
查看>>
ASN.1探索 - 3 编码规则与传输语法(1 - BER)(转)
查看>>
BZOJ2208:[JSOI2010]连通数(DFS)
查看>>
第三章:内存分配与回收策略
查看>>
Linux系统的优势
查看>>