安全组
安全组是一种虚拟防火墙,用于控制安全组内ECS实例的入流量和出流量,从而提高ECS实例的安全性。安全组具备状态检测和数据包过滤能力,您可以基于安全组的特性和安全组规则的配置在云端划分安全域。
安全组规则
组成部分
在添加或修改一条安全组规则时,需要设置的属性如下表所示。
属性 | 说明 |
---|---|
规则方向 | 网络类型影响规则方向的分类: 如果安全组网络类型为私有网络,安全组规则分为入方向、出方向,一条安全组规则同时适用于控制公网和内网访问。 如果安全组网络类型为标准网络,安全组规则分为公网入方向、公网出方向、入方向(即内网入方向)、出方向(即内网出方向),您需要为控制公网和内网访问分别创建安全组规则。 规则方向影响匹配要素: 入方向访问:访问请求和安全组规则的传输层协议、目的端口、源IP地址都相同时视为匹配成功。 出方向访问:访问请求和安全组规则的传输层协议、目的端口、目的IP地址都相同时视为匹配成功。 |
授权策略 | 支持允许和拒绝策略。如果两条安全组规则只有授权策略不同,则拒绝策略的安全组规则生效。 |
优先级 | 规则优先级按列表从下往上排列,列表下方优先级最高,您可抓取规则拖动调整优先级。 |
协议类型 | 传输层协议的类型,支持TCP、UDP、ICMP(IPv4)、ICMP(IPv6)和GRE。 |
端口范围 | 入方向访问和出方向访问的目的端口,可以设置一个或多个。 |
授权对象 | 支持针对以下对象授权: 单一IP地址:例如 192.168.0.100 、2408:4321:180:1701:94c7:bc38:3bfa: 。CIDR地址块:例如 192.168.0.0/24 、2408:4321:180:1701:94c7:bc38:3bfa:***/128 。其他安全组:授权其他安全组内的实例访问本安全组内的实例,实现内网互通。支持授权当前账号或其他账号下的安全组。 前缀列表:前缀列表是一些网络前缀(即CIDR地址块)的集合,授权对象为前缀列表时,这条安全组规则适用于前缀列表中的所有CIDR地址块,例如 192.168.0.0/24,172.16.0.0/16 。 |
安全组规则过滤访问请求流程
如果一台实例加入了多个安全组,则所有安全组的安全组规则均应用于该实例。检测到访问请求时,系统会逐一尝试匹配安全组规则。如果基于协议、端口、授权对象匹配到了多条安全组规则,则继续通过优先级和授权策略来判定最终生效的安全组规则,最终结果为允许访问时才建立会话。
如果访问出现异常,您可以按需添加或修改安全组规则,新的安全组规则会自动应用于安全组内所有实例。
规则优先级
- 安全组内规则具有优先级。规则优先级通过规则在列表中的位置来表示,列表底端规则优先级最高,最先应用;列表顶端规则优先级最低。
- 若有规则冲突,则默认应用位置更前的规则。
- 当有流量入/出绑定某安全组的实例时,将从安全组规则列表顶端的规则开始逐条匹配至最后一条。如果匹配某一条规则成功(允许通过/拒绝通过),则不再匹配该规则之后的规则。
多个安全组
一个实例可以绑定一个或多个安全组,当实例绑定多个安全组时,多个安全组将按照从上到下依次匹配执行,您可以随时调整安全组的优先级。
安全组模板
新建安全组时,您可以选择靠谱云为您提供的两种安全组模板:
- 放通全部端口模板:将会放通所有出入站流量。
- 放通常用端口模板:将会放通 TCP 22端口(Linux SSH 登录),80、443端口(Web 服务),3389端口(Windows 远程登录)、 ICMP 协议(Ping)、放通内网。
安全组实践建议
- 将安全组作为白名单使用,即默认拒绝所有访问,通过添加安全组规则设置允许访问的端口范围和授权对象。
- 添加安全组规则时遵循最小授权原则。例如,开放Linux实例的22端口用于远程登录时,建议仅允许特定的IP访问,而非所有IP(
0.0.0.0/0
)。 - 单个安全组内尽量保持规则简洁。单台实例可以加入多个安全组,单个安全组可以添加多条安全组规则,如果应用在单台实例上的安全组规则过多,会增加管理复杂度并引入风险。
- 不同类型应用的实例加入不同的安全组,分别维护安全组规则。例如,需要接受公网访问的实例加入同一个安全组,默认拒绝所有访问,然后设置仅暴露对外提供服务的端口(例如80、443等)。同时避免在接受公网访问的实例上提供其他服务,例如MySQL、Redis等,建议将内部服务部署在不接受公网访问的实例上,并加入单独的安全组。
- 避免直接修改线上环境使用的安全组。修改安全组设置后会自动应用于组内所有实例,您可以先克隆一个安全组并在测试环境调试,确保修改后实例间通信正常。
- 合理定义安全组名称,方便快速识别安全组的用途,在管理较多安全组时更加清晰。
安全组规则示例
如果您需要使用SSH密钥对远程连接Linux实例,以在私有网络安全组中添加安全组规则为例,如下表所示。
规则方向 | 授权策略 | 优先级 | 协议类型 | 端口范围 | 授权对象 |
---|---|---|---|---|---|
入方向 | 允许 | 1 | 自定义TCP | 目的:22/22 | 源:0.0.0.0/0 |
在未添加安全组规则时,普通安全组允许出方向访问。如果您希望将安全组作为白名单使用,可以设置默认拒绝所有出方向访问。以在专有网络安全组中添加安全组规则为例,如下表所示。
规则方向 | 授权策略 | 优先级 | 协议类型 | 端口范围 | 授权对象 |
---|---|---|---|---|---|
出方向 | 拒绝 | 100 | 全部 | 目的:-1/-1 | 目的:0.0.0.0/0 |