一行脚本,几TB的数据没有了......
The following article is from 铭毅天下 Author 铭毅天下
前几天看到《成人网站泄露 108 亿数据,内含 50 万中国用户 》的文章,因为数据是基于 Elasticsearch 存储的,出于好奇,查了一些国外的报道,才有了这篇文章的思考。
图片来自 Pexels
信息滞后及一手资料的重要性
第一手资料的重要性不言而喻:
号称比特币首富的李笑来在一次收费语音课程中提到:他最早关注比特币就是通过刷 Twiiter 刷出来的,讨论的人多+新事物两个属性激发了他的兴趣。
古典老师在《跃迁——成为高手的技术》中强调:“在我看来,现在我们获取的知识绝大多数都是二三四手信息,因为很多人已经失去鉴别一手信息的能力。这也是我们认知效率低下的原因”。
扩展思考:
对于一些新技术优先关注英文材料可能比国内的论坛、博客等能提前很多掌握新知。
Elasticsearch的学习也是推荐优先关注官方英文文档,优先使用 Google,discuss.elastic.co, stackoverflow,而不是某度。
108 亿数据怎么泄露的?
通稿里面的写法是“因 Elasticsearch 集群错误配置,成人视频网站 CAM4 发生重大数据泄露事件”。
真实原因是什么呢?我查证了国外的其他报道,汇集如下(为了保证一手资料的重要性,这里保留了英文)。
“Leaving their production server publicly exposed without any password,” says Safety Detectives researcher Anurag Sen, whose team discovered the leak, “it’s really dangerous to the users and to the company.”
The mistake CAM4 made is also not unique. ElasticSearch server goofs have been the cause of countless high-profile data leaks. What typically happens: They’re intended for internal use only, but someone makes a configuration error that leaves it online with no password protection.
通常会发生的情况:它们仅供内部使用,但是有人犯了配置错误,使它联机时没有密码保护。
The server in question was a log aggregation server from a bunch of different sources, but server was considered non-confidential。
https://www.wired.com/story/cam4-adult-cam-data-leak-7tb/
一句话概括可能的泄露原因:在公网上公开了 Elasticsearch 的端口,没有加任何安全防护措施。
一行脚本,上 TB 数据没有了
无独有偶,近期 QQ 群里有球友提供信息说,Elasticsearch 5.1.1 公开暴露到互联网被矿机脚本注入,TB 级数据丢失。
经交流得知,也是关闭防火墙+公网暴露端口惹的祸!
公网开放端口,别人是怎么知道的?
关闭防火墙+公网开放端口,就相当于你把藏满钱的保险柜放到了家里,但是保险柜没有上锁,且你家里大门也是打开的。
理论上,你不说没人会知道。但是,如果“小偷”挨家挨户翻,你的保险柜中钱丢失的概率极大。黑客或者安全爱好者常用的“伎俩”就是端口扫描。
第一步:穷举公网 IP 地址
理论上 IPV4 的所有公网 IP 是可以穷举的,具备大学基础网络知识就能搞定。
举例如下:
A 类地址范围:1.0.0.0—126.0.0.0
B 类地址范围:128.0.0.0—191.255.0.0
C 类地址范围:192.0.0.0—223.255.255.0
D 类地址范围:224.0.0.0—239.255.255.255
E 类地址范围:240.0.0.0—255.255.255.254
10.0.0.0—10.255.255.255
172.16.0.0—172.31.255.255
192.168.0.0—192.168.255.255
第二步:扫描常用端口
穷举方式是很笨,但几乎没有漏网之鱼!在线的端口扫描工具也有很多,如下:
Elasticsearch 如何安全加固?
①不对外开放端口、不公网裸奔
默认开启的 9200 端口(ES)、5601 端口(Kibana)、9000 端口(cerebro)、5000 端口(ElasticHQ)等 ELK stack 相关端口不对外公布。
尽量内网环境运行,不公网裸奔。
如果要映射开放端口,要限定好指定 IP 访问,用完后关闭端口映射。
②升级高版本 Elasticsearch,使用 X-pack 基础安全功能
Space、角色、用户基础功能免费,Elasticsearch、Kibana 访问都可以设置上复杂的用户名和密码。
集群之间 TLS 加密通信免费。
互联网访问可以由 HTTP 升级为 HTTPS。
③设置 Nginx 反向代理服务器,并设置 HTTP Basic 认证来实现 Elasticsearch 的登录认证
④Elasticsearch 集群禁用批量删除索引
你可以在你的 elasticsearch.yml 做如下配置:
action.destructive_requires_name: true
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 中保存的数据要做基本的脱敏处理
思考
但是,反思一下:“快了就是慢了”!没有了安全,所有的业务也无从谈起,一旦出现安全分享,可能会造成灾难级的后果!以下的温馨提示,和大家共勉!
作者:铭毅天下
编辑:陶家龙
出处:转载自微信公众号铭毅天下
精彩文章推荐: