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

 

一、安装search guard插件必须要安装两部分:

①search-guard-xx

②search-guard-ssl

(XX指的是与elasticsearch引擎对应的版本)

github地址:

https://github.com/floragunncom/search-guard

这里以elasticsearch 2.3.5版本为例

进入到elasticsearch安装目录(如果是用RPM包安装的,默认位置是,也可用命令whereis elasticsearch查看安装位置)

cd /usr/share/elasticsearch

安装方法:

(1)search-guard

elasticsearch版本:elasticsearch 2.x

bin/plugin install -b com.floragunn/search-guard-2/<version>

elasticsearch 2.3.5版本:

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

elasticsearch版本:elasticsearch 5.x

bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:<version>

(2)search-guard-ssl

elasticsearch 2.x

bin/plugin install -b com.floragunn/search-guard-ssl/<version>

elasticsearch 2.3.5版本:

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

elasticsearch 5.x

bin/elasticsearch-plugin install -b com.floragunn:search-guard-ssl:<version>

注意事项:

当es的版本大于2.2时,安装过程中可能会有如下提示:

这个是正常现象,只要看到有以下提示就表示安装成功:

Installed search-guard-ssl into /usr/share/elasticsearch/plugins/search-guard-ssl

Installed search-guard-2 into /usr/share/elasticsearch/plugins/search-guard-2

二、生成证书文件

1.下载search guard 源码工具,里面包含证书生成工具

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

2.切换到search guard ssl 源码目录,进入example-pki-scripts文件夹,里面有3个脚本

cd search-guard-ssl/example-pki-scripts

gen_client_node_cert.sh  创建客户端证书

gen_node_cert.sh           创建节点证书

gen_root_ca.sh               创建根证书

2.进入example-pki-scripts/etc目录,里面是证书生成时的一些配置文件,可根据需要修改相应的信息

root-ca.conf            根证书配置

signing-ca.conf        签名证书配置

其中自定义的信息如下:

0.domainComponent       = "www.test.com”    域名
1.domainComponent = "www.test.com" 域名
organizationName = "Test" 组织名称
organizationalUnitName = "Test Root CA" 组织单位名称
commonName = "Test Root CA" 通用名称
以上信息随便填写,只要保证生成证书时跟证书、签名证书中的信息一致即可

3.生成证书

返回到example-pki-scripts目录下,修改example.sh文件:

修改之后如下:

#!/bin/bash

set -e

./clean.sh

./gen_root_ca.sh 12345678 12345678

./gen_node_cert.sh 0 12345678 12345678&& ./gen_node_cert.sh 1 12345678 12345678 &&  ./gen_node_cert.sh 2 12345678 12345678

./gen_client_node_cert.sh test 12345678 12345678

./gen_client_node_cert.sh test 12345678 12345678

参数说明:

./gen_root_ca.sh 12345678 12345678

第一个参数为CA_PASS,即CA密码(根证书密码)

第二个参数为TS_PASS,即TS密码(truststore,信任证书密码)

./gen_node_cert.sh 0 12345678 12345678

第一个参数为node编号,生成证书后的文件名为node-0*

第二个参数为KS_PASS(keystore文件密码)

第三个参数为CA_PASS

./gen_client_node_cert.sh test 12345678

第一个参数为客户端节点名称,生成证书后的文件名为test*

第二个参数为KS_PASS

第三个参数为CA_PASS

4.运行example.sh文件,会在当前目录下生成各种证书文件:

sh example.sh

三、配置

1.证书上传到elasticsearch

将example-pki-scripts文件夹中的node-0-keystore.jks和truststore.jks复制到elasticsearch的配置目录中(/etc/elasticsearch)

cp node-0-keystore.jks /etc/elasticsearch

cp truststore.jks /etc/elasticsearch 

将example-pki-scripts文件夹中的test-keystore.jks和truststore.jks复制到elasticsearch程序目录下的plugins/search-guard-2/sgconfig下,如果这个节点是主节点,则所有节点的search guard配置都从这个节点中配置,然后分发到其它节点中

cp test-keystore.jks /usr/share/elasticsearch/plugins/search-guard-2/sgconfig/

cp truststore.jks /usr/share/elasticsearch/plugins/search-guard-2/sgconfig/

2.修改elasticsearch配置文件:

vim /etc/elasticsearch/elasticsearch.yml

修改以下配置:

17  cluster.name: test

23  node.name: node-0

54  network.host: 0.0.0.0 

增加以下配置:

# search-guard配置

# 配置ssl

 searchguard.ssl.transport.enabled: true

 searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks

 searchguard.ssl.transport.keystore_password: 12345678

 searchguard.ssl.transport.truststore_filepath: truststore.jks

 searchguard.ssl.transport.truststore_password: 12345678

 searchguard.ssl.transport.enforce_hostname_verification: false

 searchguard.ssl.transport.resolve_hostname: false

# 配置http

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

 searchguard.ssl.http.enabled: false

 searchguard.ssl.http.keystore_filepath: node-0-keystore.jks

 searchguard.ssl.http.keystore_password: 12345678

 searchguard.ssl.http.truststore_filepath: truststore.jks

 searchguard.ssl.http.truststore_password: 12345678

searchguard.allow_all_from_loopback: true # 这里注意,下面的配置一定要和签的客户端证书一致,否则不能插入配置 searchguard.authcz.admin_dn: - CN=test, OU=client, O=client, L=Test, C=DE

注意事项:

配置文件中的所有配置项开头必须要留一个空格符,否则会启动不了elasticsearch,这个是配置文件的格式

3.配置完后重启elasticsearch

systemctl restart elasticsearch

systemctl status elasticsearc

四、将配置写入运行中的elasticsearch

进入到elasticsearch安装目录中

cd /usr/share/elasticsearch/

运行如下命令将配置写入到elasticsearch中:

./plugins/search-guard-2/tools/sgadmin.sh -cn 集群名称 -h hostname -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

hostname:指的是elasticsearch的elasticsearch.yml配置文件中 network.host 设置的值

根据上面的配置,输入的命令如下:

./plugins/search-guard-2/tools/sgadmin.sh -cn test -h 0.0.0.0 -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass 12345678 -nhnv

需要注意:

如果提示没有操作权限,则必须先把hash.sh文件的权限开放
chmod -R 777 plugins/search-guard-2/tools/sgadmin.sh

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

如成功写入配置,则会显示以下信息:

五、search guard 配置文件介绍

search-guard中的用户权限管理

相关配置文件的介绍

searchguard 主要有5个配置文件在plugins/search-guard-2/sgconfig 下:

1、sg_config.yml:主配置文件不需要做改动。

2、sg_internal_users.yml:本地用户文件,定义用户密码以及对应的权限。

3、sg_roles.yml:权限配置文件

4、sg_roles_mapping.yml:定义用户的映射关系

5、sg_action_groups.yml:定义权限

修改内置用户密码,然后再运行一次search guard 配置写入命令。

1.则先用plugins/search-guard-2/tools/hash.sh生成hash字符串,生成密码:

cd /usr/share/elasticsearch/

plugins/search-guard-2/tools/hash.sh -p 123456
如果提示没有操作权限,则必须先把hash.sh文件的权限开放
chmod -R 777 plugins/search-guard-2/tools/hash.sh

获得哈希生成后的密码

2.将字符串复制到sg_internal_users.yml文件的对应用户密码位置,在密码下面记得写入原密码的提示,难保你那天忘记了。

vim plugins/search-guard-2/sgconfig/sg_internal_users.yml

3.添加用户权限

vim /usr/share/elasticsearch/plugins/search-guard-2/sgconfig/sg_roles_mapping.yml

在39行处的sg_all_access添加你新增的用户名,就获得所有权限了

4.重新写入配置

先回到elasticsearch的安装文件夹

cd /usr/share/elasticsearch/
./plugins/search-guard-2/tools/sgadmin.sh -cn test -h 0.0.0.0 -cd plugins/search-guard-2/sgconfig -ks plugins/search-guard-2/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-2/sgconfig/truststore.jks -tspass 12345678 -nhnv

5.测试

curl -XGET "http://shifu:123456@127.0.0.1:9200"

如果密码设置成功则显示

现在每次想访问你网站的9200端口都必须要有搜索认证的保护了。

 
posted @ 2017-02-08 09:25 shifu204 阅读(7208) 评论(2) 编辑 收藏
 
评论列表
 

#1楼 2017-02-13 19:28 lingerchouz 

请问一下,生成证书步骤执行完,没有生成node-0-keystore.jks,显示Illegal option: -ext。 请问是什么原因呢

#2楼 2017-09-29 09:36 xinxinzaibokeyuan 

博主,能加个好友么~探讨下sg...QQ:775878550
 
 

elasticsearch 服务安全配置的更多相关文章

  1. windows安装elasticsearch服务以及elasticsearch5.6.10集群的配置(elasticsearch5.6.10配置跟1.1.1的配置不太相同,有些1.1.1版本下的配置指令在5.6.10中不能使用)

    1.下载elasticsearch5.6.10安装包 下载地址为:  https://artifacts.elastic.co/downloads/elasticsearch/elasticsearc ...

  2. ES2:ElasticSearch 集群配置

    ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.yml,其中,elasticsearch.yml 用来配置Elastic ...

  3. Elasticsearch学习之配置小记

    基于 elasticsearch 1.4.4 版本.安装方式为RPM安装.所有涉及路径需根据实际情况来设置判断. 0x01 内存调整 调整ES内存分配有多种方式,建议调整 /etc/sysconfig ...

  4. elasticsearch 第二篇(配置篇)

    配置 在es启动之前可以通过设置启动命令行启动参数.环境变量.文件等方式优化和配置es进行参数 环境变量 名称 示例 说明 ES_MIN_MEM 256M 用于配置java进程分配的最小内存 ES_M ...

  5. ElasticSearch搜索引擎安装配置拼音插件pinyin

    近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...

  6. 为 rails 本地项目搭建 elasticsearch 服务

    首先安装 elasticsearch 服务 OSX 系统 brew install elasticsearch brew services start elasticsearch 测试服务是否启动浏览 ...

  7. ElasticSearch01--安装ElasticSearch服务(Linux)

    在linux系统上安装ElasticSearch服务 Linux系统要求: 1.centos6或centos7 2.jdk1.8及以上 1. 新建用户 新建一个用户 useradd yuank 修改用 ...

  8. ubantu elasticsearch服务搭建

    1.jdk 1.8以上,elasticsearch是java开发的 [root@VM_58_118_centos sgconfig]# java -version java version " ...

  9. elasticsearch kibana 安装 配置

    二.Elasticsearch  配置信息 2.1  因为 Elasticsearch 可以执行脚本文件,为了安全性,默认不允许通过 root 用户启动服务.我们需要新创建用户名和用户组启动服务 2. ...

随机推荐

  1. eclipse创建activiti6 项目demo

    1 新建maven 项目 2 修改 pom 文件,完整内容如下 <?xml version="1.0" encoding="UTF-8"?> < ...

  2. Eclipse 快速提取一个方法 (重构)

    选择一块代码并将其转换为一个方法.Eclipse 会自动地推知方法参数及返回类型. 我们有的时候方法太大,但是自己复制粘贴重构又比较麻烦 eclispe拥有这个功能 alt+shift+m 也可以右键 ...

  3. 更改MySQL数据库目录位置[zz]

    MYSQL默认的数据文件存储目录为/var/lib/mysql.假如要把目录移到/home/data下需要进行下面几步:1.home目录下建立data目录cd /homemkdir data2.把My ...

  4. ansible 批量推送公钥

    这里我们使用ansible的playbook 的功能来推送秘钥 使用方法参见:http://blog.csdn.net/magedu_linux/article/details/48529645 这里 ...

  5. Win7下使用无线网卡共享上网的4种方式

    我尝试了第一种直接上网了     一.Win7自带无线承载网络功能 1.查看网卡是否支持承载网络功能运行“命令提示符”   输入命令:netsh wlan show drivers图中红框“支持的承载 ...

  6. C++ 风格与技术 FAQ(中文版)

    Bjarne Stroustrup 的 C++ 风格与技术 FAQ(中文版) 原作:Bjarne Stroustrup    翻译:Antigloss 译者的话:尽管我已非常用心,力求完美,但受水平所 ...

  7. c++并行计算库TBB和PPL的基本用法

    并行库充分利用多核的优势,通过并行运算提高程序效率,本文主要介绍c++中两个知名的并行库,一个是intel开发的TBB,一个是微软开发的PPL.本文只介绍其基本的常用用法:并行算法和任务. TBB(I ...

  8. shell(2):传入参数

    $1,$2  分别表示第一个第二个参数 #!bin/sh ref=$1 trans=$2 echo $ref echo $trans

  9. 【硅谷问道】 WWDC 17: 开发者的最初观感

    [硅谷问道] WWDC 17: 开发者的最初观感 前言 每年的 WWDC 都是 iOS 开发者集体高潮的时刻.第一天的 WWDC 带来了全新的 iOS 11.MacOS.tvOS 和 watchOS, ...

  10. slack机器人运维

    这里有一篇文章,够详细了:http://colobu.com/2015/11/04/create-a-slack-bot-with-golang/ 另外:这个py的库,test了一下,挺好使:http ...