一、調查:你的Elasticsearch怎麼作的安全防禦?
背景:你們知道elasticsearch早期版本安所有分收費(7.1 & 6.8 版本以前),實際中各個公司6.x,5.x,2.x,1.x都有在用,且非少數。
羣隨機投票結果以下:html
經過留言發現,你們使用2的比較多,歷史包袱重,真正升級7.X的企業還不太多。
Medcl在《給你 10 個升級到 Elastic Stack 7 的理由!》分享中提到升級到最新版本「更安全」的核心理由。安全
以前文章中也有過探討:你的Elasitcsearch集羣在裸奔嗎?
的確,安全問題已經成爲公司使用Elasticsearch必須考慮的問題之一。
二、說到Elasticsearch安全,你想到的是什麼?
首先想到的是「不安全」、「暴露」、「***」、「泄露」、「隱私」等負面的關鍵詞。
的確,若是9200或者改爲其餘端口的ES暴露在公網,一旦被掃到,集羣及數據會受到災難式影響。
稍微瞭解網絡安全的朋友都知道,經過nmap等掃描工具,能夠很是快速掃描出開放的外網端口。
安全無小事,本文以Elasticsearch7.2+爲示例,串講:
1)啥是X-Pack?基礎免費版本哪些安全功能是免費?哪些收費呢?
2)單節點X-Pack安全如何配置?
3)多節點X-Pack安全如何配置?
很是基礎但很是重要,但願對你有幫助。
三、啥是X-Pack?
X-Pack是Elastic Stack擴展功能,提供安全性,警報,監視,報告,機器學習和許多其餘功能。 ES7.0+以後,默認狀況下,當安裝Elasticsearch時,會安裝X-Pack,無需單獨再安裝。
自6.8以及7.1+版本以後,基礎級安全永久免費。
基礎版本安全功能列表以下:
四、單節點ES X-Pack安全如何配置?
4.1 安全配置
默認狀況下,擁有安全免費許可證時,Elasticsearch安全功能被禁用。 要啓用安全功能,須要設置xpack.security.enabled。
在節點的elasticsearch.yml配置文件中,新增:
1xpack.security.enabled: true
4.2 爲節點間通訊配置傳輸層安全性(TLS / SSL)
使用範圍:配置傳輸層安全性適用於具備多個節點的集羣以及須要外網通訊訪問的單節點ES。
使用環回地址127.0.0.1的單節點ES能夠不用配置。
4.2.1 加密通訊
Elasticsearch節點可能存儲是機密的數據,而無處不在的網絡***對這些數據垂涎欲滴。
網絡***包括對數據的嗅探,對數據的操縱,以及試圖得到對服務器的訪問權限,進而訪問存儲數據的文件。
保護節點的安全有助於下降來自網絡的***的風險。
4.2.2 生成節點證書
一、證書實現加密通訊的原理
TLS須要X.509證書(X.509 證書是一個數字證書,它使用 X.509 公有密鑰基礎設施標準將公有密鑰與證書中包含的身份相關聯。X.509 證書由一家名爲證書頒發機構 (CA) 的可信實體頒發。CA 持有一個或多個名爲 CA 證書的特殊證書,它使用這種證書來頒發 X.509 證書。只有證書頒發機構纔有權訪問 CA 證書)才能對與之通訊的應用程序執行加密和身份驗證。 爲了使節點之間的通訊真正安全,必須對證書進行驗證。
在Elasticsearch集羣中驗證證書真實性的推薦方法是信任簽署證書的證書頒發機構(CA)。
這樣,只須要使用由同一CA簽名的證書,便可自動容許該節點加入集羣。
二、藉助elasticsearch-certutil命令生成證書
1bin/elasticsearch-certutil.bat ca -out config/elastic-certificates.p12 -pass ""
4.2.3 配置加密通訊
啓用安全功能後,必須使用TLS來確保節點之間的通訊已加密。
在elasticsearch.yml中心新增配置以下:
1xpack.security.transport.ssl.enabled: true
2xpack.security.transport.ssl.verification_mode: certificate
3xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
4xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
4.3 設置集羣密碼
藉助:elasticsearch-setup-passwords 設置集羣密碼。
elasticsearch-setup-passwords 支持的參數以下:
1Commands
2--------
3auto - Uses randomly generated passwords
4interactive - Uses passwords entered by a user
5
6Non-option arguments:
7command
8
9Option Description
10------ -----------
11-h, --help show help
12-s, --silent show minimal output
13-v, --verbose show verbose output
核心:
auto - 隨機生成密碼。
interactive - 自定義不一樣用戶的密碼。
注意:必須配置好xpack以後,才能設置密碼。不然會報錯。
在這裏插入圖片描述
自此:單節點安全配置完畢,訪問9200會出現用戶名和密碼的提示窗口。
五、多節點集羣X-Pack安全如何配置?
最簡單的方法,
假定是初始部署集羣階段。
步驟1:清空data文件(緣由:防止衝突,該問題屢次在社區被提問);
步驟2:將配置好的帶證書的文件copy到另外一臺機器;
步驟3:根據集羣配置ip、角色等信息便可。
六、小結
X-Pack安全配置的核心三步驟:
第一:設置:xpack.security.enabled: true。
第二:生成TLS證書。
第三:配置加密通訊。
第四:設置密碼。
這些對於安全來講只是皮毛,更多的角色、權限、Space須要藉助Kibana實現。
你的Elasticsearch安全嗎?歡迎留言交流。
參考:
https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/x509-certs.html
https://www.elastic.co/cn/blog/getting-started-with-elasticsearch-security
https://www.elastic.co/cn/blog/security-for-elasticsearch-is-now-free服務器