这两天阿里云经典网络安全性的讨论得到了IT圈广泛关注,对此事还未或略有耳闻的吃瓜群众,不妨随扒爷一起全程围观一下吧。
阿里云不同租户不隔离?
2月24日,微博@一乐在微博中提到了阿里云的安全隐患:
Cloudflare搞了个大事,这里顺便也提醒大家。千万不要单独评估一个安全漏洞的危害,只要它能干不应该干的事情,就要警惕。
我们前几天也上了一课,一个比特币挖矿程序利用Redis本地提权的漏洞,把我们一个小集群的缓存机器都搞掉了。虽然漏洞刚出的时候,大家还都在说跟自己没关系,我们的Redis都限制内网访问,但是架不住安全组设置错误,这些机器暴露给了其他阿里云用户,也就是说主要某个阿里云邻居用户被黑,他都可以通过扫描进入我们的系统。
问题发现的也很奇葩,这个病毒程序太霸道,它会直接把受影响的Redis权限改掉,导致前端无法访问,这触发了我们的主从自动切换,然后被管理员发现了。他要是偷偷运行,估计还可以潜伏好久(我可不是给他出主意[二哈])
大家要是感兴趣,这里有个人写过一个类似遭遇
知名技术博主@左耳朵耗子在其微博下进行了简单的回复,不晓引发了热议。
直到2月26日,@左耳朵耗子 又针对这个话题发表文章《科普一下公有云的网络》质疑阿里云的安全策略。
文中称,阿里云的内网使用的是经典网络,在这种环境下,不同的租户是可以互通的,这会带来严重的安全隐患。为了应对这一问题,阿里云采用了安全组。安全组是AWS的Security Group概念,通过制定规则来达到类似防火墙的效果。但安全组存在诸多问题,这些问题让设置变得异常困难和繁琐:
1. 新主机加入或变更后需要频繁更改设置(如IP地址)
2. 如果将安全组配置到网段上,则会涉及IP地址段的分配管理
3. 在公有云上不可能分配专用IP
因此,左耳朵耗子提出,应该使用VPC进行管理。VPC是一种解决内网多租户互相隔离的方案,全称叫VirtualPrivate Cloud。
“一般来说,VPC是通过hack底层的虚拟化系统完成的,也就是说,在Hypervisor层虚拟交换机中实现了一个类似路由器的东西——通过一个用户自定义的虚拟IP和实际IP的关系做packetforwarding或是overlay的机制等。Anyway,实现细节不重要。”
左耳朵耗子希望阿里云能够默认部署VPC:VPC这个事应该是默认为用户开启的,是在VPC上配置安全组,而不是提供VPC和安全组两套可以相互独立网络方案。
安全组究竟安不安全?
处于风暴中心的阿里云自然不能置身事外,阿里云官方发表了一篇有关“安全组功能”的技术博客,并援引2月20日发布的一篇文章,引众多IT圈微博转载。
2月27日,@左耳朵耗子发表文章《关于阿里云经典网络的问题》表示收到了阿里云官方的回复,点燃了新一波热议。
作为曾在阿里巴巴任职的技术专家,左耳朵耗子称,他2013年在阿里商家业务部做聚石塔期间发现阿里云的内网多个租户居然是通的。最后的方案是给聚石塔的租户设置安全组。由于设置的很死,但用户又需要在自己的集群中相互通信,所以,当时的解决方案是,需要用户申请,才开3000-3100的端口范围。
注:当时的阿里云是不让用户编辑安全组的,内网是全互通的。如果我没有记错,到了我快要离开阿里的时候(2015年)才让用户可以编辑安全组的。
也就是说,按左耳朵耗子的说法,在早期阶段阿里云的内网是存在一段时间能够互通的。
另外,经典网络本身存在安全问题:
1)这种网络结构从设计上不可避免的把多个租户放在同一个内网网段!所以,物理层面上来说就是通的!
2)动用安全组来隔离用户是一种相当复杂的事,复杂的东西就容易出错!因为,网络隔离的手段只有配置安全组。所谓安全组就是iptables的配置!而且是在每台宿组机上配置,大家可以想一下,一台机器可以配置多少这样的规则?这是有限制的!而且是在管理上的很复杂的,不但对用户来说很复杂,我相信对阿里云的开发和运维来说也非常复杂!
因此,即便使用了安全组,也无法避免地存在问题。
左耳朵耗子称,使用nmap就能在内网扫到大量主机,可以 ping 通,可以telnet,甚至可以登录,这为黑客留下非常方便的入口:
1) 我本来在公网上扫端口,我分不清哪些IP地址是服务器的,现在好了,上阿里云内网里扫一下,100%都是服务器,效率提高很多啊。
2)另外,经典网络的IP还都是连续的,这太TMD的爽了!
3)我再打个 route 命令看一下路由表,原来还有好多别的内网网段哦。
4)最爽的是,在内网发起攻击,带宽好快啊,而且可能还没安全监控哦……
5)要是运气好,说不定我还能搞定阿里云的控制系统……
我是说,在座的各位……
昨日,前阿里云高级安全专家、知名云安全研究者 @安全_云舒愤然表示——你们都错了!《租户隔离科普文,阿里云经典网络问题续》:
先说结论:从2009年至今,阿里云不同租户一直默认是隔离的。
我的安全哲学是在安全这个专业领域用户是sb(这里的sb用户也包括资深的开发人员在内,区别在于小白知道自己不懂,资深的开发人员则以为自己懂),安全得由我这种专业人士保护。所以可以看见,我设置的策略是不人性化的,是死规矩是一刀切。在安全领域,用户的资产也得由我说了算。
文中提及为了用户的方便,原本相互隔离的租户在2015年之后允许用户设置允许一切IP访问自己的安全组,现在的策略是合适的,但却不能保证绝对的安全。这也就是为什么有些网友觉得自己找到了漏洞所在。
接下来云舒对耗子的第一篇文章表达了强烈的不满,他认为耗子作为一个知名技术博主,说出“anyway实现细节不重要”这样的话是有失水准的。就算不提细节,耗子“VPC是通过hack底层的虚拟化系统完成的”的说法也欠考虑的,明显耗子在这场辩论中已完全落败。
而关于VPC,云舒给出了自己的理解。
首先云计算VM是讲究漂移的,有因为故障发生的漂移,也有因为用户主动发起的跨区域的漂移。漂移过程中要求保证业务尽量不中断,则需要保证vm的ip地址、mac地址不变,这就意味着需要一个巨大的二层网络,甚至是跨区域的。而二层网络越大,交换设备的cam表压力也越大,甚至爆掉,arp之类的广播风暴也越严重,所以要把vm层面的一些东西对物理交换机屏蔽掉,分层处理。
其次,VPC给用户一种很好的体验,延续传统网络时代自己组网自己规划的那种感觉,当然也可以更灵活的设计自己想要的东西,甚至形成service chain。
随后云舒对于耗子的第二篇文章中的论点进行了“解答”和“挑战”。
“当时有一个很大的安全问题是——阿里云的内网多个租户居然是通的。”
不知道耗子知道不知道,因为一些我不方便说的原因,聚石塔是由淘宝维护负责的电商云,其实是属于同一个租户的!同一个租户,当然是互通的啊。我不知道耗子是知道那个原因不说,因为知道我不可能说,还是真不知道——按说你当时也P9,应该知道吧。不说这个,但是至少,聚石塔所有的vm是属于同一个租户的,你也不知道么?那你负责聚石塔是怎么负责的?也是“anyway,细节不重要”?
也许事情到这里也差不多告一段落了,耗子昨日下午在微博也做出了言和回应——初衷也是好的,只是没有深入研究,还不小心踢到了钢板……
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/55163.html