科普一下公有云的网络
閱讀本文約花費: 7 (分鐘)
@admin一乐 同学发了一篇微博(http://weibo.com/1819367693/EwZFypkK6)说了一下因为一个安全问题的疏忽中招的事。大意是redis有一个可以提权访问服务器安全漏洞,但是因为一乐家的redis服务器没有暴露给公网,所以一开始也就没有特别在意,不料还是被攻破了,原因虽然是这个服务器没有暴露在公网,但是因为阿里云的内网各个租户是可以互相访问的,所以,也相当于暴露给了别人……
我简单地回复了一下这个事,就说让我想到了以前和阿里云解决多租户内网必需隔离的事(是什么事我也没细说,只是简单的感叹一下)。结果引发了些敏感的人的质疑和口水。那些口水对我来说无意义,不过,这个期间看到似乎大家对公有云的网络并不是很明白,所以,写下这篇文,希望大家都注意起来,以免出现公有云上的安全问题。
安全组
阿里云的内网是经典网络,也就是说,不同的租户是互通的,如果你只想让你自己的机器访问的话,那么你要给你每一台机器都配上互相可以访问的安全组。安全组是AWS的Security Group的中文翻译,说白了就是防火墙,你可以简单理解为你Windows机器上的防火墙——其中标明了网络出站和入站的规则。
这种经典网络就好像一个公司内的办公网络一下,所有员工的电脑都可以互相ping通和访问的(这就是为会什么有些病毒可以在公司内网里泛滥)。如果你不想让别的员工访问你的电脑,你就需要设置你Windows机器上的防火墙设置。
但是,一台个人机器还好设置,如果你是企业用户,你的机器多了,那么,安全组这种设置可能就会是一个恶梦。原因如下:
1)当你有新的机器加入或是变更了,你需要让所有的机器都知道这台机器。比如你有100台机器,新增的这一台你就需要让那100台都知道。或是,你这100台中有一台的IP变了,你需要让另外99台的安全组都知道。
2)你可能会说,不用把安全组配置在IP上吧,配置在网段上就可以了。当然可以,不过,这样一来,就会涉及IP地址段的分配管理。也就是说,系统管员需要把某个IP段分给我,并确保不能让别人来用,否则,我的安全组就等白设置了。
3)在公有云上,这种为每个公司分配一个专用的IP段的方式根本不靠谱。一方面,这样做会导致 IP段会够,另一方面更为主要是因为,这会涉及非常复杂的IP段管理,对于云平台的主机迁移、跨交换机、跨机房等等都非常不利。
所以,在这样的经典网络下,对于你的机器的安全组的管理,完全是没法管的,因为是静态的,而还是非常复杂的,所以配置错误这种事么,基本上是高概率的。
VPC
真正解决内网多租户互相隔离的方案应该是VPC,VPC这个词应该也是AWS发明出来的,全称叫Virtual Private Cloud。这个方案让用户自己定义自己的内网网络,你可以定成:172.13.x.x,你也可以定义成192.168.x.x,随便你定。就算是不同的租户定义成了相同的私有网络也没有问题。定义完后,就可以让你的虚拟机加入你定义的VPC网络。
一般来说,VPC是通过hack底层的虚拟化系统完成的,也就是说,在Hypervisor层虚拟交换机中实现了一个类似路由器的东西——通过一个用户自定义的虚拟IP和实际IP的关系做packet forwarding或是overlay的机制等。Anyway,实现细节不重要。
重要的是VPC才是对多租户网络隔离的最佳方式(至少目前是这样的)。VPC就像可以让企业自由定义自己的内网,就像在私有云里玩的那样。
在VPC上,安全组包括网络ACL就可以成为一个非常不错的补充了。VPC这个基础设施还可以让你配置自己的路由表什么的。总之,这是一个基础设施,在上面可以非常方便的扩展很多东西,比如用户可以用VPN接入等等(这个网络方案的扩展性是很强的)
我认为,VPC这个事应该是默认为用户开启的,是在VPC上配置安全组,而不是提供VPC和安全组两套可以相互独立网络方案。然而,阿里云不是这样的。(原因不说,省得又是一堆口水)
AWS上是默认是分配一个default的VPC的,AWS的VPC是免费的,不过VPN是收费的。
(我建议阿里云参考一下AWS,但有个似乎像是阿里云的小同学评论里回复我说——AWS懂网络么?……)
其它
虽然公有云可以帮助企业降低运维成本,但不可否认,企业上公有云是有一定的风险的,如果我记忆准确的话,我记得我在Amazon里看到的一个曾经的一个说法:如果不做 VPC 和 IAM 这两个东西,企业将无法上云,AWS 也就不用做了。具体原因不在这里展开了。
via: 左耳朵耗子 https://weibo.com/ttarticle/p/show?id=2309404079443999097225