云服务器内容精选

  • 请求示例 在id为e9a7731d-5bd9-4250-a524-b9a076fd5629的网络ACL中更新入方向规则e9a7731d-5bd9-4250-a524-b9a076fd5629 PUT https://{Endpoint}/v3/{project_id}/vpc/firewalls/e9a7731d-5bd9-4250-a524-b9a076fd5629/update-rules { "firewall" : { "ingress_rules" : [ { "id" : "e9a7731d-5bd9-4250-a524-b9a076fd5629", "name" : "network_acl_rule test2", "description" : "network_acl_rule test2", "action" : "allow", "protocol" : "tcp", "ip_version" : "4", "source_ip_address" : "192.168.3.0/24", "destination_ip_address" : "192.168.6.0/24", "source_port" : "30-40,60-90", "destination_port" : "40-60,70-90", "source_address_group_id" : null, "destination_address_group_id" : null } ] } }
  • 响应示例 状态码: 200 OK { "firewall" : { "id" : "e9a7731d-5bd9-4250-a524-b9a076fd5629", "name" : "network_acl_test1", "description" : "network_acl_test1", "project_id" : "9476ea5a8a9849c38358e43c0c3a9e12", "created_at" : "2022-04-07T07:30:46Z", "updated_at" : "2022-04-07T07:30:46Z", "admin_state_up" : true, "enterprise_project_id" : "158ad39a-dab7-45a3-9b5a-2836b3cf93f9", "status" : "ACTIVE", "tags" : [ ], "ingress_rules" : [ { "id" : "e9a7731d-5bd9-4250-a524-b9a076fd5629", "name" : "network_acl_rule test2", "description" : "network_acl_rule test2", "action" : "allow", "project_id" : "9476ea5a8a9849c38358e43c0c3a9e12", "protocol" : "tcp", "ip_version" : "4", "source_ip_address" : "192.168.3.0/24", "destination_ip_address" : "192.168.6.0/24", "source_port" : "30-40,60-90", "destination_port" : "40-60,70-90", "source_address_group_id" : null, "destination_address_group_id" : null } ], "egress_rules" : [ { "id" : "f9a7731d-5bd9-4250-a524-b9a076fd5629", "name" : "network_acl_rule test", "description" : "network_acl_rule test", "action" : "allow", "project_id" : "9476ea5a8a9849c38358e43c0c3a9e12", "protocol" : "tcp", "ip_version" : "4", "source_ip_address" : "192.168.3.0/24", "destination_ip_address" : "192.168.6.0/24", "source_port" : "30-40,60-90", "destination_port" : "40-60,70-90", "source_address_group_id" : null, "destination_address_group_id" : null } ], "associations" : [ { "virsubnet_id" : "8359e5b0-353f-4ef3-a071-98e67a34a143" } ] } }
  • 请求示例 更新id为e9a7731d-5bd9-4250-a524-b9a076fd5629的网络ACL,名称更新为network_acl_test1,描述更新为network_acl_test1,开启ACL。 PUT https://{Endpoint}/v3/{project_id}/vpc/firewalls/{firewall_id} { "firewall": { "name": "network_acl_test1", "description": "network_acl_test1", "admin_state_up": true } }
  • 响应示例 状态码: 200 OK { "firewall" : { "id" : "e9a7731d-5bd9-4250-a524-b9a076fd5629", "name" : "network_acl_test1", "description" : "network_acl_test1", "project_id" : "9476ea5a8a9849c38358e43c0c3a9e12", "created_at" : "2022-04-07T07:30:46Z", "updated_at" : "2022-04-07T07:30:46Z", "admin_state_up" : true, "enterprise_project_id" : "158ad39a-dab7-45a3-9b5a-2836b3cf93f9", "status" : "ACTIVE", "tags" : [ ], "ingress_rules" : [ { "id" : "e9a7731d-5bd9-4250-a524-b9a076fd5629", "name" : "network_acl_rule test", "description" : "network_acl_rule test", "action" : "allow", "project_id" : "9476ea5a8a9849c38358e43c0c3a9e12", "protocol" : "tcp", "ip_version" : "4", "source_ip_address" : "192.168.3.0/24", "destination_ip_address" : "192.168.6.0/24", "source_port" : "30-40,60-90", "destination_port" : "40-60,70-90", "source_address_group_id" : null, "destination_address_group_id" : null } ], "egress_rules" : [ { "id" : "f9a7731d-5bd9-4250-a524-b9a076fd5629", "name" : "network_acl_rule test", "description" : "network_acl_rule test", "action" : "allow", "project_id" : "9476ea5a8a9849c38358e43c0c3a9e12", "protocol" : "tcp", "ip_version" : "4", "source_ip_address" : "192.168.3.0/24", "destination_ip_address" : "192.168.6.0/24", "source_port" : "30-40,60-90", "destination_port" : "40-60,70-90", "source_address_group_id" : null, "destination_address_group_id" : null } ], "associations" : [ { "virsubnet_id" : "8359e5b0-353f-4ef3-a071-98e67a34a143" } ] } }
  • 流量匹配网络ACL规则的顺序 一个子网只能绑定一个网络ACL,当网络ACL存在多条规则时,流量按照规则的优先级进行匹配。优先级的数字越小,优先级越高,越先执行该规则。默认规则优先级的值为“*”,优先级最低。 以入方向的流量为例,子网的网络流量将按照以下原则匹配网络ACL规则,入方向和出方向的流量匹配顺序相同。 当流量匹配上自定义规则,则根据规则策略决定流量走向。 当策略为拒绝时,则拒绝该流量流入子网。 当策略为允许时,则允许该流量流入子网。 当流量未匹配上任何自定义规则,则执行默认规则,拒绝流量流入子网。 图2 网络ACL匹配顺序
  • 应用场景 由于应用层需要对外提供服务,因此入方向规则必须放通所有地址,如何防止恶意用户的非正常访问呢? 解决方案:通过网络ACL添加拒绝规则,拒绝恶意IP的访问。 隔离具有漏洞的应用端口,比如Wanna Cry,关闭445端口。 解决方案:通过网络ACL添加拒绝规则,拒绝恶意协议和端口,比如TCP:445端口。 子网内的通信无防护诉求,仅有子网间的访问限制。 解决方案:通过网络ACL设置子网间的访问规则 对访问频繁的应用,调整安全规则顺序,提高性能。 解决方案:网络ACL支持规则编排,可以把访问频繁的规则置顶。
  • 网络ACL基本信息 您的VPC默认没有网络ACL。当您需要时,可以创建自定义的网络ACL并将其与子网关联。关联子网后,网络ACL默认拒绝所有出入子网的流量,直至添加放通规则。 网络ACL可以同时关联多个子网,但一个子网只能关联一个网络ACL。 每个新创建的网络ACL最初都为未激活状态,直至您关联子网为止。 网络ACL是有状态的。如果您从实例发送一个出站请求,且该网络ACL的出方向规则是放通的话,那么无论其入方向规则如何,都将允许该出站请求的响应流量流入。同理,如果该网络ACL的入方向规则是放通的,那无论出方向规则如何,都将允许该入站请求的响应流量可以流出。 网络ACL使用连接跟踪来标识进出实例的流量信息,入方向和出方向网络ACL规则配置变更,对原有流量不会立即生效。 当您在网络ACL内增加、删除、更新规则,或者在网络ACL内添加、移出子网时,由入方向/出方向流量建立的连接,已建立的长连接不会断开,依旧遵循原有网络ACL规则。入方向/出方向流量新建立的连接,将会匹配新的网络ACL出方向规则。 对于已建立的长连接,流量断开后,不会立即建立新的连接,需要超过连接跟踪的老化时间后,才会新建立连接并匹配新的规则。比如,对于已建立的ICMP协议长连接,当流量中断后,需要超过老化时间30s后,将会新建立连接并匹配新的规则,详细说明如下: 不同协议的连接跟踪老化时间不同,比如已建立连接状态的TCP协议连接老化时间是600s,ICMP协议老化时间是30s。对于除TCP和ICMP的其他协议,如果两个方向都收到了报文,连接老化时间是180s,如果只是单方向收到了报文,另一个方向没有收到报文,则连接老化时间是30s。 TCP协议处于不同状态下的连接老化时间也不相同,比如TCP连接处于ESTABLISHED(连接已建立)状态时,老化时间是600s,处于FIN-WAIT(连接即将关闭)状态时,老化时间是30s。
  • 网络ACL默认规则 每个网络ACL都包含一组默认规则,如下所示: 默认放通同一子网内的流量。 默认放通目的IP地址为255.255.255.255/32的广播报文。用于配置主机的启动信息。 默认放通目的网段为224.0.0.0/24的组播报文。供路由协议使用。 默认放通目的IP地址为169.254.169.254/32,TCP端口为80的metadata报文。用于获取元数据。 默认放通公共服务预留网段资源的报文,例如目的网段为100.125.0.0/16的报文。 除上述默认放通的流量外,其余出入子网的流量全部拒绝,如表1所示。该规则不能修改和删除。 表1 网络ACL默认规则 方向 优先级 动作 协议 源地址 目的地址 说明 入方向 * 拒绝 全部 0.0.0.0/0 0.0.0.0/0 拒绝所有入站流量 出方向 * 拒绝 全部 0.0.0.0/0 0.0.0.0/0 拒绝所有出站流量
  • 响应示例 状态码: 200 OK { "firewall" : { "id" : "ce1ce0c8-d714-11ea-a863-fa16408859a1", "domain_id" : "2b76febbe5d34eac85d26435c1f15809", "name" : "fw-nhsr", "description" : "xx", "admin_state_up" : true, "status" : "INACTIVE", "ingress_firewall_policy" : { "id" : "ff15fc0e-b80d-4d00-89d0-0c1fbb3d98b9" }, "egress_firewall_policy" : { "id" : "b0ea29d4-6350-5e79-9605-89e3837480d7" }, "ingress_firewall_rule_count" : 0, "egress_firewall_rule_count" : 0 } }
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表2 请求Body参数 参数 是否必选 参数类型 描述 firewall 是 CreateFirewallOption object 创建网络ACL请求体。 表3 CreateFirewallOption 参数 是否必选 参数类型 描述 name 是 String 中文字符、字母、数字、中划线和下划线组成,长度为1~64个字符 最小长度:1 最大长度:64 description 否 String 网络ACL描述。 取值范围:0-64 最小长度:0 最大长度:64
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 firewall Firewall object 网络ACL对象。 表5 Firewall 参数 参数类型 描述 id String 网络ACL ID name String 网络ACL名称。 最小长度:1 最大长度:64 admin_state_up Boolean 网络ACL使能开关。 取值范围:true(开启),false(关闭)。默认为true 缺省值:true status String 网络ACL状态。 取值范围:INACTIVE description String 网络ACL描述。 最小长度:0 最大长度:64 domain_id String 租户domainID 最小长度:0 最大长度:36 egress_firewall_policy FirewallPolicyResp object 出方向网络ACL策略。 创建或查询防火墙列表时只返回ACL策略ID。 egress_firewall_rule_count Integer 出方向网络ACL规则个数。 ingress_firewall_policy FirewallPolicyResp object 入方向网络ACL策略。 创建或查询防火墙列表时只返回ACL策略ID。 ingress_firewall_rule_count Integer 入方向网络ACL规则个数。 表6 FirewallPolicyResp 参数 参数类型 描述 id String 网络ACL策略ID。 name String 网络ACL策略名称。 最小长度:0 最大长度:64 firewall_rules Array of FirewallRuleResp objects 网络ACL规则列表对象。 数组长度:0 - 1 insert_after String ACL规则ID,表示在此ACL规则之后添加ACL规则 insert_before String ACL规则ID,表示在此ACL规则之前添加ACL规则 表7 FirewallRuleResp 参数 参数类型 描述 action String 策略是否允许 取值范围:allow,deny,reject description String 网络ACL规则描述。 最小长度:0 最大长度:64 destination_ip_address String 目的地IP地址,IPv4或IPv6的CIDR格式 destination_port String 目的地端口范围 取值范围:整数,比如80,或者以"-"隔开的范围,比如80-90 enabled Boolean 网络ACL规则使能开关。 取值范围:true,false 缺省值:true id String 网络ACL规则ID。 进行更新规则时,如果operate_type为add,则该值为空。 ip_version Integer IP协议版本 取值范围:4, 表示ipv4;6, 表示ipv6 name String 网络ACL规则名称。 最小长度:0 最大长度:64 operate_type String 网络ACL规则操作状态,作为请求时取值为"add"/"modify"/"delete",作为返回值时为"normal"。 当请求更新规则时,本参数值为delete时,除id之外,本请求体其他参数均可为空。 protocol String IP协议,为any时代表所有协议 取值范围: icmp,tcp,udp,icmpv6,any source_ip_address String 源IP地址,IPv4或IPv6的CIDR格式 source_port String 源地端口范围 取值范围:整数,比如80,或者以"-"隔开的范围,比如80-90
  • 约束与限制 每个网络ACL都包含一组默认规则,如下所示: 默认放通同一站点下同一子网内的流量。 默认放通目的IP地址为255.255.255.255/32的广播报文。用于配置主机的启动信息。 默认放通目的网段为224.0.0.0/24的组播报文。供路由协议使用。 默认放通目的IP地址为169.254.169.254/32,TCP端口为80的metadata报文。用于获取元数据。 默认放通公共服务预留网段资源的报文,例如目的网段为100.125.0.0/16的报文。 除上述默认放通的流量外,其余出入子网的流量全部拒绝,如表1所示。该规则不能修改和删除。 表1 网络ACL默认规则 方向 优先级 动作 协议 源地址 目的地址 说明 入方向 * 拒绝 全部 0.0.0.0/0 0.0.0.0/0 拒绝所有入站流量 出方向 * 拒绝 全部 0.0.0.0/0 0.0.0.0/0 拒绝所有出站流量 网络连通性: 由于归属于不同虚拟私有云的多个子网网络不连通,则为同一个网络ACL下归属于不同的虚拟私有云的多个子网配置网络连通的访问规则是不生效的。 由于归属于不同边缘站点的多个子网之间网络不连通,则为网络ACL配置跨站点多个子网连通的访问规则是不生效的。 规则优先级: 网络ACL规则的优先级使用“优先级”值来表示,优先级的值越小,优先级越高,最先应用。优先级的值为“*”的是默认规则,优先级最低。 多个网络ACL规则冲突,优先级高的规则优先生效。如果某个规则需要优先或落后生效,可在对应规则(需要优先或落后于某个规则生效的规则)前面或后面插入此规则。
  • 允许某些协议端口的访问 在本示例中,假设子网内的某个实例做Web服务器,入方向需要放通HTTP 80和HTTPS 443端口,出方向全部放通。当子网开启网络ACL时,需要同时配置网络ACL和安全组规则。 网络ACL配置 需要添加的网络ACL入方向、出方向规则如表2所示。 表2 网络ACL规则 方向 动作 协议 源地址 源端口范围 目的地址 目的端口范围 说明 入方向 允许 TCP 0.0.0.0/0 1-65535 0.0.0.0/0 80 允许所有IP地址通过HTTP协议入站访问子网内的实例的80端口 入方向 允许 TCP 0.0.0.0/0 1-65535 0.0.0.0/0 443 允许所有IP地址通过HTTPS协议入站访问子网内的实例的443端口 出方向 允许 全部 0.0.0.0/0 全部 0.0.0.0/0 全部 允许子网内所有出站流量的数据报文通过 安全组配置 需要添加的安全组入方向、出方向规则如表3所示。 表3 安全组规则 方向 协议/应用 端口 源地址/目的地址 说明 入方向 TCP 80 源地址:0.0.0.0/0 允许所有IP地址通过HTTP协议入站访问安全组内的实例的80端口 入方向 TCP 443 源地址:0.0.0.0/0 允许所有IP地址通过HTTPS协议入站访问安全组内的实例的443端口 出方向 全部 全部 目的地址:0.0.0.0/0 允许安全组内所有出站流量的数据报文通过 网络ACL相当于一个额外的保护层,即使不小心配置了比较宽松的安全组规则,网络规则也仅允许HTTP 80和HTTPS 443的访问,拒绝其他的入站访问流量。