穿越云雾:国内公有云VPC隔离性初探 – 作者:ipenox

前言

近几年国内的云计算市场发展迅猛,一片欣欣向荣的热闹景象。一边是各路云厂商前仆后继入场厮杀,另一边是大量的企业跃跃欲试想把业务往云上迁。为了满足客户灵活和安全的组网要求,各家云厂商几乎都提供了虚拟私有云服务。各云厂商对虚拟私有云的定义大同小异,总结起来就是:XXX虚拟私有云(VPC,VirtualPrivate Cloud)为用户在XXX云上提供一个逻辑隔离的区域,构建一个安全可靠、可配置和管理的虚拟网络环境,用户可以自由配置VPC内的IP地址段、子网、安全组等子服务,也可以申请弹性带宽和弹性IP搭建业务系统,或者通过隧道实现VPC资源和企业侧IT资源的无缝融合。

借用AWS的一张图来示例VPC的典型应用场景:

国内公有云VPC隔离性初探

从定义上看,VPC应该是严格隔离的,这样才能保证VPC的私密性要求。所谓“隔离”,在我看来至少应该包含两层含义:一是VPC之间默认应该是隔离的,用户只有主动通过特定的云资源(如网关或路由器)才能将不同VPC连接在一起,这也是用户的显式诉求;二是用户的VPC与云基础设施之间也应该是隔离的,云基础设施仅仅应该暴露有限的和必须的服务接口给用户,这样才能有效地保护云基础设施避免来自客户中的攻击。那么在现实中,各云产商对于“隔离”的实现情况又是如何的呢?就让我们实地去试探一下吧!

评估流程

作为一个好奇的个人用户,我的目标仅仅是简单地验证一下VPC是否真的隔离,所以评估并没有严格的定量标准,结论也并不映射各云产商产品和技术的好坏,不应作为大家选择云供应商的依据。对于每个云厂商,我是按照以下的步骤进行评估的:

评估流程.png

在国内提供服务的、自己所知道的云厂商我都几乎去注册个人账号,并且进行实名;需要身份证正反面和手持身份证照的(比如金山云)这些嫌麻烦就放弃实名了。需要企业注册的,有些也设法借助关系进行了测试(比如AWS),没有关系的(比如平安云)则放弃了。那些不提供线上注册服务的云服务供应商(比如蓝汛)也没有测试。

有的产商可以在控制台上画出VPC拓扑图,例如青云的就挺直观的:

拓扑图.png

大部分的测试都是类似于这样的逻辑结构。

云主机选择的都是CentOS 7.x,所有用到的命令和工具主要是: (1)ip route 查看本机路由表; (2)traceroute 查看路由路径;(3)netstat 查看网络连接;(4)ping 探测主机存活;(4)nmap,zmap 对特定网络进行扫描;(5)telnet,ssh,curl,openssl等,对特定服务进行探测。

总的来说,这里面并没有用到深奥的技术,甚至完全可说是体力活,还要出卖自己的身份信息去实名。好在大部分云平台提供按需计费或者X天无条件退款的条款,所以测试也几乎不需要耗费钱。

评估结果汇总表

大家可以看下面的表格:

平台名称 所属企业 网址 实名认证 是否支持VPC 是否测试 测试结果 基础网络网段 体验备注
阿里云 阿里巴巴 https://cn.aliyun.com/ 实名认证后可购买
(支付宝认证)
支持 100.100.0.0/16 扫描时有短信告警存在对外DDOS攻击行为
腾讯云 腾讯 https://cloud.tencent.com/ 实名认证后可购买
(微信支付认证)
支持     流畅
百度云 百度 https://cloud.baidu.com/ 实名认证后可购买
(姓名+身份证号认证)
支持 100.64.0.0/16
100.67.0.0/16
10.16.0.0/16
流畅
京东云 京东 https://www.jdcloud.com/ 实名认证后可购买
(京东金融认证)
支持 100.65.0.0/16
100.72.0.0/16
没有实名之前慎重充值,因为它要求实名才能将余额提现。
AWS中国 亚马逊
(光环新网、西云数据运营)
https://www.amazonaws.cn/ 需要中国法人身份 支持     流畅
Azure中国 微软
(世纪互联运营)
https://www.azure.cn/ 实名认证后可购买
(身份证正反面)
支持     实名后可以1元体验1个月,非常划算。
华为云 华为 https://www.huaweicloud.com/ 实名认证后可购买
(银行卡认证)
支持 ** 100.125.0.0/16 流畅
移动云 中国移动 https://ecloud.10086.cn/ 未实名也可购买 支持 10.32.0.0/16
10.33.0.0/16
10.63.0.0/16 …
 
沃云 中国联通 https://www.wocloud.cn/ 未实名也可购买 支持 * 10.31.0.0/16
10.39.0.0/16
10.128.0.0/16…
在虚机内shutdown,在控制台重启就触发BUG,冻结所有操作,需要后台技术深度介入,处理较慢;退款要联系专门的客户经理,估计他会忘记。
青云 北京优帆科技 https://www.qingcloud.com/ 未实名也可购买 支持 ** 10.16.0.0/16
10.140.0.0/16
 
招银云创 招银云创 https://www.mbcloud.com/ 企业认证后可购买 支持      
浪潮云 浪潮集团 https://cloud.inspur.com/ 未实名也可购买 支持
(VPC2.0内测中)
  10.17.0.0/16 1.CentOS主机还要自己手动配网卡IP和网关才可以用。
2.没有提现功能,充3块钱就够用了。
小鸟云 小鸟云 https://www.niaoyun.com/ 实名认证后可购买
(手机实名认证1.5元)
不支持
(客服说有)
n/a   退款要提工单给客服。
天翼云 中国电信 https://www.ctyun.cn/ 实名认证后可购买
(手持身份证照片+正反面)
支持     是否华为协助建设?
看代码:https://github.com/Huawei/CloudResetPwdAgent/
然后搜索ctyun
Ucloud 上海优刻得信息科技 https://www.ucloud.cn 实名认证后可购买 支持     取回密码的短信后缀为嘛是【浪潮云】?两者什么关系?
金山云 金山集团 http://www.ksyun.com/ 实名认证后可购买
(手持身份证照片+正反面)
支持      
平安云 平安集团 https://yun.pingan.com/ 企业认证后可购买 支持      
网易云 网易 https://www.163yun.com 实名认证后可购买
(手持身份证照片+正反面)
支持      

路由探测

一条traceroute命令可以告诉我们很多事情,你traceroute两三个公网的地址,两三个私网的地址,看看路由怎么走,它可能会暴露内部的网络信息。

让我们分别来看看吧:

AWS

aws1.png

 阿里云

aliyun2.png

 腾讯云

qcloud2.pngbdtr3.png

 百度云

bdtr3.png

 京东云

京东trace.png

 华为云

hwc-route.png

 Azure

azure1.png

 青云

青云traceroute.png

 有时候netstat命令也可以暴露一些信息,例如百度云:

baidu-netstat.png

看100.64.253开头的两个地址,就是云设施使用的。

 总结一些规律:

(1)云基础网络可以屏蔽内部区域的traceroute信息,比如Azure,不让你看到内部路由;

(2)云基础网络可以修改traceroute的源地址,做某种转换,既可以用以排查故障,也可以迷惑他人;         

(3)云基础网络可以阻止/过滤主动发往中间traceroute地址的通讯;     

(4)如果某个云提供的VPC可选的私有地址段有限,那么它的云基础网络就有可能用到那些没分配给客户的私有地址段;

(5)100.64./10这个私有地址段几乎所有的云基础网络都会用到,并且不会分给客户使用。   

(6)169.254.x.x 这个地址段有时候也会用到,但应该是个直接映射到云主机中的地址段,不会出现在中间路由中。

网络扫描探测

对traceroute中出现的私有地址段,以及100.64./10地址段进行扫描,看看有什么发现。这步使用zmap和nmap就可以了,它们可以通过yum快速安装。

zmap非常快速,例如扫描10网段:

zmap -M icmp_echoscan -B 8M -o icmp_10.txt--disable-syslog 10.0.0.0/8

扫描整个10./8可能动作太大,一般都应该精确缩小到B段的范围,只有在没有任何目标的情况下(例如目标屏蔽了traceroute信息),可以扫描。zmap扫描时会将地址空间随机化,所以如果有隐藏的基础网络网段,可能也会很快地暴露出来。比如沃云这样:

 wo3.jpg

10./8只扫描了大约2%的地址空间,就暴露了10.39./16,10.31./16,10.128./16三个B段,这时候我们就可以中断大规模探测,将目标缩小到以上三个B段再做一次扫描,以提升扫描效率,降低大规模发包的负面影响。

zmap可以快速找出网络中的存活目标,然后就可以将这些存活目标交给nmap去进行精确扫描,例如这样:

nmap -n -v -T4 --open -sS -sV--version-light --max-retries 1 --max-rtt-timeout 20ms --min- parallelism 2048--max-scan-delay 1ms -iL icmp_10.txt -oN nmap_10.txt

使用curl可以看看HTTP/HTTPS服务是什么页面,可以大概判断其用途。 通过以上步骤就可以对云基础网络的情况稍微摸一下底了。

我们依次再来审视一番吧。首先没有发现存活IP的就略过了。

浪潮云暴露的基本上就几个服务:

浪潮4.png

 阿里云少部分100.100.网段暴露,主要是Web服务:

aliyun

其中一个HTTPS暂时也看不出来用途:

 ali4.png
  

百度云10.16./16网段和100.64./16100.67./16等网段暴露,有非WEB的端口暴露:

 bdnmap3.png
     
 bd9.png

ssh登录尝试

bd4.png

有个443看ssl证书姑且猜测是蜜罐:honeynet.baidu.com

bd蜜罐.png

京东云暴露100.65./16和100.72./16网段,有大量存活主机,端口以179和80/443居多:

京东nmap.png

京东scan200.png

部分地址开放有ssh:

京东ssh.png

华为云华为云100.125./16大量存活主机:

华为nmap.png

暴露的高风险端口有22/ssh、445/smb等。

华为nmap2.png

用ms17-010扫描了一下,没有发现漏洞:

华为smb.png

某个HTTPS站点,用途不明:

华为curl.png

华为vps有个进程很有意思的,我们看它的配置文件:

华为云.png

在GitHub上也有相关的代码,里面要判断当前的域名是华为云(myhwclouds.com)还是电信云(ctyun.cn),是否可以猜测它们的平台是一样的?有待验证

华为与电信.png

 青云很多内部IP暴露,除了80、443,还有不少的ssh、3389等:

青云-p22-ssh.png

青云scan1.png

青云scan3389.png

看看一个Web:

青云xampp.png

从主机名上看似乎也是一个云主机,只是不确定是青云自己的,还是别的客户的。

移动云:

响应ping的主机很多:  

移动ping.png

ssh端口的也不少:

中国移动网.png

还有其他的端口,似乎没有任何限制:

中国移动网2.png

沃云:沃云也是发现大量的ssh、telnet、web等ip和服务:

wo6.jpg

wo7.jpg

总结

从以上的信息来看,有不少云平台向客户VPC中暴露了过多的基础网络端点,并没有实现VPC与基础网络的完全隔离,可以从客户VPC中对云平台基础设施进行更深入的探测、猜解密码和漏洞利用尝试,可能会对云平台构成安全风险。虽然内部网络暴露给客户并不就一定意味着可以被攻破,云平台也可能已经在每一个端点进行了强加固,但暴露总会吸引非正常用户的注意。如果云平台无法阻止从客户VPC到基础网络的访问,那么至少也应该有检测潜在攻击的手段,能够及早发现异常的网络行为。从已进行测试的来看,只有阿里云因为扫描触发了告警,给我发了条短信,提示云主机正在对外发动DDOS攻击。除了竞争关系,云产商之间也有合作的关系,例如电信与华为,Ucloud与浪潮。如果A产商输出了技术,协助B产商建立了自己的云平台,那么B的云平台也极有可能有A平台相同的问题,这也很容易在实践中得到验证的。

至此全文将结束,虽然未能将国内主要的云平台全部测试一遍,但是也可以窥个端倪出来。,我也借此机会对IaaS的相关技术有了个粗浅的了解。世上没有完美的产品,我们也可以看到各个云平台在你追我赶,优胜劣汰,随着技术进步,相信我们会用上更好用更安全的云产品。  

*本文作者:ipenox,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

来源:freebuf.com 2018-04-19 09:00:32 by: ipenox

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论