Elasticsearch7.10 開發中配置偽集群的TLS和身份驗證(基礎)


二、開發中配置偽集群的TLS和身份驗證(基礎)

參看資料:
基礎
擴展
視頻
Document

很詳細的配置,支持博客主【https://knner.wang/】鏈接

我這里用到的是基礎板(免費的),自動申請Basic License,X-pack 的免費Auth和Node間的SSL。

1.創建三個Elasticsearch7.10的節點

在一個服務器上,創建三個節點。解壓文件,復制一個es-slave01和es-slave02,其中一個命名為master節點,好區分。

2.配置TLS和身份驗證文件

在安全的集群中,Elastic節點在與其他節點通信時使用證書來標識自己。這個集群必須驗證這些證書的真實性。推薦的方法
是信任指定的CA身份認證文件,因此,當節點加入到集群中時,它只需都擁有相同的CA簽署的證書,

這里第一步是生成證書,然后把證書分發到子節點(好區分),其中一個命名為master節點。

在這個過程中,我們需要證書讓節點安全的通信,會用到elasticsearch-certutil 的命令,此命令可以很快的生成證書。

流程:

ca證書--》根據ca證書,生成node證書--》復制node證書到其他節點--》生成用戶密碼

1.master主節點生成node證書

官網配置Node節點認證

  1. 在config目錄下
[~choleen config]mkdir certs
  1. 在linux系統中,cd 進入elastic的bin目錄下,這個可以不啟動執行,運行此命令
[~choleen bin]./elasticsearch-certutil cert -out elastic-certificates.p12 -pass ""

對於這個命令elasticsearch-certutil ,可以輸入--help來查看幫助,我們來看它給解釋:

命令 含義
elasticsearch-certutil --help
cert 生成X.509的證書和密碼
ca 生成一個新本地認證文件,里面包含了證書和密鑰
csr 生成證書簽名
http 對於這個Elastcsearch的http接口生成一個新的認證
cert --help
ca 指向已經生成的ca密鑰文件
ca-cert 指向存在的ca認證文件(節點之間認證)
dns 指定DNS域名
ip 指定ip
pass 生成的私鑰密碼
out 指定生成文件路徑
name 證書名字

執行之后,在根目錄生成了elastic-certificates.p12 文件。

$ cd config
$ mkdir certs
$ mv ../elastic-certificates.p12 certs/
  1. 配置elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

這里的verification_mode配置方式:

  • full,認證證書是否通過信任的CA證書簽發,同時認證server的hostname 或者 IP 地址是否匹配證書中配置的
  • cretificate,只認證證書是否通過信任的CA證書簽發的
  • none,什么也不認證,相當於關閉了SSL/TLS認證,僅用於你非常相信的安全的環境
  1. 啟動master節點,生成集群密碼
$ bin/ elasticsearch-setup-passwords interactive

手動設置密碼,elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user,都有這些用戶。

登錄時會用到。

  1. Elastic節點配置TLS
    由於不是后台運行,打開一個新的終端,拷貝node證書(cert文件)到字節的的config/certs目錄下。

    節點中node.master: false,不能為true。

    在其他節點中增加,就是xpck.security.*鍵設置為master一樣。
$ echo "xpack.security.enabled: true" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.enabled: true" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.verification_mode: certificate" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12" >> elasticsearch.yml
$ echo ''xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12" >> elasticsearch.yml
  1. 運行其他兩個節點,
$ bin/elasticsearch

最后看其他兩個節點加入進去沒有。

  1. Kibana中設置安全
elasticsearch.username: "kibana"
elasticsearch.password: "admin123"

運行命令 bin/kibana --allow-root

打開瀏覽器,輸入 http://localhost:5601

這里的密碼,我們可以使用elastic超級用戶進行登錄,就是來自setup-password 命令。

  1. Kibana中可以設置Role和User
  • role

  • user

先生成證書

  1. 執行命令 $ bin/elasticsearch-certutil ca -v
    • 其中
Please enter the desired output file [elastic-stack-ca.p12]:  # 輸入保存的ca文件名稱
Enter password for elastic-stack-ca.p12 : # 輸入證書密碼,我們這里留空
  1. 在生成node證書時,使用$ bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
    • 其中
Enter password for CA (elastic-stack-ca.p12) :  # 輸入CA證書的密碼,我們這里沒有設置,直接回車
Please enter the desired output file [elastic-certificates.p12]:  # 輸入證書保存名稱,保值默認直接回車
Enter password for elastic-certificates.p12 :  # 輸入證書的密碼,留空,直接回車

這種根據CA證書簽署生成的node證書elastic-certificates.p12,包含有node證書、CA證書、私鑰

3. 查看節點命令

  1. 查看節點信息
$ curl localhost:9200/_cat/nodes?v
  1. 查看節點狀態
$ curl localhost:9200/_cat/health
  1. 查看每台機器的屬性
$ curl localhost:9200/_cat/nodeattrs


免責聲明!

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



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