(轉)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


免責聲明!

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



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