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
標簽:  elasticsearch
 
 
 
 
 
 
« 上一篇: elasticsearch安裝與使用(4)-- 安裝中文分詞插件elasticsearch 的 jdbc
» 下一篇: ES6 學習筆記 (2)-- Liunx環境安裝Node.js 與 搭建 Node.js 開發環境
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
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM