ES未授权使用教程

极客

惊!ES未授权访问漏洞实战手册——我的数据裸奔日记(附自查指南)

哎,兄弟们,我真服了!上周我巡检公司服务器的时候,差点没把咖啡喷在屏幕上——我们生产环境的Elasticsearch集群,居然整整三个月未授权访问,等于把全部用户数据脱光了挂公网上裸奔!今天必须把这段踩坑经历写成血泪教程,各位一定要引以为戒啊!

ES未授权使用教程

啥是ES未授权?我先用大白话解释下

咱就说啊,Elasticsearch(简称ES)这玩意儿吧,就是个超快的搜索引擎,好多公司拿它做日志分析、商品检索,可问题是,很多运维老哥(包括我以前!)装完ES,默认配置里压根没有开启认证功能,就像你家大门装了但没上锁,谁路过都能推门进来翻箱倒柜,你气不气?

我那次的情况更离谱,因为业务着急上线,我直接把network.host设成了0.0.0,心想“反正内网没事”,结果好嘛——公网IP一扫描,直接裸奔!别人只需要在浏览器输入http://你的IP:9200,就能看到一堆索引列表,什么订单数据、用户手机号、付款记录…那叫一个触目惊心啊!

未授权访问能干啥?危害大得我头皮发麻

你千万别觉得“看看数据而已没啥大不了”,我跟你讲,黑客拿到ES未授权权限后,能做的事儿简直令人发指:

  1. 删库跑路:直接执行DELETE /index命令,整个业务索引灰飞烟灭!我有个朋友的公司就这么被删过库,备份都没来得及做,老板当场血压飙升。

  2. 勒索病毒植入:有些黑客会往ES里塞加密货币挖矿脚本,或者直接改你的映射配置,把你的数据加密后要赎金,你说气不气人?

  3. 数据拖库:利用_search接口分页遍历所有文档,分分钟下载你得全部数据,然后拿去卖钱或者搞诈骗,我们那次自查发现,有个未知IP在凌晨三点疯狂拉取数据,幸好发现及时…

  4. 内网跳板:ES服务器一般在高权限网络,黑客可以通过它执行Groovy脚本(老版本漏洞),直接反弹Shell拿到服务器控制权,那才是真的完蛋!

手把手自查你的ES是不是在裸奔

好啦好啦,知道你们听急了,我这就把自查方法贴出来,三步搞定,不花一分钱

第一步:看端口暴露情况
本地命令行执行curl http://your-es-ip:9200,如果返回了一堆JSON数据(里面有cluster_nameversion等信息),恭喜你,没开启认证!如果返回401错误或者需要用户名密码,那暂时安全,哎,我当时看到返回的黄色警告字符,心都凉了半截!

第二步:检查配置
打开ES配置文件elasticsearch.yml,看有没有这几行:

http.cors.enabled: true
http.cors.allow-origin: "*"

要是看到号,这简直是把大门焊开啊!另外重点检查xpack.security.enabled,如果被注释掉或者设为false,那就等着挨打吧…我当时就是没设这玩意儿,后面惨痛教训。

第三步:用工具扫描公网
推荐用fofa或者shodan搜索port:"9200" && country:"CN",看看你的IP有没有暴露在公网,如果搜到了自己家的资产,赶紧处理!我那会儿一搜,好家伙,全公司三个ES节点裸奔了俩,其中一个还是主节点!

紧急修复教程(跟着做准没错)

好了宝贝们,如果你也中招了,别慌!跟着我的操作,半小时内锁上门!

第一步:启用X-Pack安全认证
在ES安装目录下执行:

bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""

然后在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: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

最后重启ES,你会发现控制台直接提示需要密码!放心,这才是正常操作,我之前就是没走这步,悔不当初哇!

第二步:设置防火墙只允许内网访问
用iptables或者安全组策略,只放行内网IP访问9200端口,比如在阿里云安全组里把0.0.0/0改成你的专有网络网段,就稳妥多了。

第三步:改掉默认端口
http.port从9200改成比如9201,虽然不能完全预防扫描,但至少可以躲过一部分傻瓜式攻击,多少算点心理安慰嘛。

第四步:备份!备份!备份!
重要的事情说三遍!赶紧配置ES快照到OSS或者异地存储,以防万一,我上次就差点因为没备份被开除了…太吓人了,现在想想还后怕。

最后的心里话

写这篇文章的时候,我真是边写边冒冷汗,说实话,ES未授权漏洞真的太常见了,很多开发者图方便就忽略了安全配置,结果酿成大祸,哎,希望你们能引以为戒,别像我一样傻乎乎的裸奔三个月还浑然不知!

如果你觉得自己搞不定,或者害怕现在已经被入侵了,真的建议找专业安全团队做一次渗透测试,别舍不得花钱,等数据泄露了,那赔偿金额可够你喝一壶的!

好啦,今天就唠到这儿,我得再去检查一遍其他组件的安全配置了,你们也赶紧自查下吧!有什么问题评论区问我,看到就回复,绝对知无不言!咱们下期见啦~

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]