什么是安全组?
安全组是云上的虚拟防火墙,它包含安全组规则和安全组内的云资源(虚拟机、弹性网卡等)。用户可以配置安全组规则来允许或拒绝指定类型的网络流量通行,还可以基于安全组划定安全域,通过授权安全组访问的能力,来实现云资源之间的访问控制。
为什么需要安全组?
访问控制
安全组提供了一种机制来限制对云资源的访问,仅允许经过验证和授权的流量进入或离开,从而增强了网络安全。
隔离和分段
通过使用不同的安全组,可以在同一个云环境内对不同的服务或应用进行网络隔离,减少潜在的攻击面。
规则灵活性
安全组通常允许用户根据需要创建和修改规则,以适应不断变化的业务需求和安全要求,无需更改底层网络基础设施。
简化管理
与传统物理网络设备相比,安全组易于配置和管理,用户可以通过云服务提供商的控制面板或API快速应用安全规则。
成本效益
安全组是云服务的一部分,通常不需要额外的硬件或软件投入,这为用户提供了一种成本效率高的网络安全措施。
什么是安全组规则?
安全组规则是您自定义的访问控制规则,用于控制安全组内云资源的出入站流量,可以实现对云资源的访问控制和网络安全防护。安全组规则的构成通常包括以下元素:
规则方向:规定规则是影响入站流量(Ingress)还是出站流量(Egress)。
授权策略:指明是允许(Allow)还是拒绝(Deny)匹配规则的流量。
优先级:可能存在多个规则,优先级定义了规则被应用的顺序,通常较低的数字表示更高的优先级。
协议类型:指定网络协议类型,如TCP、UDP、ICMP等。
端口范围:定义可接受流量的端口号或端口号范围,例如80端口用于HTTP。
授权对象:源或目的地,可以是特定的IP地址、IP地址范围或另一个安全组。
例如,搭建对外提供Web服务的网站,需要允许访问相应服务的端口,如HTTP(80)、HTTPS(443),安全组规则的配置示例如下表所示。
规则方向 | 授权策略 | 优先级 | 协议类型 | 端口范围 | 授权对象 |
入方向 | 允许 | 1 | 自定义TCP | 目的:80/80 | 源:0.0.0.0/0 |
入方向 | 允许 | 1 | 自定义TCP | 目的:443/443 | 源:0.0.0.0/0 |
安全组有哪些实际应用?
下面以阿里云的云服务器ECS为例,介绍安全组的一些应用案例。
网站提供Web服务
安全组在为网站提供Web服务中起到过滤作用,允许合法的HTTP和HTTPS流量通过,同时阻止非法或未授权的网络访问,以保护Web服务器免遭恶意攻击。
通过本地服务器远程连接实例
在使用本地服务器进行远程连接实例之前,需要根据连接方式允许访问相应服务的端口。例如,当通过SSH远程连接Linux实例时,需要允许访问SSH(22)端口;当通过RDP远程连接Windows实例时,需要允许访问RDP(3389)端口。
实现不同安全组的实例内网互通
在同一个专有网络中,如果需要在实例之间进行数据共享等操作,例如安全组A的实例需要通过FTP访问安全组B的实例中的共享文件,您可以通过授权安全组的方式实现内网互通。相比于授权单个IP地址或CIDR地址块,授权安全组能够更加便捷地实现多个实例之间的访问。您可以轻松地允许一组实例访问另一组实例,而无需逐个配置每个实例的访问权限。
提供数据库访问
如果您在实例上部署了数据库,并需要允许其他实例通过内网获取数据,您可以在相应的安全组规则中配置允许来自指定IP地址或IP地址范围的流量访问对应端口,从而实现其他实例通过内网获取数据库数据的需求。
验证网络连通性
ICMP协议被用于传递控制消息,因此在进行一些测试操作之前,需要允许基于ICMP协议的访问。例如,在客户端执行
ping
命令来测试网络连通性时,就需要允许ICMP协议的访问。限制实例访问外部网站
如果您需要限制实例只能访问指定网站,可以将安全组作为白名单使用,设置默认拒绝所有出方向访问,然后仅允许访问指定网站的IP。
安全组的工作原理是什么?
安全组作为云上的虚拟防火墙,在决定网络流量能否通过时,它会按照协议、端口、授权对象,以安全组规则的优先级顺序,依次匹配每条规则。如果成功匹配某条规则,将会对流量执行授权策略指定的动作,允许或拒绝流量通行。
例如,通过SSH远程访问ECS实例时,安全组会根据用户客户端地址是否符合安全组规则,决定要不要放行。
规则评估
当网络流量尝试进入或离开安全组关联的云资源时,安全组会根据用户配置的规则对流量进行匹配。匹配通常基于源(或目的地)IP地址、协议类型(如TCP、UDP、ICMP)和端口号,规则定义了允许或拒绝的授权策略,流量会被执行匹配到的安全组规则的授权策略,从而被允许或拒绝。
状态跟踪
安全组通常支持状态跟踪,这意味着如果出站流量被允许,相应的入站响应流量通常也会被允许,即使没有明确的入站规则。这种状态跟踪确保了像HTTP请求这样的通信会话可以正常进行,即使安全规则只定义了出站规则。
默认访问控制规则
安全组通常带有默认访问控制规则,您可以查阅产品文档默认访问控制规则来确定不同类型安全组的默认访问控制规则。
资源关联
安全组被关联到云资源上,并在网络接口级别应用其规则。可以将多个安全组应用于单个资源,也可以将一个安全组应用于多个资源,以实现灵活的安全管理。
使用安全组时需要考虑哪些因素?
规划
您可以为安全组设置名称、描述,也可以设置安全组的标签、资源组,便于进行分类运维。建议您合理设置这些信息,方便快速识别安全组的用途,在管理较多安全组时更加清晰。
以白名单的方式使用安全组
即默认拒绝所有访问,添加允许规则来放通指定的端口范围和授权对象。
添加安全组规则时遵循最小授权原则
例如,开放Linux实例的22端口用于远程登录时,建议仅允许特定的IP访问,而非所有IP(0.0.0.0/0)。
遵循最小权限原则
在不需要普通安全组内云资源实例之间内网互通时,将普通安全组的组内连通策略设置为组内隔离。
尽量保持单个安全组内规则的简洁
按照用途将规则维护在多个安全组中,并将实例关联到这些安全组。单个安全组的规则数量过多,会增加管理复杂度。
不同类型应用的实例加入不同的安全组,分别维护安全组规则
例如,将允许公网访问的ECS实例关联到同一个安全组,仅放通对外提供服务的端口,例如80、443等,默认拒绝其他所有访问。避免在允许公网访问的ECS实例上提供其他服务,例如MySQL、Redis等,建议将内部服务部署在不允许公网访问的实例上,并关联其他的安全组。
避免直接修改线上环境使用的安全组
可以先克隆一个安全组在测试环境调试,确保修改后实例流量正常,再对线上环境的安全组规则进行修改。
阿里云如何满足您的安全组需求?
相关产品
云服务器ECS是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS级别云计算服务。创建ECS实例时,您可以指定一个或多个安全组。如果您创建ECS实例时未指定安全组,将使用默认安全组。在决定ECS实例的流量能否通过时,与ECS实例关联的多个安全组的规则,将按固定的策略排序,共同生效。更多信息,请参见安全组规则。
您可以为安全组新增规则,修改或删除已有规则,这些规则变动会自动地作用于安全组中的所有ECS实例,更多信息,请参见安全组操作指引。您也可以在其他云资源中关联ECS安全组,让被关联的ECS安全组下的所有ECS实例访问这些云资源,例如云数据库RDS、云原生数据库PolarDB、云数据库Redis、负载均衡SLB等。
您还可以通过云防火墙的安全组检查功能检查ECS服务器安全组中存在高危风险的规则,并获取修复建议,从而更安全、更高效地使用安全组功能。
最佳实践
ECS安全组实践(入方向规则):您可以通过配置安全组规则,允许或禁止安全组内的ECS实例访问公网或私网,实现对云资源的访问控制和网络安全防护。本文介绍配置安全组的入方向规则的最佳实践。
ECS安全组实践(安全组授权):从授权和撤销安全组规则、加入和移出安全组讲解云服务器ECS的安全组最佳实践。
ECS安全组实践(安全组设置):在安全组的使用过程中,通常会将所有的云服务器放置在同一个安全组中,从而可以减少初期配置的工作量。但从长远来看,业务系统网络的交互将变得复杂和不可控。在执行安全组变更时,您将无法明确添加和删除规则的影响范围。推荐您对不同的业务规划不同的安全组,并设置不同的安全组规则,使您的系统更加便于调整。
提高ECS实例的安全性:您可以把一个ECS实例等同于一台虚拟机。本地维护的虚拟机一般会进行虚拟机实例级别的安全防护,以防止攻击和入侵等。同样地,ECS实例也需要安全性防护。除了置身于阿里云自身的安全平台外,您需要根据实际需求进一步强化安全方案。
不同安全组的经典网络实例内网互通:如果您的ECS实例是经典网络类型,您可以通过设置安全组规则来实现两台不同安全组的经典网络实例内网互通,以满足您在搭建内部网站或应用服务、部署数据库集群或应用系统等业务场景下的需求。本文主要介绍实现经典网络实例内网互通的四种方案,帮助您实现经典网络实例的内网互通。
安全组五元组规则:五元组规则完全兼容原有的安全组规则,能更精确地控制源IP地址、源端口、目的IP地址、目的端口以及传输层协议。本文主要介绍五元组规则的定义、应用场景、配置方法以及相关参数说明。
对安全组规则的合规性进行审计和预警:您可以在配置审计(Config)中创建审计规则,对安全组规则的合规性进行审计,并将审计结果投递到日志服务SLS中。当账号下的安全组规则有不符合审计规则的变更时,您能够通过日志服务SLS收到告警通知。
安全组与ECS实例关联的管理:您可以根据业务需要,将ECS实例加入一个或多个安全组,也可以随时调整安全组与ECS实例的关联。
安全组与弹性网卡关联的管理:当您将ECS实例加入安全组时,实际上是将ECS实例的主网卡加入了安全组。您可以根据源IP地址、应用层协议、端口等配置精准的安全组规则,以实现对每块弹性网卡的流量进行安全访问控制。
修改安全组的名称、描述和标签:创建安全组后,您可以根据需要随时修改安全组的名称、描述信息和标签信息,以便更方便地识别特定的安全组。