配置IP黑/白名单

当业务面临恶意IP盗刷或特定攻击时,可通过配置IP黑白名单,在CDN边缘节点根据访问来源对请求进行过滤。此功能允许您仅放行可信IP(白名单)或精准拦截已知恶意IP(黑名单),从而保护源站资源,降低安全风险。

使用场景

配置项

使用场景

IP白名单

  • 保护内部敏感数据:仅允许指定的IP访问敏感数据或资源,确保数据安全。

  • 第三方服务对接:确保只有可信的第三方服务IP能够访问CDN资源。

IP黑名单

  • 防止恶意攻击:检测到某IP频繁发起异常请求时,将其加入黑名单,禁止恶意的IP访问。

  • 地域访问限制:禁止高风险地区的IP访问(如某些政策限制的国家), 封禁来自某些国家或地区的IP地址段。

计费说明

配置IP黑/白名单功能本身不收费,但被拦截的请求仍会产生少量费用。

  • 计费原理:拦截发生在HTTP请求处理阶段(七层),此时CDN节点已经处理了请求,消耗了资源。

  • 计费项:

    • 流量费用:被拦截的请求会产生一次请求(包含HTTP头)和一次响应(403页面)的流量。这部分流量按标准CDN流量计费。

    • HTTPS请求数费用:如果域名使用HTTPS协议,由于TLS握手在IP拦截前已经完成,因此每次被拦截的HTTPS请求仍会计算一次HTTPS请求数费用。

注意事项

  • 一个域名只能配置一条IP黑名单或IP白名单规则,且两者互斥,无法同时配置。

  • 配置IP黑名单后,黑名单中的IP请求仍然可以到达CDN节点,但会被节点拒绝并返回403状态码。此时,CDN日志中会记录这些IP的请求信息,但这并不意味着IP黑名单未生效。

  • 少数互联网服务提供商(ISP)在特定区域可能会分配私有IP地址给用户端,导致CDN节点接收到的是用户的私有IP地址。

    说明

    私有IP地址范围有以下三个:

    • A类私有IP地址:10.0.0.0~10.255.255.255,子网掩码:10.0.0.0/8

    • B类私有IP地址:172.16.0.0~172.31.255.255,子网掩码:172.16.0.0/12

    • C类私有IP地址:192.168.0.0~192.168.255.255,子网掩码:192.168.0.0/16

操作步骤

  1. 登录CDN控制台

  2. 域名管理页面,找到目标域名,单击操作列的管理

  3. 在指定域名的左侧导航栏,单击访问控制

  4. IP黑/白名单区域,单击修改配置

  5. 您可以根据下方示例,快速进行配置。您也可以参考参数说明,添加适用于自身业务的配置。

    • 场景一:保护管理后台(白名单+规则引擎

      • 目标:仅允许公司办公室出口 IP 203.x.x.10 和 203.x.x.11 访问 /admin/ 路径。

      • 配置:

        • 类型:选择 白名单

        • 规则:填入 203.x.x.10 和 203.x.x.11(换行分隔)。

        • 高级配置-IP规则:选择使用真实建连IP作为判断依据

        • 高级配置-规则条件:在规则引擎页面配置一个规则,规则内容为URI包含/admin/*其中任意一个,忽略大小写。然后在规则条件选择此规则。

          image

      • 结果:只有来自这两个 IP 的请求才能访问 /admin/ 目录,其他所有 IP 对该目录的访问都将被拒绝并返回 403 状态码。

    • 场景二:允许合作伙伴的 IPv6 网段访问(白名单

      • 目标:仅允许合作伙伴的 IPv6 网段 FC00:0AA3:0000:0000:0000:0000:0000:0000/48 访问。

      • 配置:

        1. 类型:选择 白名单

        2. 规则:填入 FC00:0AA3:0000:0000:0000:0000:0000:0000/48

        3. 高级配置-IP规则:选择使用真实建连IP作为判断依据

      • 结果:只有来自该 IPv6 地址范围的请求可以访问您的域名资源。

    • 场景三:紧急封禁攻击源(黑名单

      • 目标:发现一个来自198.x.x.0/24网段的 CC 攻击,需紧急封禁。

      • 配置:

        1. 类型:选择 黑名单

        2. 规则:填入 198.x.x.0/24

        3. 高级配置-IP规则:选择 使用真实建连IP作为判断依据

      • 结果:所有来自 198.x.x.0/24 网段的 IP 请求都将被 CDN 节点拒绝。

参数说明

参数

说明

类型

选择黑名单白名单

  • 黑名单:列表中的IP地址将被拒绝访问,返回403状态码。

  • 白名单:仅允许列表中的IP地址访问,其他所有IP都将被拒绝。

规则

规则格式要求

  1. 支持输入IP地址或者IP地址段。

  2. 输入多个IP地址或者IP地址段时,使用换行符分隔。

  3. 支持IPv4类型的地址或者地址段:

    1. IPv4地址示例:192.168.0.1

    2. IPv4地址段示例:192.168.0.0/24

    3. 不支持输入通配网络地址0.0.0.0/0,如果需要表示全量IPv4地址,可以用以下两个子网来表示:

      1. 0.0.0.0/1

      2. 128.0.0.0/1

  4. 支持IPv6类型的地址或者地址段:

    1. IPv6地址示例:FC00:AA3:0:23:3:300:300A:1234

    2. IPv6地址段示例:FC00:0AA3:0000:0000:0000:0000:0000:0000/48。

    3. 地址中的英文字母不区分大小写,即支持全大写、全小写或者大小写混合,例如:FC00:AA3:0:23:3:300:300A:1234fc00:0aa3:0000:0023:0003:0300:300a:1234

    4. 不支持: :缩写格式,例如:不支持FC00:0AA3::0023:0003:0300:300A:1234

    5. 不支持输入通配网络地址0000:0000:0000:0000:0000:0000:0000:0000/0,如果需要表示全量IPv6地址,可以用以下两个子网来表示:

      1. 0000:0000:0000:0000:0000:0000:0000:0000/1

      2. 8000:0000:0000:0000:0000:0000:0000:0000/1

规则长度限制

规则输入框最大支持输入30 KB长度的字符,考虑到IP地址或者IP地址段的字符串长度有长有短,如果按平均长度来算,最多可配置大约700IPv6地址/地址段或者2000IPv4地址/地址段。如果您有更多的IP地址封禁需求,请开通ESA安全防护功能(支持海量IP封禁和按区域封禁服务),具体操作方法,请参见如何从CDN、DCDN升级到ESAIP访问规则配置

IP规则

支持选择以下三种规则:

  1. 使用用户的x-forwarded-for请求头作为判断依据(默认规则)

    当客户端均通过可信代理访问,且代理会正确设置x-forwarded-for头时,推荐使用该规则。

  2. 使用真实建连IP作为判断依据

    当客户端直接连接CDN,无中间代理服务器;或希望基于代理服务器IP进行访问控制时,推荐使用该规则。

  3. 同时使用x-forwarded-for和真实建连IP作为判断依据

    当客户端为混合网络环境,部分用户直连,部分用户通过代理访问时,推荐使用该规则。

规则条件

规则条件能够对用户请求中携带的各种参数信息进行识别,以此来决定某个配置是否对该请求生效。

  • 不使用:不使用规则条件。

  • 若需新增或编辑规则条件,请在规则引擎中进行管理。

拓展阅读:阿里云CDN如何识别客户端IP

CDN节点通过以下两种方式识别客户端IP,这两种方式各有优劣:

  • 真实建连IP (TCP Connection IP)

    • 定义:客户端与CDN边缘节点建立TCP连接时所使用的IP地址。

    • 优点:无法被伪造,安全性最高。

    • 缺点:当用户通过代理(如公司网络出口、NAT设备)访问时,此IP为代理服务器的IP,无法反映真实的客户端来源。

  • X-Forwarded-For (XFF) 请求头

    • 定义:一个HTTP请求头字段,用于记录请求经过的每一个代理服务器的IP地址。CDN通常取其最左侧的IP作为客户端IP。

    • 优点:能够穿透代理,获取到真实的客户端IP。

    • 缺点:此请求头可由客户端任意伪造,存在严重安全风险。恶意用户可通过伪造XFF头来绕过基于此IP的访问控制。

当客户端直接访问 CDN 时,这两个 IP 通常是相同的。但如果客户端通过代理服务器访问 CDN,这两个 IP 将会不同。例如,客户端真实 IP 为 10.10.10.10,代理服务器 IP 为 192.168.0.1,则:

  • X-Forwarded-For 请求头的值可能为 10.10.10.10, 192.168.0.1

  • 客户端真实 IP 为 10.10.10.10

  • 真实建连 IP 为 192.168.0.1

针对上述IP获取方式,CDN提供三种校验模式,以平衡安全性与业务灵活性。

IP地址校验模式

使用场景

工作原理

安全性评估

使用用户的x-forwarded-for请求头作为判断依据(默认)

客户端均通过可信代理访问,且代理会正确设置XFF头。

仅提取并匹配x-forwarded-for请求头中最左侧的IP地址。

x-forwarded-for请求头可被客户端伪造,恶意用户可轻易绕过黑名单限制。

使用真实建连IP作为判断依据

客户端直接连接CDN,无中间代理服务器;或希望基于代理服务器IP进行访问控制。

仅使用客户端与CDN节点建立TCP连接的IP地址进行匹配。

建连IP无法伪造,提供最可靠的防护。

同时使用x-forwarded-for和真实建连IP作为判断依据

混合网络环境,部分用户直连,部分用户通过代理访问。

黑名单x-forwarded-for头中的IP或真实建连IP,任意一个命中规则即拦截。

白名单x-forwarded-for头中的IP或真实建连IP,任意一个命中规则即放行。

兼顾了识别真实客户端IP的灵活性与建连IP的安全性,是大多数场景下的最佳选择。

常见问题

相关API

添加IP黑/白名单配置

调用 BatchSetCdnDomainConfig 接口配置IP黑/白名单,相关参数参考配置IP白名单配置IP黑名单

更新IP黑/白名单配置

调用 BatchSetCdnDomainConfig 接口更新IP黑/白名单,相关参数参考配置IP白名单配置IP黑名单

重要

接口的更新逻辑为:仅更新传入的参数。例如,若在请求中传入了ip_list参数而未传入ip_acl_xfwd,则ip_acl_xfwd不会被更新。

该接口仅支持对IP列表IP规则规则条件进行更新,不允许更改配置类型。例如,无法通过该接口将IP黑名单配置更改为IP白名单配置

如果您需要更改配置类型(例如,将IP黑名单配置更改为IP白名单配置),需按照以下步骤操作:

  • 调用删除配置接口,移除现有的IP黑名单配置。

  • 调用添加配置接口,重新添加IP白名单配置。

删除IP黑/白名单配置

步骤一:查询ConfigId

调用查询域名配置接口,查询配置的ConfigId。如果您知道对应配置的ConfigId,请忽略此步骤,参考步骤二进行删除配置。

步骤二:删除配置

调用DeleteSpecificConfig接口,使用ConfigId删除配置。