云计算涉及的服务繁多,弹性计算服务、文件存储服务、关系数据库服务、Key/Value数据库服务等不胜枚举。本文将简要阐述弹性计算服务的安全问题,因为弹性计算是应用最为普遍的云服务,也是安全风险最高的云服务。
云计算带来的新风险
在云计算之前的时代,传统IDC机房就面临着许多安全风险。这些问题毫无遗漏地传递到了云计算时代,不仅如此,云计算独有的运作模式还带来了更多新的问题。
云内部的攻击
安全域被打破。在对外提供云计算业务之前,互联网公司使用独立的IDC机房,由边界防火墙隔离成内外两块。防火墙内部属于可信区域,自己独占,外部属于不可信区域,所有的攻击者都在这里。安全人员只需要对这一道隔离墙加高、加厚即可保障安全,也可以在这道墙后面建立更多的墙形成纵深防御。
但在开始提供云计算业务之后,这种简洁的内外隔离安全方案已行不通了。通过购买云服务器,攻击者已深入网络提供商的腹地,穿越了边界防火墙。另一方面,云计算内部的资源不再是由某一家企业独享,而是几万、几十万甚至更多互相不认识的企业所共有,当然也包含一些怀有恶意的用户。显然按照传统的方式划分安全域做隔离已行不通了,安全域被打破。
新的攻击方式。传统IDC时代,攻击者处于边界防火墙外部,与企业服务器、路由器之间只有IP协议可达,也就是说攻击者所能发起的攻击只能位于三层之上。但对于云计算来说,情况发生了变化。在一个大二层网络里面,攻击者所控制的云服务器与云服务提供商的路由器二层相连,攻击者可以在更低的层面对这些设备发动攻击,如基于ARP协议的攻击,常见的ARP欺骗攻击,甚至更底层的以太网头部的伪造攻击。
关于以太网头部的伪造攻击,我曾遇到一次。攻击者发送的数据包非常小,只包含以太网头部共14个字节,源和目的物理地址都是伪造的,上层协议类型为2个字节的随机数据,并基于常见的IP协议或者ARP协议,对交换机造成一些不良影响。
虚拟层穿透。云计算时代,一台宿主机上可能运行着10台虚拟机,这些虚拟机可能属于10个不同的用户。从某种意义上说,这台物理机的功能与传统IDC时代的交换机相当,它就是一台交换机,承担着这10台虚拟机的所有流量交换。入侵了一台宿主机,其危害性与入侵了传统时代的一台交换机相当。但与交换机相比,是这台宿主机更容易被入侵还是交换机更容易被入侵呢?显然是宿主机更容易入侵。
首先,攻击者的VM直接运行在这台宿主机的内存里,只使用一个虚拟层隔离。一旦攻击者掌握了可以穿透虚拟层的漏洞,就可以毫不费力地完成入侵,常见的虚拟化层软件(如Xen、KVM)都能找到类似的安全漏洞。
其次,交换机的系统比较简单,开放的服务非常有限。而宿主机则是一台标准的Linux服务器,运行着标准的Linux操作系统和各种标准的服务,可被攻击者使用的通道也多得多。
大规模效应
传统攻击风险扩大。为了方便地让VM故障漂移以及其他原因,云计算网络一般都会基于大二层架构,甚至是跨越机房、跨越城市的大二层架构。一个VLAN不再是传统时代的200来台服务器,数量会多达几百台、几千台。在大二层网络内部,二层数据交换依赖交换机的CAM表寻址。当MAC地址达到一定规模后,甚至可能导致CAM表被撑爆。类似的,ARP欺骗、以太网端口欺骗、ARP风暴、NBNS风暴等二层内部的攻击手法,危害性都远远超过了它们在传统时代的影响。
攻击频率急剧增大。由于用户的多样性及规模巨大,遭受的攻击频率也急剧增大。以阿里云现在的规模,平均每天遭受约300起DDoS攻击,其中50%攻击流量超过5GBit/s。针对Web的攻击及密码破解攻击更是以亿计算。这种频度的攻击,给安全运维带来了巨大挑战。
安全的责任走向广义
随着更多的云用户入驻,云内部署的应用也更是五花八门。安全部门需要负责的领域也逐渐扩大,从开始的保护企业内部安全,逐渐走向更上层的业务风险。
云计算资源的滥用。云计算资源滥用主要包括两方面。一是恶意欠费,因为云计算的许多业务属于后付费业务,恶意用户可能使用虚假信息注册,不停地更换信息使用资源,导致云服务提供商产生资损。作为安全部门,要对这种行为进行控制。二是许多攻击者也会租用云服务器,进行垃圾邮件发送、攻击扫描、欺诈钓鱼之类的活动。安全部门要能准确、实时地发现这种情况,并通过技术手段拦截。
不良信息处理。不良信息主要是指云服务器用户提供一些色情、赌博之类的服务,云服务提供商需要能及时识别并制止,防止带来业务风险。
技术挑战
要解决上述这些风险,基于传统的防御思路,需要在网络中部署访问控制策略,实施流量监控系统等。但对于云来说,实施这些东西会遇到巨大的挑战。
失控的云
传统时代,所有的流量都会通过交换机进行。通过NetFlow、SNMP、ACL等手段可以做到足够完善的流量监控和访问控制策略。但在云时代,不跨越宿主机的VM之间的流量在宿主机的内存中直接交换完毕,网络部门、安全部门无法查看和控制这些流量。
为了解决云服务器被入侵的问题,安全部门需要在服务器上部署各种安全产品。但不幸的是在云时代,这些服务器的所有权并不归属于云提供商,安全部门同样没有权限对这些机器进行操作。在云时代,安全部门只能隔靴搔痒地来解决安全问题。
业务多样化带来防御复杂性
传统IDC时代,安全部门联合网络部门划分一个一个的安全域,DNS服务器归DNS区域,Web服务器归Web区域,数据库服务器归数据库区域,一切都井井有条。但在云时代,数以十万计的用户在几十万的云服务器上运行着各种各样的服务。他们的PV、QPS和响应时间要求各不相同。
而安全方案又不可能有放之四海皆准的万能药。以DDoS防御为例,CC攻击最常见的防御方案为客户端meta跳转、302跳转甚至验证码。对于普通的以PC为主要客户的网站来说,这么做没有任何问题。但对于以手机App为主要客户的网站来说,这么做就是灭顶之灾。由于手机App访问的是Web API接口,一般不会解析这种客户端跳转,更不用说填写验证码了,这将导致业务完全不可用。业务的这种复杂性,给安全防御带来不小的挑战。
隐私与监控的平衡
担心隐私和数据安全是目前上云的最大阻力,但为了解决云计算资源滥用、个性化安全策略等问题,又需要做流量监控,可能引起用户的担忧。作为云计算安全的设计者,需要小心把握两者的平衡。
阿里云的解决方案
分布式虚拟交换机
在阿里云,安全部门是作为公司成立的第一批员工加入的,初期占公司总员工总数的10%以上。从一开始,我们就考虑了安全性的问题,设计了一台分布式的虚拟交换机,提供Web API,应对上述的各种挑战和风险。分布式虚拟交换机部署在每一台宿主机里,与控制中心实时通信,主要提供了以下两大功能。
自动迁移的安全组策略。在云时代,不同的用户共用同一段IP地址,所以基于IP地址已难以区分业务了。因此,我们使用用户ID来做区分,基于用户ID来实现安全域,实施安全策略。当用户的VM出现故障迁移到其他宿主机时,这个VM的安全策略会自动迁移过去。
动态绑定过滤。我们借鉴思科的DAI技术,实现了对数据包的动态检查。在VM发出的数据包出虚拟网卡之前做一次过滤,剔除伪造的报文,如伪造源IP地址的报文和伪造源MAC地址的报文。靠近源端过滤,可以有效减轻恶意流量对网络造成的影响。
宏观分析统计
鉴于隐私的考虑,我们不对应用层数据做监控,而是通过对五元组之类的数据做宏观统计,发现恶意用户对云主机的滥用。图1是一个典型的端口扫描之后做密码扫描的例子。凌晨1点到9点之间,云VM在对外做端口扫描,因为许多主机不存活,导致出流量远大于进流量,而且具备非常典型的攻击特征,它只尝试访问大量IP地址的22、1433、3389端口。在上午10点半左右,进的流量开始大起来,而且目的端口不变,目的IP是前面IP地址的子集。这说明,攻击者已提取了开放服务的主机,在进行密码扫描了。使用这种方式,我们避免了侵犯隐私,又能实现对恶意行为的侦测。
图1 典型的端口扫描之后做密码扫描的例子
基于数据分析的个性化安全
基于数据分析的个性化安全,与监控恶意行为类似。我们统计并绘制每个云服务器的BPS、PPS、QPS时间曲线图,掌握最终用户的访问规律。根据User-Agent、源IP地址归属分析移动App和PC的访问分布。基于这些统计数据,我们定制每个云VM的WAF防御策略、DDoS防御触发阈值和清洗阈值。
其次,由于前文描述过的大规模的原因,我们的云盾系统每天可以捕获大量的恶意IP地址,包括Web攻击行为、DDoS攻击行为、密码破解行为、恶意注册行为等。我们的安全系统将这些IP地址作为统一的资源库提供,与所有的安全产品进行联动,在攻击者对某个VM进行攻击之前就完成了防御。
总结
我认为,云安全不会是由云服务提供商一家来做的,一定是通过SDN之类的方式,将网络开放出来由众多的安全服务厂商提供自己的产品,为形形色色的用户提供个性化、定制化的产品和服务。云计算在安全方面确实面临着许多困难,但云终究是未来,这是不可阻挡的趋势。