Elasticsearch 如何安全加固
①不对外开放端口、不公网裸奔
操作如下:
默认开启的 9200 端口(ES)、5601 端口(Kibana)、9000 端口(cerebro)、5000 端口(ElasticHQ)等 ELK stack 相关端口不对外公布。
尽量内网环境运行,不公网裸奔。
如果要映射开放端口,要限定好指定 IP 访问,用完后关闭端口映射。
②升级高版本 Elasticsearch,使用 X-pack 基础安全功能
Elasticsearch 7.1&6.8 版本之后,X-pack 基础安全功能免费。
这意味着:
Space、角色、用户基础功能免费,Elasticsearch、Kibana 访问都可以设置上复杂的用户名和密码。
集群之间 TLS 加密通信免费。
互联网访问可以由 HTTP 升级为 HTTPS。
③设置 Nginx 反向代理服务器,并设置 HTTP Basic 认证来实现 Elasticsearch 的登录认证
Elasticsearch 6.8 及 7.1 之前的版本适用。
④Elasticsearch 集群禁用批量删除索引
批量删除操作类似“rm -rf ”删库跑路操作,若 ES 集群没有备份,后果不堪设想。
- 禁用批量删除不止是对外,对内也能起到防护作用。对一些人来说,能够用单个命令来删除所有数据可能会导致可怕的后果。
- 如何避免意外的大量删除?
实践方案 1
你可以在你的 elasticsearch.yml 做如下配置:
action.destructive_requires_name: true
实践方案 2
PUT /_cluster/settings
{
"persistent" : {
"action.destructive_requires_name":true
}
}
验证:
DELETE kibana_*
报错如下,也就是说不能批量删除索引了:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Wildcard expressions or all indices are not allowed"
}
],
"type": "illegal_argument_exception",
"reason": "Wildcard expressions or all indices are not allowed"
},
"status": 400
}
⑤定期做好集群的全量和增量快照
结合:Elasticsearch _snapshot 和 restore API 能很好实现备份和恢复功能。确保数据由于误操作,能第一时间恢复还原数据。
第三方导出工具:elasticdump,esm 等也都可以拿来主义。
⑥Elasticsearch 中保存的数据要做基本的脱敏处理
在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。是数据库安全 技术之一。
数据脱敏方式——通过对敏感信息采用脱敏方式进行匿名化,防止因生产库中的主要数据,明文显示在测试系统中,导致数据泄漏问题。
生活中也不乏数据脱敏的例子,比如:火车票上的身份证、电商收货人电话都会对敏感信息做处理,打上 XXXX。
实际 Elasticsearch 存储层面涉及较少,更多的是:后端做业务脱敏处理,前端脱敏显示。
出处:转载自微信公众号铭毅天下