IT圈子里一直以来都有着“删库跑路”的经典段子,广为传颂。老师机会心一笑而很多新手一脸懵逼跃跃欲试,但可能很多人还不知道,这些删库段子早就演变成真实案例,也不是第一次了,希望整个行业大佬们长点心,提高内部数据安全门槛尤为重要,下面小编就给大家讲讲Mongodb删库勒索事件。
一、缘由
前段时间Mongodb数据库遭到恶意删库勒索事件:是因为对外网开放访问然而又没有开启授权机制被删库、远程拖库、勒索。接着又曝出Elasticsearch被勒索事件,缘由一样,Elasticsearch服务泄露在公网上并且Elasticsearch是没有账号安全体系的。联想到前些日子,Redis未授权访问bug,同样是因为Redis没有展现在公网、没有设置授权认证,和而引发的。
小编做为网盾科技专职运维人员,这些漏洞和勒索事件,只要有一件发生就必须引起警觉和漏洞扫描防治措施的启动。
当数据库被入侵,就会把数据删除,哪怕不太重要也会多多少少引起一些问题,让你花更多时间去补回数据。
如果利用Redis未授权访问漏洞,入侵了服务器,那这台服务器就危险了,木马会根据历史操作记录,数据库操作记录,那么各项数据会被窃取,如果长期潜伏,就像一个小偷手上有你家的备用钥匙,来去自如,想想都觉得害怕。
而且有的木马很难完全清掉,你只能重装系统了。
莫非说过:越害怕发生的事情就越会发生。所以不要心存侥幸,安全问题重在预防。
二、解决办法:
对于将后台服务、数据服务的端口展现在公网解决办法如下:
其一,初级阶段开发人员都有一个疑问,我要是把 host 绑到了内网 ip,我在本地开发的时候怎么到访问服务,怎么去测试呢?总不能每次都登录到服务器,使用 curl 来访问吧,那得多麻烦。
直接上答案,推荐力度按次序由小到大:
1)使用 NGINX做反向代理,将一个公网 ip 和端口代理到 es 的服务上,使用完之后就把 NGINX 这个代理关掉。当然,NGINX 本身是支持基础安全账号机制的。
2)在服务器上部署一个 shadowsocks 服务,本地开一个 client 连过去,然后把 es 的访问地址(比如 10.0.0.10:9200)代理到 shadowsocks client开放的 代理上(比如socks5),就可以自由访问了。当然,你可以访问其他所有的内网服务哦。
3)最推荐的方案,选用一台网盾高防服务器,在高防服务器上装一个 openVPN 服务,只要本地开发人员连接 VPN ,内网的服务就可以访问了。并且高防服务器还能帮助网站拒绝服务攻击,定时扫描现有的网络主节点,查找可能存在的安全漏洞的服务器类型,包括WAF防御。这里小编推荐IDC服务商网盾科技就有这样的产品。
其二,有没有啥方法可以防止以后又出现这种傻×行为呢?比如就有一个 es 服务不小心配置成 0.0.0.0 了
有方案,上防火墙,常见的就是 iptables。简单讲,就是对本地开放的 ip 和端口建立白名单,比如常见的 iptables 配置如下,这个配置开放了 80( http 服务 )、443( https 服务)和 22 ( ssh 端口)这三个端口
一些个人经验总结
1)后端服务即那些不对直接和用户交互的服务、数据库服务,一定要添加防火墙规则,合理控制访问权限,避免被攻击利用。
2)前端进程和后端进程一定要分别部署在不同的机器上,避免前端因为漏洞等被侵入,造成后端服务和数据不可用,可以规避风险。
3)对于数据库,最好是定时备份,最坏情况下数据丢失被删除也不怕。
4)对于前端服务,可以限制某个IP的访问频率,避免被人利用攻击。
5)选择一台网盾高防服务器,就可以一劳永逸啦!!