EFK教程(4) - ElasticSearch集羣TLS加密通信

EFK教程(4) - ElasticSearch集羣TLS加密通信

基於TLS實現ElasticSearch集羣加密通信html

做者:「發顛的小狼」,歡迎轉載安全


目錄

▪ 用途
▪ ES節點信息
▪ Step1. 關閉服務
▪ Step2. 建立CA證書
▪ Step3. 建立CERT證書
▪ Step4. 建立密鑰庫
▪ Step5. 刪除CA證書
▪ Step6. 修改elasticsearch.yml配置
▪ Step7. 啓動服務
▪ 附. 參考文檔服務器


用途

前情提要:架構

▷ 在第一篇《EFK教程 - 快速入門指南》中,闡述了EFK的安裝部署,其中ElasticSearch的架構爲三節點,即master、ingest、data角色同時部署在三臺服務器上。
▷ 在第二篇《EFK教程 - ElasticSearch高性能高可用架構》中,闡述了EFK的data/ingest/master角色的用途及分別部署三節點,在實現性能最大化的同時保障高可用。
▷ 在第三篇《EFK教程(3) - ElasticSearch冷熱數據分離》中,闡述了ES多實例部署,將不一樣熱度的數據存在不一樣的磁盤上,實現了數據冷熱分離、資源合理分配。elasticsearch

前三篇文章,ES集羣之間數據交互都是明文交互,而在本文中,爲ES集羣建立CA、CERT證書,實現ElasticSearch集羣之間數據經過TLS進行雙向加密交互。ide


ES節點信息

因爲本文是基於上一篇文章《EFK教程(3) - ElasticSearch冷熱數據分離》爲環境進行闡述,所以節點信息和上一篇一致:性能

EFK教程(4) - ElasticSearch集羣TLS加密通信


Step1. 關閉服務

首先,須要中止全部ElasticSearch、kibana、filebeat服務,待證書配置完成後再啓動ui


Step2. 建立CA證書

1️⃣ 找任一一臺ElasticSearch節點服務器操做便可加密

cd /opt/elasticsearch/
# --days: 表示有效期多久
sudo -u elasticsearch ./bin/elasticsearch-certutil ca --days 3660

2️⃣ 務必將生成的CA證書,傳到安全地方永久存儲,由於後期若須要新增ES節點,還會用到該證書3d

EFK教程(4) - ElasticSearch集羣TLS加密通信
EFK教程(4) - ElasticSearch集羣TLS加密通信

3️⃣ 請將elastic-stack-ca.p12證書傳到全部ES實例服務器上


Step3. 建立CERT證書

按上面表格進入相對應的目錄建立CERT證書

# 在ES目錄中創建證書目錄及給予elasticsearch權限
mkdir -p config/certs;chown elasticsearch.elasticsearch config/certs -R

# 每個實例一個證書
# --ca CA證書的文件名,必選參數
# --dns 服務器名,多服務器名用逗號隔開,可選參數
# --ip 服務器IP,多IP用逗號隔開,可選參數
# --out 輸出到哪裏,可選參數
# --days 有效期多久,可選參數
sudo -u elasticsearch ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --ip ${本機IP},127.0.0.1 --out config/certs/cert.p12 --days 3660
# 例如elasticsearch-master-1(192.168.1.31)執行命令:sudo -u elasticsearch ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --ip 192.168.1.31,127.0.0.1 --out config/certs/cert.p12 --days 3660

EFK教程(4) - ElasticSearch集羣TLS加密通信
EFK教程(4) - ElasticSearch集羣TLS加密通信

若是想批量生成CERT證書,請自行查閱附錄連接,不過批量生成有時會碰到生成的證書不可用,所以建議一臺一臺生成


Step4. 建立密鑰庫

按上面表格進入相對應的目錄建立密鑰庫

# 每個實例都要操做
# 建立密鑰庫
sudo -u elasticsearch ./bin/elasticsearch-keystore create
# PKCS#12文件的密碼
sudo -u elasticsearch ./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
# 信任庫的密碼
sudo -u elasticsearch ./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

EFK教程(4) - ElasticSearch集羣TLS加密通信
EFK教程(4) - ElasticSearch集羣TLS加密通信
EFK教程(4) - ElasticSearch集羣TLS加密通信

確認keystore、truststore已錄入至密鑰庫

sudo -u elasticsearch ./bin/elasticsearch-keystore list

EFK教程(4) - ElasticSearch集羣TLS加密通信


Step5. 刪除CA證書

因爲上面建立的elastic-stack-ca.p12含有私鑰,所以爲了安全,建議將該文件刪除(請務必提早備份好,由於後期增長節點還會用到)

按上面表格進入相對應的目錄刪除CA證書

rm -f elastic-stack-ca.p12

Step6. 修改elasticsearch.yml配置

按上面表格對應的實例配置conf目錄下elasticsearch.yml

# 在全部實例上加上如下配置
# 開啓transport.ssl認證
xpack.security.transport.ssl.enabled: true
# xpack認證方式 full爲主機或IP認證及證書認證,certificates爲證書認證,不對主機和IP認證,默認爲full
xpack.security.transport.ssl.verification_mode: full
# xpack包含私鑰和證書的PKCS#12文件的路徑
xpack.security.transport.ssl.keystore.path: certs/cert.p12
# xpack包含要信任的證書的PKCS#12文件的路徑
xpack.security.transport.ssl.truststore.path: certs/cert.p12

Step7. 啓動服務

# 開啓全部ES實例
sudo -u elasticsearch ./bin/elasticsearch

# 開啓filebeat
/opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml -d "publish"

# 開啓kibana
sudo -u kibana /opt/kibana/bin/kibana -c /opt/kibana/config/kibana.yml

附. 參考文檔

https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls.html
https://www.elastic.co/guide/en/elasticsearch/reference/7.3/certutil.html
相關文章
相關標籤/搜索