您可以添加安全组规则,允许或禁止安全组内的ECS实例对公网或私网的访问:

  • VPC网络:只需要设置出方向或入方向的规则,不区分内网和公网。专有网络(VPC)实例的公网访问通过私网网卡映射完成,所以,您在实例内部看不到公网网卡,在安全组里也只能设置内网规则。您设置的安全组规则同时对内网和公网生效。
  • 经典网络:需要分别设置公网或内网的出方向或入方向规则。

所有的安全组,在未添加任何安全组规则之前,无论哪种网卡类型,出方向允许所有访问,入方向拒绝所有访问。所以,在添加安全组规则时,建议出方向只设置拒绝访问的规则,入方向只设置允许访问的规则。

安全组规则的变更会自动应用到安全组内的ECS实例上。

前提条件

您已经创建了一个安全组,具体操作,请参见 创建安全组

您已经知道自己的实例需要允许或禁止哪些公网或内网的访问。

操作步骤

  1. 登录 云服务器ECS管理控制台
  2. 在左侧导航栏中,选择 网络和安全 > 安全组
  3. 选择地域。
  4. 找到要配置授权规则的安全组,在 操作 列中,单击 配置规则
  5. 安全组规则 页面上,单击 添加安全组规则
    说明
    • 如果您不需要设置ICMP、GRE协议规则,或者您想使用下表中列出的协议的默认端口,单击 快速创建规则
    • 每个安全组的入方向规则与出方向规则的总数不能超过100条。
    协议 SSH telnet HTTP HTTPS MS SQL
    端口 22 23 80 443 1433
    协议 Oracle MySQL RDP PostgreSQL Redis
    端口 1521 3306 3389 5432 6379
    说明
    各个参数配置说明,请参见第6步描述。
  6. 在弹出的对话框中,设置以下参数:
    • 网卡类型
      • 如果是VPC类型的安全组,不需要选择这个参数。需要注意以下信息:
        • 如果您的实例能访问公网,可以设置公网和内网的访问规则。
        • 如果您的实例不能访问公网,只能设置内网的访问规则。
      • 如果是经典网络的安全组,选择 公网内网
    • 规则方向
      • 出方向:是指ECS实例访问内网中其他ECS实例或者公网上的资源。
      • 入方向:是指内网中的其他ECS实例或公网上的资源访问ECS实例。
    • 授权策略:选择 允许拒绝
      说明
      这里的 拒绝 策略是直接丢弃数据包,不给任何回应信息。如果2个安全组规则其他都相同只有授权策略不同,则 拒绝 授权生效,接受 授权不生效。
    • 协议类型端口范围:端口范围的设置受协议类型影响。下表是协议类型与端口范围的关系。
      协议类型 端口范围 应用场景
      全部 显示为-1/-1,表示不限制端口。不能设置。 可用于完全互相信任的应用场景。
      全部ICMP 显示为-1/-1,表示不限制端口。不能设置。 使用 ping 程序检测实例之间的通信状况。
      全部GRE 显示为-1/-1,表示不限制端口。不能设置。 用于VPN服务。
      自定义TCP 自定义端口范围,有效的端口值是1 ~ 65535,端口范围的合法格式是开始端口/结束端口。即使是一个端口,也需要采用合法格式设置端口范围,比如:80/80表示端口80。 可用于允许或拒绝一个或几个连续的端口。
      自定义UDP
      SSH 显示为22/22。

      连接ECS实例后您能修改端口号,具体操作,请参见 服务器默认远程端口修改

      用于SSH远程连接到Linux实例。
      TELNET 显示为23/23。 用于Telnet远程登录实例。
      HTTP 显示为80/80。 实例作为网站或Web应用服务器。
      HTTPS 显示为443/443。 实例作为支持HTTPS协议的网站或Web应用服务器。
      MS SQL 显示为1433/1433。 实例作为MS SQL服务器。
      Oracle 显示为1521/1521。 实例作为Oracle SQL服务器。
      MySQL 显示为3306/3306。 实例作为MySQL服务器。
      RDP 显示为3389/3389。

      连接ECS实例后您能修改端口号,具体操作,请参见 服务器默认远程端口修改

      实例是Windows实例,需要远程桌面连接实例。
      PostgreSQL 显示为5432/5432。 实例作为PostgreSQL服务器。
      Redis 显示为6379/6379。 实例作为Redis服务器。
      说明
      公网出方向的STMP端口25默认受限,无法通过安全组规则打开,但是您可以 申请解封端口25。其他常用端口信息,请参见 ECS 实例常用端口介绍
    • 授权类型授权对象:授权对象的设置受授权类型影响,以下是两者之间的关系。
      授权类型 授权对象
      地址段访问 填写单一IP地址或者CIDR网段格式,如:12.1.1.1或13.1.1.1/25。仅支持IPv4。如果填写0.0.0.0/0表示允许或拒绝所有IP地址的访问,设置时请务必谨慎。

      关于CIDR格式介绍,请参见 ECS实例子网划分和掩码表示方法

      安全组访问 只对内网有效。授权本账号或其他账号下某个安全组中的实例访问本安全组中的实例,实现内网互通。
      • 本账号授权:选择同一账号下的其他安全组ID。如果是VPC网络的安全组,必须为同一个VPC的安全组。
      • 跨账号授权:填写目标安全组ID,以及对方账号ID。在 账号管理 > 安全设置 里查看账号ID。
      因为安全组访问只对内网有效,所以,对VPC网络实例,安全组访问的规则仅适用于内网访问,不适用于公网访问。公网访问只能通过 地址段访问 授权。
      说明
      出于安全性考虑,经典网络的内网入方向规则,授权类型优先选择 安全组访问。如果选择 地址段访问,则只能授权单个IP地址,授权对象的格式只能是 a.b.c.d/32,仅支持IPv4,子网掩码必须是 /32。
    • 优先级:1 ~ 100,数值越小,优先级越高。更多优先级信息,参见 ECS安全组规则优先级说明


  7. 单击 确定,即成功地为指定安全组添加了一条安全组规则。

安全组规则一般是立即生效,但是也可能有稍许延迟。

查看安全组规则是否生效

假设您在实例里安装了Web服务,并在一个安全组里添加了一条安全组规则:公网入方向,允许所有IP地址访问实例的TCP 80端口。

Linux实例

如果是安全组中的一台Linux实例,按以下步骤查看安全组规则是否生效。

  1. 使用用户名密码验证连接Linux实例
  2. 运行以下命令查看TCP 80是否被监听。
    netstat -an | grep 80

    如果返回以下结果,说明TCP 80端口已开通。

    tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
  3. 在浏览器地址栏里输入 http://实例公网IP地址。如果访问成功,说明规则已经生效。
Windows实例

如果是安全组中的一台Windows实例,按以下步骤查看安全组规则是否生效。

  1. 使用软件连接Windows实例
  2. 运行 命令提示符,输入以下命令查看TCP 80是否被监听。
    netstat -aon | findstr :80

    如果返回以下结果,说明TCP 80端口已开通。

    TCP    0.0.0.0:80           0.0.0.0:0              LISTENING       1172
  3. 在浏览器地址栏里输入 http://实例公网IP地址。如果访问成功,说明规则已经生效。

ECS安全组规则优先级说明

安全组规则的优先级可以设为1 ~ 100的任一个数值,数值越小,优先级越高。

ECS实例可以加入不同的安全组。无论是同一个安全组内或不同安全组之间,如果安全组规则互相矛盾,即协议类型、端口范围、授权类型、授权对象都相同,最终生效的安全组规则如下:

  • 如果 优先级 相同,则 拒绝 授权规则生效,接受 授权规则不生效。
  • 如果 优先级 不同,则优先级高的规则生效,与 授权策略 的设置无关。

相关文档