干货 | Elasticsearch7.X X-Pack基础安全实操详解

一、调查:你的Elasticsearch怎么作的安全防御?
背景:你们知道elasticsearch早期版本安所有分收费(7.1 & 6.8 版本以前),实际中各个公司6.x,5.x,2.x,1.x都有在用,且非少数。
群随机投票结果以下:
干货 | Elasticsearch7.X X-Pack基础安全实操详解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+版本以后,基础级安全永久免费。
基础版本安全功能列表以下:
干货 | Elasticsearch7.X X-Pack基础安全实操详解
四、单节点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 ""
干货 | Elasticsearch7.X X-Pack基础安全实操详解
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会出现用户名和密码的提示窗口。
干货 | Elasticsearch7.X X-Pack基础安全实操详解
五、多节点集群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服务器

相关文章
相关标签/搜索