精细化边缘安全防护:如何防止CDN域名被恶意刷量?
越是数字化时代,越要做好基建“安全”的顶层设计
随着消费及产业互联网的不断发展,数字化将实现全场景覆盖,人类的生活和生产方式也随之不断改变。
内容分发网络CDN(Content Delivery Network)能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,可以说,CDN已然成为互联网的基础设施。
在万物互联大背景下,网络安全问题的严峻性和重要性都远超过去,一旦受到攻击,便容易“牵一发而动全身”。
因此,越是数字化时代,便越要做好基建“安全”的顶层设计。
如果没有网络安全的保障,一切都将“裸奔”。
01 域名被恶意刷量,怎么办?
当前,众多业务在CDN边缘做加速,「边缘安全」的本质是:面临网络安全问题时的第一道防线。
只要在边缘发现并解决了各种安全问题和风险,就能保证客户源站在遭受攻击时,也可以稳定服务。
近年来,CDN域名被刷量的事情屡屡发生。
CDN域名被刷量(刷带宽),本质是“以小搏大”。
由于CDN的存在是加速内容的分发,并不限速,攻击者便可以通过极低的成本买大量“肉鸡”(“肉鸡”也称傀儡机,是指可以被黑客远程控制的机器),造成网站高额的CDN带宽费用,所谓“一觉醒来,房子没了”。
下图是CDN监控到的某域名被刷量的情况:
QPS(Queries-per-second,即每秒查询率)瞬间激增到 100,000 以上,带宽突增超过64Gbps。这类情况会导致域名产生了非常多的流量和带宽,最终导致高额账单。


随着运营商的提速,攻击成本会越来越低。
那么,如何防止被恶意刷量?
CDN 上提供了带宽封顶的功能,超过配置带宽便会停止域名CDN服务。虽然这个功能能够及时抑制刷量,但是域名也无法正常服务了,可以作为快速止损使用。本文重点介绍能够精细化应对恶意数量的方案:IP黑名单、UA黑名单、频次控制等。
- IP黑名单
通过拉黑攻击请求的源IP实现精准拦截。
- UA黑名单
通过拉黑攻击请求的UA(User-Agnet)实现精准拦截。
- 频次控制
基于频次特征拦截访问次数异常的请求,实现精细化防护。
02 多维度的特征排查
带宽监控建议通过云监控配置,配置一个超过域名日常带宽峰值一定比例的阈值作为告警的触发条件。
云监控请参考:https://help.aliyun.com/product/28572.html
收到告警并判断带宽突增很明显,下一步就需要考虑采取处置策略。本文重点介绍精细化拦截的配置和防御手段。
实现精细化拦截需要对访问行为进行分析,因此建议开启实时日志功能。通过日志的实时分析,可以及时分析最新的攻击特征,从而能配置相关的策略进行精准拦截。
实时日志开通过程请参考:https://help.aliyun.com/document_detail/121168.html
在域名关联之后,点击 “日志分析”,会出现日志管理页面。此时客户端对域名进行访问,这里能实时展示域名的所有请求,以及每个请求记录的日志字段,具体见下图所示。

下面介绍攻击场景中常用的日志字段:
uri:就是对应的HTTP请求的URL, 且不带后面的query参数。对于刷量攻击,uri是非常重要的分析参数。
uri_param:请求的参数。如果被刷量的请求一直很固定或者特征很明显,可以对其请求的IP或者匹配param的请求进行黑名单处理。
refer_uri:一般来说,请求来自网站的子链接或者搜索引擎,那么值为“对应网站的网址”或者是“搜索引擎的网址”,而使用一些命令行工具比如curl的时候,就有可能伪造。如果被刷量的URL实际上不会被其他网站引用,那么一旦出现类似refer的,就可以考虑判定为异常。这类特征可以通过控制台中的Referer防盗链来实现。
return_code: 正常响应码应该是2xx。如果其他响应码比如3xx/4xx/5xx等占比较高,可以分析该请求中其它字段进行进一步分析。
remote_ip: 即请求的源IP。如果某个或者若干个Client IP访问占比很高,远超其他访问的IP,就可以考虑封禁这些IP。下文统一用IP代指源IP。
response_size:恶意刷量一般都会找大文件的URL进行反复下载。从response的统计结果分析是刷量分析的关键一步。
user_agent: 发起请求的UA,大部分简单的刷量工具可能会有相同的UA。如果看到某个UA访问特别集中,而且是不常见的UA,可以直接封禁这些UA。
03 精细化的安全防护体系
在新基建浪潮之下,对于关键基础设施的网络攻击必定只增不减。
应对未来网络安全问题,需摒弃碎片化或单点防御的思路,构建持续进化的安全能力体系。
对于刷量攻击,每个防御手段都可以产生一定的拦截效果。然而,在实际业务中,需要依据实际情况选择最适合的方式,甚至需要组合多个防御手段实现最大化的拦截效果。
本文以DCDN控制台的WAF防护功能为例,介绍相关的安全实践。
❖ IP黑名单演示
先运行工具模拟刷量,访问的URL为/test/app5m.apk ,确保域名的带宽明显突增。下文所有实践中的模拟刷量都会采用相同的方式。
查看实时日志,看下response_size的统计结果,有个5.244MB的文件访问比例很高,其uri 为/test/app5m.apk。当然,还可以再观察uri维度的统计分析做最终的确认。

分析该URL的来源IP,发现都来自*.11.32.x 这个网段(本次演示使用的网段),如下图所示:

创建IP黑名单的策略,拦截上面分析到的网段。

监控页面看带宽明显的降下来了。

❖ UA黑名单拦截演示
同样先运行工具模拟刷量,使域名的带宽明显突增。
由于模拟刷量的工具使用的python脚本,通过实时日志分析可以发现请求的UA比较集中,如下图所示:

分析UA,确认访问次数最高的是python-requests/2.22.0,而且还有要其他UA前缀是python-requests/的,均属于python脚本发起的请求,非常规浏览器的UA,判定属于恶意行为。配置自定义策略,规则设置为User-Agent包含python-requests/的进行拦截。

配置规则之后,域名的带宽明显下降。

❖ 频次控制演示
上文演示的拦截,不管是IP还是UA,都是精准拦截。实际攻击场景中,对应的特征集中程度未必会很明显,尤其请求的源IP可能达到成千上万甚至几十万的规模。
因此,防御的策略就需要使用基于访问频次的限制策略。提到访问频次,那么请先评估一下自己业务,正常用户是多久间隔访问一次。这里以某APP下载或者升级的场景为例,大部分IP可能只下载一两次,少部分有可能下载遇到失败,会有若干次重试,基本上都在一个合理的频次范围内。如果发生了攻击或者恶意刷量,则会出现单IP一段时间内访问频次较多的情况。因此,可以采用频次控制类型的策略对高频访问进行拦截。
同样先运行工具模拟刷量,使域名的带宽明显突增。
通过自定义策略配置频次控制功能。一般频次控制主要针对IP进行拦截。阈值的确定,可以依据网站日常访问的IP频次,也可以通过实时日志查看访问IP的分布情况。

通过监控页面查看域名的带宽,如下图所示明显降下来了。

下图是频次控制策略拦截的IP统计:

这里提醒一下:配置频次控制策略需要结合防御效果动态调整。
在一开始为了快速实现防御,可以基于经验值进行配置频次阈值。如果配置之后发现刷量抑制效果不好,可以收紧策略。反之如果发现影响到正常业务,就需要适当放宽松策略。
安全能力不是天然长在边缘的,今年7月,阿里云对全站加速DCDN产品进行了全面升级,针对边缘安全防护与数据运维能力进行了全方位优化。
升级后DCDN产品,在更靠近客户端的DCDN边缘节点上集成了WAF防护能力,可应对OWASP威胁、有效管理爬虫流量保障业务安全、防止源站入侵。
所有客户端请求到达DCDN边缘节点后都将经过清洗过滤,正常请求被放行后加速回源或返回缓存,恶意请求被拦截,有效实现爬虫甄别并阻断攻击流量。
同时,基于运维便捷、配置高效的需求,我们也提供了智能防护的功能,实现大流量CC防御下无人值守。
阿里云全站加速DCDN致力于打造领先的全球边缘安全加速平台,以自身卓越的产品特性为用户提供高效安全、稳定流畅的内容分发服务。
精细化边缘安全防护:如何防止CDN域名被恶意刷量?的更多相关文章
- 什么是CDN 域名预热
通常大家理解的预热功能是,缓存预热.将需要预热的资源推送到CDN边缘节点,用户访问时将不需要再回源站,可以直接命中缓存.这样可以加快资源的首次访问,同时缓解突增回源流量给源站造成的压力.这里说的是域名 ...
- CDN域名集合
akamai-staging.net akamaized.net akamai.net cloudfront.net amazonaws.com azioncdn.net cachefly.net c ...
- vue项目中获取cdn域名插件
import axios from 'axios' let CdnPath = {} CdnPath.install = function (Vue, options) { Vue.prototype ...
- 【安全开发】Android安全编码规范
申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...
- 打造移动应用与游戏安全防线,腾讯WeTest安全服务全线升级
当移动互联网渗透到千家万户,与工业控制.智慧交通.实时社交.休闲娱乐紧密结合时,应用安全就变得尤为重要. 尤其在网络强相关的APP流行年代,当APP应用客户端上传与获取信息,大多通过接口在服务器双向通 ...
- 七牛云域名DV SSL证书申请流程以及CDN融合加速配置
从2017年起,苹果ios以及微信小程序都陆续要求请求连接request地址是使用HTTPS协议的.所以在项目开发阶段就要考虑解决https的问题,同时这也是为项目实际安全所考虑.最近我也是在折腾项目 ...
- 阿里云 CDN 业务基于边缘容器的云原生转型实践
导读:本文基于边缘容器的阿里云 CDN 云原生实践, 涵盖了边缘容器的背景和趋势,边缘托管集群 ACK Managed Edge K8s(文中简称“Edge@ACK”) 的能力.架构,以及基于边缘容器 ...
- 什么是边缘CDN和虚拟CDN (vCDN)?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 如今CDN有哪些局限性? 现如今,内容和游戏提供商正面临着越来越大的压力,它们需要向最终用户提 ...
- 关于CDN与缓存(浏览器和CDN)
本文目录:一.引入 二.CDN定义 三.关于缓存 四.浏览器缓存 一.引入 客户端直接从源站点获取数据,当服务器访问量大时会影响访问速度,进而影响用户体验,且无法保证客户端与源站点间的距离足够短,适合 ...
- 【CDN+】 CDN项目的两大核心--缓存与回源
前言 项目中碰到CDN专用名词: 回源, 然后不知道什么意思,反过来查询了一下CDN相关的一些基本术语,特做记录 CDN基础概念 CDN (Content Delivery Network,即内容分发 ...
随机推荐
- Python 哈希表的实现——字典
哈喽大家好,我是咸鱼 接触过 Python 的小伙伴应该对[字典]这一数据类型都了解吧 虽然 Python 没有显式名称为"哈希表"的内置数据结构,但是字典是哈希表实现的数据结构 ...
- 【Javaweb】Servlet六 | HttpServletRequest类的含义及其使用方法【详解】
HttpServletRequest类的作用 每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的Http协议信息解析好封装到Request对象中.然后传递到Service方法(d ...
- 聊聊卷积神经网络CNN
卷积神经网络(Convolutional Neural Network,CNN)是一种被广泛应用于图像识别.语音识别和自然语言处理等领域的深度学习模型.与RNN.Transformer模型组成AI的三 ...
- html字间距怎么设置?
在HTML中,可以通过CSS来设置字间距.字间距指的是字符之间的空白区域,在网页设计中,修改字间距可以改变文字的外观和排版效果.下面详细介绍如何使用CSS来设置字间距. 使用letter-spacin ...
- 每天5分钟复习OpenStack(十二)Ceph FileStore 和 BlueSotre
一个最小化的Ceph集群需要三个组件MON MGR OSD.上一章我们部署了MON,本章节我们完成剩下MGR 和OSD 的部署.在文末我们将重点介绍下什么是FileStore和BlueStore,并详 ...
- SFX的妙用——如何在不安装软件的情况下打开自定义格式文件?
前段时间看到群友讨论压缩包能不能运行,想起了N年前用自解压文件SFX实现的一个"需求":在没有安装任何应用软件的Windows(当时还要支持XP)上能双击打开自定义格式的文件.当时 ...
- 快速认识,前端必学编程语言:JavaScript
JavaScript是构建Web应用必学的一门编程语言,也是最受开发者欢迎的热门语言之一.所以,如果您还不知道JavaScript的用处.特点的话,赶紧补充一下这块基础知识. JavaScript 是 ...
- [ABC246Ex] 01? Queries
Problem Statement You are given a string $S$ of length $N$ consisting of 0, 1, and ?. You are also g ...
- C++学习笔记五:变量与数据类型(Auto类型)
Auto 允许编译器自己来推断变量的类型,这种新功能是在c++11引入的.这个关键字结合for循环使用可以节省变量类型的重复输入.VS Code可以在鼠标移动到变量上之后直接显示变量的类型. auto ...
- JXNU acm选拔赛 壮壮的数组
壮壮的数组 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submiss ...