9号在杭州海外海的阿里云开发者大会上介绍了一下我们在弹性计算云环境中做的安全方面的工作。这里稍微讲一下要点,PPT就不贴了——我写的PPT一般都没什么意义。
在弹性计算云中,传统的网络策略会遇到很多挑战。第一,传统的网络中,用户比较单纯,就是内部业务。而现在信任破裂了,用户与云服务提供者、用户与用户、用户与外部都是互为潜在攻击者——黑暗森林状态。第二,以前攻击者在企业网外部,而现在则可能直接深入企业内部,发起一些以前难以进行的攻击,如ARP欺骗、以太网头部欺骗等等。第三,大二层网络结构,宿主机承担部分交换功能,让ARP欺骗、以太网头部欺骗、DDOS攻击威力变大。第四,并不是所有流量都经过交换机,以前的集中控制失效,让前三点风险更难应付。
我们的梦想是让每一个用户住单间,并且在每个单间加一个锁,防止别人打进来,也防止用户打出去。而现实是弹性计算架构只能提供通铺(宿主机),通铺上住好几个人(VM),他们半夜直接就可以滚床单了。
为了解决这些问题,厂商和业界有许多新的解决方案。思科的方案是私有的VN-TAG以及802.1BR标准。VN-TAG做法是通过VMM或者网卡驱动把所有的包都强制转发到交换机,并在以太网报文中插入一帧代表不同VM,用以寻址。HP的方案是VEPA以及基于VEPA的802.1Qbg,类似思科的强制转发,但是不改动以太网报文结构而是修改生成树协议实现发卡弯。对这两种技术,我的观点是它们只不过是个模拟器,将分布式的云网络模拟层传统网络然后再使用传统控制。
额外的,openflow技术的SDN网络是目前最热门的技术。我个人的看法是,SDN的好处在于物理结构不再重要,管理人员看到的是逻辑结构。相比而言,传统架构已经使用模拟器模拟后的运网络,都是硬铁管,管道如何铺设流量就如何流动,但是SDN用的是软管,可以在流动的时候实时的弯曲管道引导流量的动向。SDN的实现方式有两种,一种是和VN-TAG、VEPA之类的模拟器结合,模拟器把流量引向网络,然后网络交换机支持SDN标准。另一种是在宿主机上纯软件或者基于芯片实现,将SDN做到网络的最尽头——这是我更细化的一种。
目前而言,阿里云还没有使用上面的任何一种技术,SDN还处于研究、评估状态,我们用的是基于VMM的分布式的控制方法。在安全上,将VM按照用户分组,保证每个用户一个单间。每个单间配备固化的默认安全策略,这个策略随着VM的迁移而迁移。固化的策略中,我模拟实现了思科的DAI技术,当时将之扩大。弹性计算控制器记录分配给每个VM的IP地址和MAC地址,在报文发出时检测ARP头部和IP头部,发现伪造即丢弃报文,额外的,我还对以太网承载的上层协议类型做了基于白名单的过滤。其它的镜像基线加固,端口扫描就没什么好说的了,与传统差别不大。
实现了安全的网络基础架构之后,我们还做了业务层的安全。做业务安全的原因很简单,用户有的不懂安全,有的知道安全但是做不到,有的做得好但是不愿意做——毕竟发展业务重要啊。用户不愿意做的事情,那么我们来做。就像打dota,我们安全来辅助他做些买鸡插眼之类的工作,用户是后期,只需要专心farm。
做业务安全,我们的思想是零侵入性,个性化,针对性的安全服务。零侵入性是指尽量不打扰用户,让用户什么都不用做就能享受到安全,比如说每次WEB扫描都要先抓取一次再扫一次,浪费了用户的资源。更甚者,在服务器安装个agent,用户不嫌烦?而个性化、针对性既是用户的需求,也是我们无奈的选择。因为与做自己公司的业务安全不同,弹性计算云的业务具备多样性,统一实施相同的策略必死无疑。举个栗子,每个网站的时间、压力曲线都不同,我们得为不同的网站选择不同的QPS控制,不然空的时候空死忙的时候扫死。我们还得为他们的语言类型选择更针对性的扫描用例,否则花费了时间和资源得到的只是虚无。再举个粒子,在CC攻击防御这里,一般来说都是通过JS客户端跳转抓出攻击者。但是在现在,大批的网站访客都是移动客户端的APP,开启JS跳转必死无疑。另一方面,直接返回XML、JSON的数据接口,直接返回JS跳转也是必死无疑。
为了实现零侵入性,个性化,针对性的思想,我们基于数据挖掘做了很多工作。某一个云计算节点,每天输出1.6T的中间数据做分析,绘制每个VM的应用行为分析,为WEB检测、DDOS防御提供支撑。这些做法,是我们与传统安全公司以及一些比较新但是缺乏大数据处理的安全公司的最大差别。但是我相信,即使他们暂时没有实现这些,也许会在不久的将来实现。那么,我们有没有什么是他们永远做不到的?其实也是有的,一般的云安全服务提供者基于域名解析来引导流量,用户需要去做配置DNS。但是我们的安全和云计算业务是一个有机整体,无缝结合,能够实现无需用户做任何事情的安全防御,在这方面我们会从WAF做起,透明的、选择开通即可立即享用的安全服务。


BTW,这其实也是我最近1年多来的总结——感觉突然写起这个好像兆头不好啊。又及,写了一半出去吃饭,回来之后意兴索然,最后一点没什么兴趣是随手写的。 |