阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 2174阅读
  • 0回复

[云安全技术和产品专区 ]云服务器ECS安全组实践(一)

级别: 论坛版主
发帖
241
云币
478
应用上云除了对资源生命周期管理和应用交付是一个转变,更重要是思维方式的转变。本篇文章就简单介绍下上云的一个重要概念安全组(Security Group)。本文是安全组系列的第一篇,主要介绍安全组的基本概念、约束和如何配置入网规则。 _&\'Va$  
[0105l5  
安全组的基本概念和约束 cr<j<#(Z}  
安全组在云端提供类似虚拟防火墙功能,用于设置单个或多个 ECS 实例的网络访问控制,它是重要的安全隔离手段。在创建 ECS 实例时,必须选择一个安全组。您还可以添加安全组规则,对该安全组下的所有 ECS 实例的出方向和入方向进行网络控制。 PYWFz   
安全组有下面的限制: U^|T{g+O  
  • 每个账户最多可以建立50个安全组,每个安全组最多100个安全组规则
  • 一个实例最多可以加入5个同种网络类型的安全组
  • 同一个安全组之内的资源默认是网络通的,不同安全组之间的资源默认是网络不通
  • 安全组应该是白名单的性质的,所以需要尽量开通最小的权限,默认拒绝所有的访问
  • 单个安全组最大支持1000个实例
!hM`Oe`S  
当您创建一个安全组的时候,默认规则均为出方向 accept all,入方向 deny all。安全组的出入规则,很多客户在使用的时候并没有按照己的应用规范划分。使得自己的应用加大了收到攻击的风险。 ]LZ#[xnM7  
安全组的出入规则可以参见下面的文档: U?Dr0wD;[  
pnE]B0e  
除了可以限制IP和CIDR网段之外,安全组的出入规则可以直接引用另外一个安全组,这样就避免了有些时候CIDR或者IP的不灵活,直接对另外一个安全组中的资源授权。通过这样间接的可以通过安全组对应用进行分层。 t:V._@  
  • 安全组的入网规则,可以设置为另外一个相同网络类型(“专有网络”或”经典网络”)的安全组。属性为`SourceGroupId`
  • 安全组的出网规则,可以设置为另外一个相同网络类型(“专有网络”或”经典网络”)的安全组。属性为`DestGroupId`
  • 出入规则是可以设置`Priority`来设置权重,1为最高,100为最低
  • 安全组也支持跨帐号授权,这个属于高级功能,我们在以后的文章介绍
D!OY<?  
在上云的时候,很多的客户没有重视安全组的出入规则的设置和长远的规划,影响了自己的业务扩展性。合理的规划安全组是能帮助应用降低被攻击的风险,同时可以帮助应用之间的结构和层次更清晰。下面是安全组最佳实践的第一篇。 M*qE)dZjS  
?;htK_E\*  
d/F^ez  
安全组最佳实践 u-y?i`  
在开始安全组的实践之前,下面有一些基本的建议: 7FPSBvU#/  
  • 首先安全组应该作为白名单使用, 这是最重要的规则。
  • 使用最小的原则开放自己的应用出入规则,例如可以选择开放具体的端口例如80。
  • 使用一个安全组来管理所有的应用将会非常难以配置,因为不同的分层一定有不同的需求。
  • 对于今天的常见的分布式应用来说,不同的应用类型应该使用不同的安全组,例如我们对Web、Service、Database、Cache层使用不同的安全组暴漏不同的出入规则和权限。
  • 也没有必要为每个实例设置一个安全组,这样管理起来的成本也非常高。
  • 优先考虑VPC网络
  • 不需要公网访问的资源不要提供公网IP
  • 因为一个实例可以分配多个安全组,所以一个实例可能同时应用数百条规则。我们聚合所有分配的安全规则以判断是否允许流入或留出,但庞大的安全组规则可能会增加您管理上的复杂程度。因此,我们建议您尽可能保持单个安全组的规则简洁。
*P9"1K +  
调整线上的安全组的出入规则是比较危险的动作,如果您不确定的情况下不要随意的更新安全组的出入规则的设置。` 阿里的控制台提供了克隆安全组和安全组规则的功能,您在修改安全组和规则的时候建议Clone一个相同的安全组,然后进行调试,避免直接影响线上应用。 ~XP|dn}  
本文先介绍一些安全组的入网规则的实践建议。 Jnd_cJ]a  
P(Rl/eyRM  
1. 不要使用0.0.0.0/0的入网规则 *xpn-hCp<  
允许全部入网访问是经常犯的错误。使用0.0.0.0/0意味着所有的端口都对外暴漏了访问权限。这个是非常的不安全的。因此正确的做法是首先拒绝所有的端口对外开放。安全组应该是白名单访问。如果您需要暴漏服务,如果是Web服务,默认情况下可以只开放 80、8080、443之类的常用TCP端口。其它的端口都关闭。 MZX)znO  
  1. { "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "SourceCidrIp" : "0.0.0.0/0", "Policy": "accept"} ,
  2.           { "IpProtocol" : "tcp", "FromPort" : "8080", "ToPort" : "8080", "SourceCidrIp" : "0.0.0.0/0", "Policy": "accept"} ,
  3.           { "IpProtocol" : "tcp", "FromPort" : "443", "ToPort" : "443", "SourceCidrIp" : "0.0.0.0/0", "Policy": "accept"} ,
<XG]aYBR  
Yq51+\d  
2. 关闭不需要的入网规则 p`A2^FS)  
如果您当前使用的入规则已经包含了0.0.0.0/0。首先您要重新审视下自己的应用需要对外暴漏的端口和服务。在确定某些端口是不想直接对外提供服务的可以加一条拒绝的规则。如果您的服务器上也自己安装了Mysql数据库服务,默认情况下您是不应该暴漏3306到公网的。您可以添加一条拒绝规则如下所示,下面的规则添加了一条拒绝规则。先将其设置的优先级为100,优先级最低。 1$Q[%9  
  1. { "IpProtocol" : "tcp", "FromPort" : "3306", "ToPort" : "3306", "SourceCidrIp" : "0.0.0.0/0", "Policy": "drop", Priority: 100} ,
8<T~AU8'*  
上面的调整直接将导致所有的端口都不能访问3306。这样非常有可能阻止您的正常的业务需求。您可以通过授权另外一个安全组的资源进行如规则访问。 gJuK%P  
D&"lu*"tg  
"= %"@"<)  
3. 授权另外一个安全组入网访问 IAGY-+8e  
不同的安全组按照最小原则开放相应的出入规则。对于不同的应用分层应该使用不同的安全组,不同的安全组相应的出入规则。 w0Nm.=I-   
lEwQj[ k  
E9I08AODS  
例如对于常见的分布式应用,我们都会区分不同的安全组,由于不同的安全组可能网络是不能通讯的,这个时候直接授权IP或者CIDR网段就是非常痛苦的,我们可以直接授权另外一个安全组id的所有的资源都可以直接访问。例如我们的应用对Web、Database创建了不同的安全组, `sg-web`, `sg-databse`。在sg-database中我们可以加一条下面的规则,授权所有的`sg-web`安全组的资源可以访问我们的3306端口。 w9<'0wcs  
  1. { "IpProtocol" : "tcp", "FromPort" : "3306", "ToPort" : "3306", "SourceGroupId" : "sg-web", "Policy": "accept", Priority: 2} ,
HyWR&0J  
4. 授权另外一个CIDR可以入网访问 0fBwy/:  
经典网络中由于网段不太可控,我们建议您使用安全组ID来授信入网规则,但是VPC中我们的IP地址是可以自己规划的,您可以通过不同的VSwitch来设置不同的IP域。 r ~UDK]?V  
在VPC环境中,我们可以默认的拒绝所有的访问。然后授信自己的专有网络的网段可以访问。通过直接授信可以相信的CIDR网段。 ebJTrh<{  
  1. { "IpProtocol" : "icmp", "FromPort" : "-1", "ToPort" : "-1", "SourceCidrIp" : "10.0.0.0/24", Priority: 2} ,
  2.           { "IpProtocol" : "tcp", "FromPort" : "0", "ToPort" : "65535", "SourceCidrIp" : "10.0.0.0/24", Priority: 2} ,
  3.           { "IpProtocol" : "udp", "FromPort" : "0", "ToPort" : "65535", "SourceCidrIp" : "10.0.0.0/24", Priority: 2} ,
ezL1,GT  
本篇主要是入网规则的一些实践。下面我们将介绍 云服务器ECS安全组实践(二) , 将涉及云服务器的安全规则细节和将云服务器加入和移除安全组。 +%,oq ]<[,  
Yb<:1?76L  
&}Wi@;G]2  
[ 此帖被正禾在2017-02-28 15:06重新编辑 ]
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)