随着消费及产业互联网的不断发展,数字化将实现全场景覆盖,人类的生活和生产方式也随之不断改变。
内容分发网络CDN(Content Delivery Network)能分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,可以说,CDN已然成为互联网的基础设施。
在万物互联大背景下,网络安全问题的严峻性和重要性都远超过去,一旦受到攻击,便容易“牵一发而动全身”。
因此,越是数字化时代,便越要做好基建“安全”的顶层设计。
如果没有网络安全的保障,一切都将“裸奔”。
01域名被恶意刷量,怎么办?
当前,众多业务在CDN边缘做加速,「边缘安全」的本质是:面临网络安全问题时的第一道防线。
只要在边缘发现并解决了各种安全问题和风险,就能保证客户源站在遭受攻击时,也可以稳定服务。
近年来,CDN域名被刷量的事情屡屡发生。
CDN域名被刷量(刷带宽),本质是“以小搏大”。
由于CDN的存在是加速内容的分发,并不限速,攻击者便可以通过极低的成本买大量“肉鸡”(“肉鸡”也称傀儡机,是指可以被黑客远程控制的机器),造成网站高额的CDN带宽费用,所谓“一觉醒来,房子没了”。
下图是CDN监控到的某域名被刷量的情况:
QPS(Queries-per-second,即每秒查询率)瞬间激增到 100,000 以上,带宽突增超过64Gbps。这类情况会导致域名产生了非常多的流量和带宽,最终导致高额账单。
随着运营商的提速,攻击成本会越来越低。
那么,如何防止被恶意刷量?
CDN 上提供了带宽封顶的功能,超过配置带宽便会停止域名CDN服务。虽然这个功能能够及时抑制刷量,但是域名也无法正常服务了,可以作为快速止损使用。本文重点介绍能够精细化应对恶意数量的方案:IP黑名单、UA黑名单、频次控制等。
l IP黑名单
通过拉黑攻击请求的源IP实现精准拦截。
l UA黑名单
通过拉黑攻击请求的UA(User-Agnet)实现精准拦截。
l 频次控制
基于频次特征拦截访问次数异常的请求,实现精细化防护。
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致力于打造领先的全球边缘安全加速平台,以自身卓越的产品特性为用户提供高效安全、稳定流畅的内容分发服务。