网络安全
阿里云是一个多用户共享计算和存储资源的云平台,必须对不同用户进行安全隔离,防止不同用户间可以未经授权访问对方数据。
阿里云把对外提供服务的云服务层和支撑云服务的物理层进行安全隔离。
云平台网络划分为4个安全域:
- 管控域:云平台管理控制服务器。对管控域采取QoS高优先保护,保障带宽满足业务高峰期需要。
- 计算存储域:提供计算和存储节点的物理服务器。
- 运维域:运维相关系统,如堡垒机、监控、日志。
- 云服务域:客户的云服务器(ECS)、对外开放的云服务(RDS、OSS)。
通过物理交换机ACL设置确保云服务域无法访问管控域、计算存储域和运维域。
为防止云平台物理服务器主动外联,对不需要主动外联的服务器回收默认路由。
云服务器之间通过虚拟防火墙实现访问控制。每个用户的所有云服务器默认在同一个安全组里,用户可以自行划分多个安全组。同一安全组之内可以互相访问,不同安全组之间默认不可以互相访问,但可以通过安全组ACL授权访问。
RDS/DRDS通过SLB(负载均衡服务)对外提供服务,外部包括ECS云服务器只能访问DRDS通过SLB开放的虚拟服务地址(VIP)的数据库服务端口,而不能访问DRDS集群的物理服务器。
OXS(包括OSS、OTS等)通过SLB对外提供服务,外部包括ECS云服务器只能访问OXS通过SLB开放的虚拟服务地址(VIP)的HTTP端口,而不能访问OXS集群的物理服务器。
分布式操作系统安全
阿里云基于自主研发的飞天大规模分布式计算和存储平台提供云服务,为了保障飞天平台的安全性,阿里云实现了多层次的防御体系:
沙箱
语言级沙箱
语言级沙箱处于最上一层,飞天系统目前支持用户编写c/c++、java、python 3种语言的代码,所以针对每一种语言,都会设计一套它特有的沙箱系统,如针对java语言,就利用了java的security manager来做沙箱。
OS 沙箱
OS沙箱处于中间一层,语言层的沙箱可能会被黑客绕过,如oracle的java虚拟机经常会被爆出一些漏洞,黑客利用这些漏洞可轻易的绕过security manager的限制,突破java 沙箱。OS沙箱在这一层采用namespace + mount(bind) + capability+ chroot的方式来做安全隔离。Linux namespace机制提供一种资源隔离方案。PID、IPC、Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。
内核补丁
绕过OS沙箱的一种做法是利用操作系统漏洞进行权限提升,为此,阿里云针对这种权限提升行为,开发了一套内核安全补丁用来检测和阻止这类攻击。
入侵检测
在上述3层防御基础上,阿里云还增加一层入侵检测系统,用于检测当黑客突破沙箱和内核补丁后的入侵行为。
入侵检测系统包括以下几个功能:
检测网卡混杂模式
检测网卡混杂模式:黑客在进入主机后,会安装嗅探器进行网络嗅探,如嗅探21、80、110等一系列敏感端口的数据。可以通过检测网卡是否被置为混杂模式来作出检测。
b、检测su小偷程序
黑客在获得服务器普通帐号权限后,如果想进一步获得root权限的话,通常需要利用缓冲区溢出漏洞获取root权限,或者利用su小偷程序替换su程序, 用户在使用su切换到root权限的时候将密码记录下来。
c、检测/proc/kallsyms异常函数名
/proc/kallsyms动态显示了内核函数的地址和一些符号信息,一般rootkit增加了某个内核函数的话,kallsyms里就会有记录,一般后门会用hack之类的字符作为函数前缀,因为搜索kallsyms查看有没有hack之类的字符就可以检查出来。
d、检测Bash unset变量
有经验的黑客获取bash权限后,会执行unset HISTFILE; unset HISTFILESIZE; unsetHISTSIZE命令来暂停bash的命令记录功能。
e、检测RAW_SOCKET套接字
嗅探程序通常会启动原始套接字来进行网络抓包。
f、检测系统帐号
Unix系统最常见的后门方式就是在/etc/passwd中加入一个uid为0的账户。
g、反弹后门检测
黑客在获得webshell后,会执行一个反弹后门,用于权限提升。
h、主动防御
主动防御有两个功能:根据白名单方式来确定一个进程是否可以被启动。对特定的路径或进程进行保护。
通信安全
飞天通过ProxySSL组件对底层通信进行数据传输加密和签名,保证飞天进程间通信的机密性和完整性。
ECS安全
租户隔离
CPU隔离:阿里云ECS采用xen HVM模式,基于硬件虚拟化技术VT-x实现,hypervisor运行在vmx root模式,虚拟机运行在vmx non-root模式,通过硬件机制进行隔离,有效地防止了虚拟机访问特权资源,同时也做到了虚拟机之间的有效隔离。
内存隔离:在虚拟化层,Xen Hypervisor隔离内存。云服务器运行时,使用硬件辅助的EPT(Extended Page Tables,扩展页表)技术,确保云服务器之间无法互访对方内存。云服务器释放后,它的所有内存会被Xen Hypervisor清零。这样防止云服务器关闭后释放的物理内存页内容被其他云服务器访问到。
存储隔离:在虚拟化层,Xen Hypervisor采用分离设备驱动模型实现I/O虚拟化,虚拟机所有I/O操作都会被Xen截获处理;Xen保证虚拟机只能访问分配给它的物理磁盘空间,从而实现不同虚拟机硬盘空间的安全隔离。云服务器释放后,原有磁盘的内容在被删除的时候由宿主机的文件系统(盘古分布式文件系统)回收,当再次分配的时候,由宿主机的文件系统负责清空对应的磁盘内容,所以也不会出现泄露。
网络隔离:采用VPC和安全组防火墙进行网络隔离。
安全组防火墙
ECS服务以用户为单位,使用安全组防火墙进行网络隔离。安全组是一个逻辑上的分组,这个分组是由同一个地域内具有相同安全保护需求并相互信任的ECS实例组成。安全组防火墙用于设置单台或多台云服务器的网络访问控制,它是重要的安全隔离手段。
每个用户的所有云服务器默认在同一个安全组里。用户可以自行划分多个安全组。每个ECS实例至少属于一个安全组,在创建的时候就需要指定。
安全组内可以互访,不同安全组的ECS实例之间默认不通。
用户可以根据需要自行配置安全组防火墙规则授权两个安全组之间互访。
防IP/MAC/ARP欺骗
在传统网络里,ip/mac/arp欺骗一直是网络面临的严峻考验。通过ip/mac/arp欺骗,黑客可以扰乱网络环境,窃听网络机密。
阿里云云平台通过宿主机上的网络底层技术机制,彻底解决了这些问题:在宿主机数据链路层隔离由云服务器向外发起的异常协议访问并阻断云服务器arp/mac欺骗,在宿主机网络层防止云服务器ip欺骗。
高可用性
负载均衡:多台ECS云服务器可以使用SLB负载均衡服务组成集群,消除单点故障,提升应用系统的可用性。
数据高可靠性:云服务器镜像文件、快照文件均默认存储三份,分布在不同交换机下的不同物理服务器上,数据可靠性高达99.999%。
故障自动恢复:云服务器部署在宿主机(承载云服务器的物理服务器)上,宿主机可能因性能异常或者硬件原因导致故障,当检测到云服务器所在的宿主机发生故障时,系统会启动保护性迁移,把云服务器迁移到正常的宿主机上,自动恢复,保障应用的高可用性。
快照:快照是云服务器上的数据在某一个时间点的拷贝。云服务器可以按照用户事先设定的策略定时自动创建快照,也可以由用户创建自定义快照。用户可使用快照回滚来恢复以往磁盘数据,加强数据安全,提高系统可用性。常见快照使用场景:1)云服务器系统变更前做好快照,在变更出现问题后可以快速回退;2)对已安装应用软件包的云服务器打快照,从快照创建自定义镜像,可以批量创建服务器,简化用户管理部署工作。
漏洞热修复
阿里云支持Xen热修复,热修复技术使得漏洞修复过程不需要重启系统,可以让客户的虚拟机彻底无感知,确保上层用户业务不受影响。
Xen是剑桥大学发起的开源Hypervisor项目,是实现云计算虚拟化的基础,现在被亚马逊、阿里云、rackspace等公司作为公有云的基础系统软件,承载着全球大部分的公有云计算业务。Xen安全漏洞是指Hypervisor自身出现安全问题,可能会造成数据泄漏甚至虚机逃逸,漏洞披露由Xen安全团队负责。从披露流程上来说,Xen安全团队会在公布漏洞前,提前10-14天发给全球的关键公司做预披露,这些公司都签订了严格的NDA协议,以留出时间给这些公司做线上系统安全漏洞的修复。截止2015-3-31,阿里巴巴是国内唯一一家进入Xen安全漏洞预披露列表的公司(http://www.xenproject.org/security-policy.html),因此阿里云可以提前得到漏洞的相关信息,然后做相应的安全防范动作,比如重启机器或者热修复漏洞。
Xen作为底层Hypervisor软件,为了安全考虑,被设计成一个安全域,它的内存是Xen的控制域Dom0无法访问的。而如果想热修复一个系统软件漏洞,必须能够访问系统软件所用到的内存。因此如果想做热修复,需要解决四个问题:如何访问Hypervisor内存,如何计算有问题指令的物理地址,如何动态地修复有漏洞的机器指令以及修复过程让用户业务无感知。第一个问题属于业界难题,阿里云在CPU不能访问Hypervisor内存的情况下,利用设备DMA去读写内存,动态替换Xen Hypervisor中有问题的指令,实现了热修复,并且这个修复过程采用了极其精细化的设计,让客户的虚拟机彻底无感知,从而确保上层用户业务不受影响。这个方法需要精准的操作,因为一个异常的DMA请求会导致Hypervisor内存污染或者设备异常,最终导致物理机宕机。
热修复Hypervisor技术门槛很高,各种各样的软硬件组合都需要考虑,问题比较复杂,不是所有的公司都能解决所有问题。
SLB安全
高可用性
采用LVS集群部署方式,采用全冗余设计,无单点,可用性高达99.99%。
根据应用负载进行弹性扩容,在流量波动情况下不中断对外服务。
健康检查
SLB服务会检查云服务器池中ECS的健康状态,自动隔离异常状态的ECS,该ECS恢复正常后自动解除屏蔽,从而解决了单台ECS的单点问题,同时提高了应用的整体服务能力。
访问控制
SLB可以屏蔽后端服务器IP地址,对外只提供VIP。
SLB提供源IP白名单功能,可限制仅允许可信的源IP访问用户通过SLB开放的服务。
- https/ssl负载均衡
SLB支持HTTPS/SSL负载均衡功能:
- 对于需要进行证书认证的服务,可以集中、统一在SLB上管理证书。而无须部署在每台ECS(Real Server)上。
- 可配置密文卸载(Offload)功能,解密处理统一在SLB上进行,降低后端ECS CPU开销。
- SLB提供证书管理系统管理和存储用户证书,用户上传到证书管理系统的私钥都会加密存储。