前言
近几年国内的云计算市场发展迅猛,一片欣欣向荣的热闹景象。一边是各路云厂商前仆后继入场厮杀,另一边是大量的企业跃跃欲试想把业务往云上迁。为了满足客户灵活和安全的组网要求,各家云厂商几乎都提供了虚拟私有云服务。各云厂商对虚拟私有云的定义大同小异,总结起来就是:XXX虚拟私有云(VPC,VirtualPrivate Cloud)为用户在XXX云上提供一个逻辑隔离的区域,构建一个安全可靠、可配置和管理的虚拟网络环境,用户可以自由配置VPC内的IP地址段、子网、安全组等子服务,也可以申请弹性带宽和弹性IP搭建业务系统,或者通过隧道实现VPC资源和企业侧IT资源的无缝融合。
借用AWS的一张图来示例VPC的典型应用场景:
从定义上看,VPC应该是严格隔离的,这样才能保证VPC的私密性要求。所谓“隔离”,在我看来至少应该包含两层含义:一是VPC之间默认应该是隔离的,用户只有主动通过特定的云资源(如网关或路由器)才能将不同VPC连接在一起,这也是用户的显式诉求;二是用户的VPC与云基础设施之间也应该是隔离的,云基础设施仅仅应该暴露有限的和必须的服务接口给用户,这样才能有效地保护云基础设施避免来自客户中的攻击。那么在现实中,各云产商对于“隔离”的实现情况又是如何的呢?就让我们实地去试探一下吧!
评估流程
作为一个好奇的个人用户,我的目标仅仅是简单地验证一下VPC是否真的隔离,所以评估并没有严格的定量标准,结论也并不映射各云产商产品和技术的好坏,不应作为大家选择云供应商的依据。对于每个云厂商,我是按照以下的步骤进行评估的:
在国内提供服务的、自己所知道的云厂商我都几乎去注册个人账号,并且进行实名;需要身份证正反面和手持身份证照的(比如金山云)这些嫌麻烦就放弃实名了。需要企业注册的,有些也设法借助关系进行了测试(比如AWS),没有关系的(比如平安云)则放弃了。那些不提供线上注册服务的云服务供应商(比如蓝汛)也没有测试。
有的产商可以在控制台上画出VPC拓扑图,例如青云的就挺直观的:
大部分的测试都是类似于这样的逻辑结构。
云主机选择的都是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
阿里云
腾讯云
百度云
京东云
华为云
Azure
青云
有时候netstat命令也可以暴露一些信息,例如百度云:
看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扫描时会将地址空间随机化,所以如果有隐藏的基础网络网段,可能也会很快地暴露出来。比如沃云这样:
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的就略过了。
浪潮云暴露的基本上就几个服务:
阿里云少部分100.100.网段暴露,主要是Web服务:
其中一个HTTPS暂时也看不出来用途:
百度云10.16./16网段和100.64./16100.67./16等网段暴露,有非WEB的端口暴露:
ssh登录尝试
有个443看ssl证书姑且猜测是蜜罐:honeynet.baidu.com
京东云暴露100.65./16和100.72./16网段,有大量存活主机,端口以179和80/443居多:
部分地址开放有ssh:
华为云华为云100.125./16大量存活主机:
暴露的高风险端口有22/ssh、445/smb等。
用ms17-010扫描了一下,没有发现漏洞:
某个HTTPS站点,用途不明:
华为vps有个进程很有意思的,我们看它的配置文件:
在GitHub上也有相关的代码,里面要判断当前的域名是华为云(myhwclouds.com)还是电信云(ctyun.cn),是否可以猜测它们的平台是一样的?有待验证
青云很多内部IP暴露,除了80、443,还有不少的ssh、3389等:
看看一个Web:
从主机名上看似乎也是一个云主机,只是不确定是青云自己的,还是别的客户的。
移动云:
响应ping的主机很多:
ssh端口的也不少:
还有其他的端口,似乎没有任何限制:
沃云:沃云也是发现大量的ssh、telnet、web等ip和服务:
总结
从以上的信息来看,有不少云平台向客户VPC中暴露了过多的基础网络端点,并没有实现VPC与基础网络的完全隔离,可以从客户VPC中对云平台基础设施进行更深入的探测、猜解密码和漏洞利用尝试,可能会对云平台构成安全风险。虽然内部网络暴露给客户并不就一定意味着可以被攻破,云平台也可能已经在每一个端点进行了强加固,但暴露总会吸引非正常用户的注意。如果云平台无法阻止从客户VPC到基础网络的访问,那么至少也应该有检测潜在攻击的手段,能够及早发现异常的网络行为。从已进行测试的来看,只有阿里云因为扫描触发了告警,给我发了条短信,提示云主机正在对外发动DDOS攻击。除了竞争关系,云产商之间也有合作的关系,例如电信与华为,Ucloud与浪潮。如果A产商输出了技术,协助B产商建立了自己的云平台,那么B的云平台也极有可能有A平台相同的问题,这也很容易在实践中得到验证的。
至此全文将结束,虽然未能将国内主要的云平台全部测试一遍,但是也可以窥个端倪出来。,我也借此机会对IaaS的相关技术有了个粗浅的了解。世上没有完美的产品,我们也可以看到各个云平台在你追我赶,优胜劣汰,随着技术进步,相信我们会用上更好用更安全的云产品。
*本文作者:ipenox,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
来源:freebuf.com 2018-04-19 09:00:32 by: ipenox
请登录后发表评论
注册