弹性计算云安全 魏兴国(云舒) 2012年9月
Who am I 2002 幻影安全(ph4nt0m ) 2005 绿盟(nsfocus) 2006 雅虎(Yahoo!) 2008 阿里巴巴集团 网络安全 云计算安全
基础架构安全 业务安全
庞杂的安全域 如此之多区域,谁人 可信? 传统的网络,结构比较单纯,只需要关注外部对内部的攻击即可,弹性计算业务则复杂得多。首先面对的是和传统网络一样的问题,外部攻击者对云中用户的攻击。但是在内部,用户也未必都是老实的,还有的是攻击者特意购买VM来做攻击。他们会对弹性计算服务的提供者进行攻击,他们之间互相攻击,还有的攻击外部其它网络。有点像东汉末年时候的感觉,没有一个区域是可信的。所以说做云计算安全是很痛苦的一件事情,吞下一堆箭到肚子里面,不能伤着自己的肚子,也不能让这些箭飞出去伤着别人,还不能让这些箭互相伤害。 这么庞杂的安全区域,第一反应就是要加强ACL、加强访问控制策略,只有做好访问控制才能保证用户的安全。
无力的访问控制 ACL? 新时代马其诺防线! 但是我要说的第二点就是ACL失效了,这就是悲剧啊,最需要的东西,居然失效了。为什么在云计算时代,准确的说弹性计算里面ACL会失效?其实很简单,虚拟化。传统的ACL都是部署在交换机上,因为这里是核心节点,所有的网络流量都从这儿过。但是现在虚拟化之后,流量并不全部都走交换机了,它们有一部分直接在宿主机内部就完成了,这部分流量交换机连看都看不到,更不用说做控制了。而且是看不到的这部分流量,它并不是同一个用户的,可能是5个、10个甚至更多用户的业务跑在一个宿主机上面,攻击者不仅可以渗透同一个用户,还可以在不同的用户之间蔓延,安全部门已经失去了对不同用户之间互访的控制权了。 所以我说传统ACL是新时代的马其诺防线,攻击不用攻破他,而是绕过。
攻击放大 攻击类型增多 覆盖范围更广 危害变大 攻击放大,有三种意思。类型增多很好理解,传统的IDC,我们不用担心一些非常底层的攻击,比如说以太网头部的MAC地址全部是伪造的,并且填充错误的上层协议号之类,这些攻击只能从以太网内部发起,而攻击者在我们的防线之外,一般来说只能进行IP层以及以上的攻击。但是现在不同了,弹性计算用户已经深入我们的腹地,可以做任何层面的攻击,以太网头部、ARP头部等非常底层的伪造都可以做了。 其次是覆盖范围更广。为了VM迁移,弹性计算一般要使用大二层网络。这样就导致广播域非常的大,能够引起更大范围的广播风暴。而且ARP欺骗攻击,也可以覆盖更大的范围,不像以前一个VLAN就百来台服务器。最后是危害变大,就拿DDOS来说,是接入层交换机容易宕机还是服务器容易宕机?显然是服务器,但是现在宿主机以服务器的身子要承担一部分接入层交换机的工作,不像以前一人吃饱全家不饿,现在宿主机自己挂了就要挂一片。
厂商的方案 802.1BR、VN-TAG 802.1Qbg、VEPA 前面说的那些问题、挑战,很大一部分原因是因为流量不从交换机流过导致网络失去控制引起的。很多厂商就这个问题提出了自己的解决方案。网络大佬思科肯定是最积极的,在云计算时代网络他想继续掌控网络话语权,最初提出的方案叫VN-TAG、后来发展成802.QBH标准然后又被废除,提出802.1BR,主要是通过修改以太网报文的结构,插入标志位标记VM,同时修改宿主机的网卡驱动或者虚拟机程序把所有的流量都从宿主机上发出来到交换机,即使流量的源和目的在同一个宿主机上也扔出来,交换机基于插入的标志位寻址再发出去。HP也提出了类似的方案,叫做VEPA,昵称发卡弯,主要也是修改网卡驱动或者虚拟机程序把流量扔出来,但是他们不变动以太网包结构而是修改交换机生成树协议,让数据包的目的和源可以是同一个接口,后来形成802.1Qbg标准以及更复杂的多通道技术。这两个思路都不错,但是本质上,说穿了就是一个模拟器。在虚拟化时代模拟传统的网络结构,将网络和系统分开,各归各的。 这几年很火的另外一个技术叫SDN,软件定义网络,是由斯坦福大学的一个项目发起的。主要的特点是网络设备将转发和控制分离,提供开放的控制接口让网络成为一种可以在程序中使用的资源。在虚拟化时代,DSN可以和思科或者惠普的方案结合起来使用,也可以直接在VMM上面实现SDN支持。
阿里云的方案 分布式控制 动态检测 VM默认基于用户分组 策略自动迁移 VM信息(IP、MAC等)动态绑定 发送端过滤(以太网层、ARP层、IP层) 目前阿里并没有使用厂商的方案,也没有使用SDN,而是走了自己的路。我认为通过模拟的方式将虚拟化网络模拟成传统网络,不是一个很好的解决方案,而且思科这种私有方案,上了船就很难下来了。SDN目前还接近试验性质的。阿里采用的是分布式的模式来解决网络基础架构的问题,灵活,强大,可控。 以后的发展方向应该是两条路,一是将纯软件化的分布式架构变成软件和定制化网卡芯片相结合,提供性能,二是引入SDN。
基础架构安全 业务安全 基础架构安全,除了上面这些还有很多其它的工作,如镜像加固,漏洞扫描,入侵检测,软件版本管理等等,但是和传统的差别不大,就不说了,这里只说新的、好玩的东西。
为什么要做业务安全 通过前面的基础架构安全方案,我们已经提供了一个安全的网络环境。但是除此之外,我们还在业务安全层面做了很多工作。按说这个由用户控制就行了,我们为什么要做?简单地说,用户需要! 云平台上的用户可以分为这么几种, 不懂安全风险无知无畏型 知道安全风险但是不会做型 会做一点但是做不好型 做得好但是业务紧迫没资源型 我就是懒得做型。 懂安全,愿意自己做安全,并且能做好的用户很少很少,基本上没有。而且用户是不会跟你讲道理的,网站被攻击了怎么办?那就是你的云计算不安全。既然如此,我们为什么不把业务安全做起来,给用户提供一个全方位的整体的云计算服务?
零侵入性,为用户提供个性化的安全保障,对每个业务进行精准化的防护。 不能对用户的业务造成影响,不对用户造成干扰,尽量不让用户做任何操作。这就是零侵入,人都是懒的,不动就能搞定事情,那多好啊。 再看个性化、精准化,网络中部署的业务是千奇百怪的,基本上没有普适的方案可用。另一方面,个性化不能为个性而个性,要精准的个性。 举个简单的例子,每个网站的负载情况都不同,忙的时候可能20个QPS就扫挂了,但是闲得时候50个QPS都没事。不同的网站QPS应该控制在多少,在什么时段扫对用户的影响最小,不同的用户应该有不同的方式。还有更严重的,比如说DDOS防御。CC攻击很多设备都是通过返回JS代码来检验客户端真伪,要是用用户跑着移动APP的服务端,这种防御方案还能用么?还有些返回json、xml的WEB API,这种方案能用么?只要开启JS跳转,业务必死无疑。拿漏洞扫描来说,一个PW论坛,去测试各种ASP漏洞,这个也只是一个笑话。 怎么解决这么些问题?个性化,精准化,不同的病人吃不同的药,有不同的治疗方案。
NO !!! 传统业务安全模式 各种IDS基于通用的规则 WEB漏洞扫描、挂马检测依赖爬虫 WEB Shell检测需要安装Agent 这些符合我们的思想吗? NO !!! 我们回过头来看看传统的安全模式。显然,是不适应云计算时代的,搞个WEB扫描爬虫爬一次,规则再虑一次,对用户造成2次访问。还有agent之类的,用户不喜欢不说,由于客户端复杂,还容易造成其它问题。IDS的规则,放之四海而皆准,也相当于放在哪里都不太准。所以一些老牌的安全公司,思路还没转变过来,他们出售硬件盒子,或者依赖硬件盒子做安全服务,不靠谱,他们只能一直针对比他们更传统的行业。
我们需要新的模式,新的思路 基于流量分析、数据挖掘的安全 在云时代,安全不能依靠厂商,我们必须自己做,我们需要新的思路。
阿里集团流量分析系统Beaver 某云计算节点3台服务器,每秒分析20Gbit流量。每天产生1.6T中间数据, 其中10亿+ URL信息
Beaver的架构 Analyzer Cluster UDP Server Cluster Hadoop 离线计算 Redis Cache WEB扫描 挂马检测 WEB Shell侦测 WEB攻击分析 等等…… Hadoop 离线计算 HTTP INFO Analyzer Cluster DDOS规则 Traffic INFO Redis Cache Reporter 实时计算 DDOS防 御系统 Aliyun RDS
One more thing……
Alibaba FireWall 无需用户做任何事情的WEB防火墙 我们正在努力中……
http://t.qq.com/yunshu http://www.weibo.com/pstyunshu