elasticsearch 服务安全配置
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端口都必须要有搜索认证的保护了。
elasticsearch 服务安全配置的更多相关文章
- 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 ...
- ES2:ElasticSearch 集群配置
ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.yml,其中,elasticsearch.yml 用来配置Elastic ...
- Elasticsearch学习之配置小记
基于 elasticsearch 1.4.4 版本.安装方式为RPM安装.所有涉及路径需根据实际情况来设置判断. 0x01 内存调整 调整ES内存分配有多种方式,建议调整 /etc/sysconfig ...
- elasticsearch 第二篇(配置篇)
配置 在es启动之前可以通过设置启动命令行启动参数.环境变量.文件等方式优化和配置es进行参数 环境变量 名称 示例 说明 ES_MIN_MEM 256M 用于配置java进程分配的最小内存 ES_M ...
- ElasticSearch搜索引擎安装配置拼音插件pinyin
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- 为 rails 本地项目搭建 elasticsearch 服务
首先安装 elasticsearch 服务 OSX 系统 brew install elasticsearch brew services start elasticsearch 测试服务是否启动浏览 ...
- ElasticSearch01--安装ElasticSearch服务(Linux)
在linux系统上安装ElasticSearch服务 Linux系统要求: 1.centos6或centos7 2.jdk1.8及以上 1. 新建用户 新建一个用户 useradd yuank 修改用 ...
- ubantu elasticsearch服务搭建
1.jdk 1.8以上,elasticsearch是java开发的 [root@VM_58_118_centos sgconfig]# java -version java version " ...
- elasticsearch kibana 安装 配置
二.Elasticsearch 配置信息 2.1 因为 Elasticsearch 可以执行脚本文件,为了安全性,默认不允许通过 root 用户启动服务.我们需要新创建用户名和用户组启动服务 2. ...
随机推荐
- 转 kafka架构简介
kafka架构 转 http://www.cnblogs.com/chushiyaoyue/p/5612298.html 相关文章: https://www.jianshu.com/p/6233d53 ...
- Android开发:SharedPreferences 存储数据、获取数据
Android开发:SharedPreferences 存储数据.获取数据 email:chentravelling@163.com 开发环境:win7 64位,Android Studio. 关于S ...
- 绕过chrome的弹窗拦截机制
在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的.举个例子: var btn = $('#btn'); btn.click(function () { //不会被拦截 ...
- go post 上传文件的例子
go post 上传文件 package main import ( "bytes" "fmt" "io" "mime/multi ...
- 菜鸟学SSH(八)——Hibernate对象的三种状态
前面写了几篇关于SSH的博客,但不是Struts就是Spring,Hibernate还从来没写过呢.说好是SSH的,怎么可以光写那两个,而不写Hibernate呢对吧.今天就先说说Hibernate对 ...
- HR必备基础能力之人性
https://www.jianshu.com/p/bbb858431c81 人力资源管理-从新手到入门(正文) 第一章 必备基础能力 第三节 人性 人力资源管理者(HR)日常工作中面对的主要对象是人 ...
- HTML中Zen Coding
嵌套运算符 嵌套运算符用于以缩写的方式安排元素在生成文档树中的位置:将其放在内部或成为相邻的元素. 子: > 可以使用 > 运算符指定嵌套元素在另一个元素内部: div>ul> ...
- windows 定时任务:schtasks,定时关闭网易云音乐
大部分属于转载和粘贴. 使用命令:schtasks windows 定时任务 使用样例: 每天定时关闭网易云音乐: 每天22:20关闭网易云音乐: schtasks /create /tn &qu ...
- Kafka 协议实现中的内存优化【转】
Kafka 协议实现中的内存优化 Jusfr 原创,转载请注明来自博客园 Request 与 Response 的响应格式 Request 与 Response 都是以 长度+内容 形式描述, 见 ...
- CentOS 7修改管理员密码
之前安装CentOS 7的时候随便输入了一个密码,现在使用需要root权限,只能重置密码了.下面是处理方法:(进入单用户模式修改root密码为例) 在启动菜单中,按e编辑所选启动项 一页内容,感觉挺陌 ...