网站业务接入DDoS防护后,如果遭受了CC攻击,可以通过对HTTP字段进行针对性的特征分析及规则配置,增强CC攻击的识别拦截效力,用于盗链防护、网站管理后台保护等场景。本文介绍如何设置CC防护策略。
CC攻击防御产品介绍
CC攻击(Challenge Collapsar)是分布式拒绝服务(DDoS)攻击的一种类型,通常情况下指应用层攻击(Application Layer Attack)。通过控制某些主机向目标网络服务器不停地发送伪造的HTTP/HTTPS请求,比如频繁请求一个需要消耗大量服务器资源的搜索页面或者登录页面,以消耗服务器的资源或网络带宽,导致网站响应变慢,无法处理正常用户的访问请求。
与传统的网络层DDoS攻击不同,CC攻击更加隐蔽,因为它模仿的是正常的用户请求。为了提升网站业务安全性,阿里云提供了DDoS高防和Web应用防火墙产品用于防御CC攻击。
DDoS高防
DDoS高防侧重于防护大流量攻击,目的是确保网络基础设施不受带宽耗尽和资源耗尽的影响,通常部署在网络边缘。DDoS高防提供AI智能防护、自定义CC安全防护策略,用于防御CC攻击。
AI智能防护:即基于阿里云的大数据能力,能够自学习网站业务流量基线,结合算法分析攻击异常并自动下发精准访问控制规则,动态调整业务防护模型,帮助您及时发现并阻断恶意Web攻击,例如恶意Bot、HTTP Flood攻击。将网站接入DDoS高防后,默认开启AI智能防护。关于AI智能防护的详细介绍,请参见设置AI智能防护。
自定义CC防护策略:即本文介绍的内容。您可以在网站遭受CC攻击后,通过分析HTTP请求的字段特征,为网站设置精准访问控制规则或频率控制规则,通过频率控制、行为分析、IP黑名单等措施,更好的防御DDoS攻击。
Web应用防火墙(WAF)
WAF主要是分析进入应用层的HTTP/HTTPS流量,对网站或者App的业务流量进行恶意特征识别及防护,避免网站服务器被恶意入侵导致性能异常等问题。WAF采用多种手段来识别和防御应用层攻击,包括输入验证、针对特定漏洞的规则集、会话跟踪和防护机制(如验证码、JS挑战、Cookie验证等)。WAF通常部署在网络接近服务器端的位置,可以更紧密地监控到达服务器的流量,并执行应用层的安全策略。
两种产品的防护侧重点不同,如果仅针对CC攻击,如果您的CC攻击水位很高,例如网站已无法正常访问,优先建议DDoS高防。如果CC攻击水位不是很高,例如网站只是响应变慢,优先建议Web应用防火墙。但为达到最佳的保护效果,建议您同时部署两种产品,以确保网站业务不受到恶意流量和攻击者的破坏。
CC防护策略配置建议
建议在网站遭受CC攻击时配置,通过本功能加强防御,放行或者过滤指定特征的流量。日常防护不推荐使用本功能。
您可以通过如下方式查看HTTP请求中是否存在明显特征,例如来源IP一样、URI中包含相同字段等,根据特征配置CC防护策略。
CC防护策略介绍
根据设置规则时是否开启频率设置,分为精准访问控制规则和频率控制规则。匹配原则是先匹配精准访问控制规则,再匹配频率控制规则,只要匹配某一个规则,则不再向后匹配。
说明DDoS高防的AI智能防护自动下发的精准访问控制规则,即
smartcc_
开头的规则,也遵循该匹配逻辑。为了提升CC攻击默认防护效果,产品防护引擎内置了两条频次控制规则,具体规则内容已展示在频率控制规则配置区域,规则名称为内置CC防护规则-基于客户端频次、内置CC防护规则-基于源站响应码。当前仅支持规则的查看和删除操作。
规则名称 | 精准访问控制规则 | 频率控制规则 |
说明 | 满足相关匹配条件即执行动作。 说明 如果您在精准访问控制规则中查看到 | 在统计时长内,当统计对象满足匹配条件并达到阈值,才执行动作。 重要 内置CC防护规则删除操作后无法恢复,请您谨慎操作。如您确认要删除该规则,建议您在删除内置CC防护规则后,结合您需要防护的重要业务域名或接口业务访问频次和特征,自定义配置频次防护规则,从而提升CC攻击防护效果。 |
规则生效时长 | 由您设置,可以设置为永久或自定义时长(5~120分钟)。 说明 自定义时长时,到期后该规则会自动删除。 | 永久生效。 |
匹配原则 | 匹配所有规则,当访问请求命中多条规则时,执行列表中排名靠前的规则的动作。 例如,如果访问请求同时命中①和②,则执行①对应的动作。 | 匹配所有规则,当访问请求命中多条规则时,随机执行某一条规则的动作。 |
限制条件 | 每个域名最多设置20个精准访问控制规则。 | 每个域名最多设置20个频率控制规则。 |
Cookie植入说明
七层接入的业务会在以下两种情况下被植入Cookie。
场景1:域名的网站业务DDoS防护策略,开启CC安全防护功能。
启用CC安全防护策略后,DDoS高防产品将会在客户端(如浏览器)植入Cookie用于区分统计不同客户端,用户在访问网站时会在HTTP报文中带上植入的Cookie信息,DDoS高防将结合统计结果判断业务流量中是否存在CC攻击行为,并启动CC攻击清洗策略。
场景2:CC防护策略规则动作开启“挑战”模式。
CC防护策略启用“挑战”规则动作后,将会在HTTP报文的Header中植入Cookie用于获取客户端浏览器的指纹信息,收集的指纹信息包括HTTP报文的host字段、浏览器高度和宽度。当访问流量命中规则后,DDoS高防将对客户端发起挑战探测,并结合浏览器的指纹统计信息判断客户端是否有异常,识别异常客户端的CC攻击行为。
如需停止DDoS高防向业务植入Cookie的行为,您可以在控制台的
页面单击操作列的编辑,将网站配置中的cookie设置开关关闭,但同时DDoS高防也将无法通过CC安全防护策略模块对CC攻击进行主动判断和防护。配置CC安全防护策略
前提条件
已将网站业务接入DDoS高防。具体操作,请参见添加网站配置。
操作步骤
登录DDoS高防控制台。
在顶部菜单栏左上角处,选择地域。
DDoS高防(中国内地):选择中国内地地域。
DDoS高防(非中国内地):选择非中国内地地域。
在左侧导航栏,选择
。在通用防护策略页面,单击网站业务DDoS防护页签,并从左侧域名列表中选择要设置的域名。
定位到CC安全防护配置区域,单击设置后,在右上角单击新增规则,配置完成后单击确定。
参数
描述
规则名称
规则的名称。由英文字母、数字和下划线(_)组成,不超过128个字符。
匹配条件
规则的匹配条件。字段详细介绍,请参见附录一:支持设置的HTTP请求字段。
说明匹配内容不允许设置为空值。精准访问控制规则的匹配内容区分大小写,频率控制规则的匹配内容不区分大小写。
最多可以设置5个匹配条件。若添加多个匹配条件,只有当访问请求满足所有条件时才算命中。
频率设置
设置是否启动频率设置校验。
开关关闭:表示该规则为精准访问控制规则。
开关打开:表示该规则为频率控制规则。开启后您需要配置统计对象(只支持IP、自定义Header)、统计时长(秒)、阈值(次),您也可以结合响应码的数量或比例设置更细致的规则。
规则动作
当访问请求命中匹配条件时,对请求执行的操作。取值 :
放行:放行该访问请求。
拦截:阻断该访问请求。
挑战:通过挑战算法对访问请求的源IP地址发起校验。
观察:对命中观察规则的请求进行日志记录,并放行该访问请求。
说明开启频率设置时,规则动作仅支持拦截、挑战、观察。
处置时长
频率设置开关关闭时:表示精准访问规则的生效时长,支持永久生效、自定义时长(5~120分钟)。
说明自定义时长时,到期后该规则会自动删除。
频率设置开关打开时:表示满足频率控制规则时,执行多长时间的规则动作,只支持自定义时长(1~1440分钟)。
高级设置
开启频率设置时,支持配置统计时去重。统计对象可以设置为IP、Header、URI。
场景一:开启去重模式
以下图为例,满足匹配条件的场景下,当同一源IP地址在30秒内访问不同的URI大于等于200种时,执行规定动作,拦截来自该IP的请求。由于开启了去重模式,当同一源IP使用相同的URI访问多次时,访问次数统计为1次。
场景二:未开启去重模式
以下图为例,满足匹配条件的场景下,当同一源IP地址在30秒内访问次数大于等于200次时,执行规定动作,拦截来自该IP的请求。未开启去重模式,假如同一源IP使用相同的URI访问10次时,访问次数统计为10次。
返回CC安全防护区域,开启状态开关。
附录一:支持设置的HTTP请求字段
匹配字段 | 字段描述 | 逻辑符 | 字段示例 |
IP | 访问请求的来源IP。 取值为单个IP或IP/掩码。 | 属于、不属于 | 10.10.10.10 |
URI | 访问请求的URI地址。例如: | 包含、不包含、 等于、不等于、长度小于、长度等于、长度大于、前缀匹配、等于多值之一、不等于多值之一 说明 逻辑符为等于、不等于时,输入的字符应以 | /action/member/id.php?id=1&td=2 |
User-Agent | 发起访问请求的客户端的浏览器标识、渲染引擎标识和版本信息等浏览器相关信息。 | 包含、不包含、等于、不等于、长度小于、长度等于、长度大于、等于多值之一、不等于多值之一 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.XX.XX Safari/537.36 |
Cookie | 访问请求中携带的Cookie信息。 | 包含、不包含 、等于、不等于、长度小于、长度等于、长度大于、不存在、等于多值之一、不等于多值之一 | cna=Z87DHXX/jXIBASQBsYAimToU; sca=234ea940; yunpk=177699790**** |
Referer | 访问请求的来源网址,即该访问请求是从哪个页面跳转产生的。 | 包含、不包含 、等于、不等于、长度小于、长度等于、长度大于、不存在、等于多值之一、不等于多值之一 | https://example.aliyundoc.com/ |
Content-Type | 访问请求指定的响应HTTP内容类型,即MIME类型信息。 | 包含、不包含 、等于、不等于、长度小于、长度等于、长度大于、等于多值之一、不等于多值之一 | text/plain;charset=UTF-8 |
X-Forwarded-For | 访问请求的客户端真实IP。格式为: | 包含、不包含 、等于、不等于、长度小于、长度等于、长度大于、不存在、等于多值之一、不等于多值之一 | 36.18.XX.XX,192.18.XX.XX |
Content-Length | 访问请求包含的字节数。 | 值小于、值等于、值大于 | 806 |
Post-Body | 访问请求的内容信息。 | 包含、不包含、等于、不等于、等于多值之一、不等于多值之一 | Content-Type: application/x-www-form-urlencoded name=John&age=25&email=**** |
Http-Method | 访问请求的方法。取值为:GET、POST、DELETE、PUT、OPTIONS、CONNECT、HEAD、TRACE。 | 等于、不等于、等于多值之一、不等于多值之一 | POST |
Header | 访问请求的头部信息,用于自定义HTTP头部字段及匹配内容。 | 包含、不包含、等于、不等于 、长度小于、长度等于、长度大于、不存在、等于多值之一、不等于多值之一 | *text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/**** |
Params | 访问请求的URL地址中的参数部分,通常指URL中 | 包含、不包含 、等于、不等于、长度小于、长度等于、长度大于、等于多值之一、不等于多值之一 | action=login |
Raw-URI | 未经过编码的URI,即保留了原始的字符序列。Raw-URI可以包含特殊字符和空格,但在使用时需要进行编码处理,以确保在网络传输和解析过程中不会引起歧义或错误。 | 包含、不包含、等于、不等于、长度小于、长度等于、长度大于、正则匹配、字节包含、字节等于、等于多值之一、不等于多值之一 | GET /images/logo.png HTTP/1.1 |
Tls-Fingerprint | 基于发起访问请求的客户端TLS指纹,通过阿里云自研算法识别和计算得出的客户端指纹值,用于访问请求的匹配和防护。客户端指纹查看方式:
| 等于、不等于 | 74dcbf6b790160370bb6b7bea98d5978 |
HTTP/HTTPS | 访问请求的协议类型,支持设置为HTTP和HTTPS。 | 等于、不等于 | HTTP |
HTTP版本 | HTTP协议的版本,支持设置为HTTP/1.0,HTTP/1.1,HTTP/2.0版本。 | 等于、不等于、等于多值之一、不等于多值之一 | HTTP/1.0 |
HTTP2.0指纹 | 根据HTTP2客户端的原始指纹,利用MD5算法处理后生成的HTTP2.0指纹。用来分析和识别不同的客户端,实现更安全和高效的通信。 | 等于、不等于 | ad8424af1cc590e09f7b0c499bf7fcdb |
JA3指纹 | DDoS高防通过将TLS握手过程中的关键参数(包括TLS版本、密码套件、压缩算法和TLS扩展等信息)进行MD5哈希处理,生成一个字符串用来表示客户端的TLS配置,该字符串即JA3指纹。 JA3指纹可以用于识别和区分不同类型的TLS客户端,例如Web浏览器、移动应用程序、恶意软件等。 | 等于、不等于、等于多值之一、不等于多值之一 | eb6f49e8db7ad1809f885d12232f4855 |
JA4指纹 | JA4指纹通过引入更多的上下文信息和算法,例如浏览器的版本、操作系统等,减少了J3A指纹可能导致的重复性问题。 JA4指纹能够更准确地鉴别出真实的用户与伪装者,降低误识率。 | 等于、不等于、等于多值之一、不等于多值之一 | f436b9416f37d134cadd04886327d3e8 |
大洲/国家 | 表示来源IP的地理位置。 | 区域封禁选择 | 欧洲 |
附录二:配置示例
下述示例给出常见的适配业务场景的配置建议,具体请以您业务实际需求为准,示例仅做规则配置展示。
拦截特定攻击请求
一般情况下,正常业务不存在POST根目录的请求信息。如果网站业务上发生CC攻击,且您发现客户端的请求中存在大量的POST根目录请求,则可以评估请求的合法性。如果确认其为非正常业务请求,可以配置如下规则。
拦截爬虫
如果在某段时间内,您发现网站的访问流量中有大量爬虫请求,若不排除是攻击傀儡机模拟爬虫进行CC攻击,则可以对爬虫的请求执行拦截操作。规则配置示例如下。
防盗链
当浏览器访问某个网页时,会带上Referer字段,告诉服务器该请求是从哪个页面链接过来的。通过配置Referer字段的访问控制规则,可以阻断特定网站的盗链。例如,您发现“https://example.aliyundoc.com”大量盗用本站的图片,您可以配置如下。
针对User-Agent设置访问频率限制
例如,某一UA在10秒内访问/game/all_
前缀的URI超过30次,就对该UA的请求执行挑战动作。
设置登录频率限制
例如,为了预防登录接口受到恶意高频撞库攻击,可以配置登录接口的地址,设置60秒内超过20次请求则进行拦截。
结合源站响应码设置频率限制规则
通过配置源站响应码数量或比例的触发条件,在原有频率防护策略的基础上进一步提高防护准确性,降低对正常业务的误伤风险。当统计对象在统计时长内请求数超过阈值,且配置的源站响应码超过指定数量或比例,则触发对应的处置动作。
200
当源站处理能力较强时,对于攻击者的高频请求响应依旧正常,此时可根据业务自身特征,处置超出业务正常请求频率的IP,起到一定限速限流的效果,保护源站和业务可用性。可以参考如下配置:
404
当攻击者发起URI扫描攻击或持续请求源站实际不存在的路径时,源站经常会响应大量404状态码,可配置策略拉黑攻击IP。请参考如下配置:
403
当攻击者发起Web类攻击,且高防后端为WAF等防护产品时,可依据其他防护产品拦截响应码进行对应规则配置。例如,阿里云WAF会拦截Web攻击并响应403,可配置策略在高防侧提前拉黑攻击IP。可以参考如下配置:
429
由于源站自身存在限流或业务校验等配置,当攻击者请求命中此类源站限速或校验规则时,源站会响应429 Too Many Requests或客户自定义响应码,可配置策略拉黑攻击IP,缓解源站压力。可以参考如下配置:
502
当源站由于请求突增等原因导致请求处理时间较长,出现异常502响应时,可配置策略拉黑高频请求的IP,保证源站可用性。可以参考如下配置:
555
当源站存在业务自身的特殊逻辑,对非预期的请求响应诸如555等自定义状态码,可在高防侧根据该特征,处置发起非预期请求的IP。可以参考如下配置:
拦截非法的客户端指纹
攻击者通过伪造客户端指纹,模拟真实的客户端以尝试建立大量的连接或HTTP请求,从而导致服务器崩溃或者拒绝服务。您可以通过检查并识别客户端指纹拒绝连接。
例如:遭受大流量CC攻击时,如果攻击者使用相同的脚本或工具,包含相同指纹值的请求数或请求数占比会突增。您可以在安全总览页面的域名页签,查看客户端指纹Top数据,并结合全量日志分析日志中的ssl_client_tls_fingerprinting_md5字段查看Top客户端指纹的占比,分析请求的行为,及时发现可疑的指纹值并设置策略。