防范流量盗刷场景

当您的域名因被恶意攻击或流量被恶意盗刷,产生了突发高带宽或者大流量消耗,导致产生高于日常消费金额的高额账单。因恶意攻击或流量盗刷产生的高额账单无法免除/退款,为尽量避免此类风险,本文为您介绍这一类情况的应对办法。

背景

近年来随着互联网行业的飞速发展,互联网流量盗刷的安全事件呈现逐渐上升的趋势。由于DCDN业务本身是为了提升用户体验,加速资源访问效率的一种解决方案,其计费逻辑是根据客户资源下载流量进行计费的一种服务,即下载量和客户侧付费金额正相关,对攻击者带来了直接恶意攻击的机会点。

恶意访问对DCDN流量进行高频次、长时间的下载,导致用户DCDN费用激增。不仅增加了正常客户的业务运营成本,造成了客户资损失,更会影响客户的业务发展。

场景描述

盗刷场景通常涉及多种恶意请求,以下是一些常见的DCDN恶意攻击的方式以及应对措施:

攻击类型

攻击原理

攻击特征

应对措施

伪造User-Agent攻击

攻击者通过伪造User-Agent字段发送大量请求,试图绕过安全检查。

伪造的User-Agent一般有以下几种:

  • 空值。

  • 随机字符串。

  • 常见浏览器的伪造字符串。

配置User-Agent白名单或黑名单,拒绝非正常的User-Agent请求。例如,拒绝空User-Agent或不符合规范的随机字符串。

伪造Referer攻击

攻击者在请求头中伪造Referer字段,以假冒合法的引用来源,进行恶意请求。

Referer 头信息中的URL与被请求资源没有合理的关系、Referer与UA不一致等。

配置Referer黑白名单,允许合法的Referer访问,拒绝带有恶意Referer的请求。例如,允许来自你自己的域名的Referer访问。

频繁请求同一资源

同一IP或用户在短时间内频繁请求同一资源(如API接口),导致服务器负载过高、资源消耗和费用增加。

高频次请求来自同一个或同几个IP。

配置频率限制策略,控制同一IP或同一用户在单位时间内的请求数量。例如,同一IP每秒钟最多允许10次请求。

或者通过配置IP黑白名单,限制访问源IP。将常见的攻击IP列入黑名单,将可信的IP列入白名单。

恶意爬虫和抓取

恶意爬虫工具大量抓取网站内容,不仅会造成带宽和资源的浪费,还可能导致数据泄露。

针对同一个资源进行高频请求、请求访问的特征以固定规律等。

通过DCDN的Bot防护功能,检测并拦截异常请求和恶意爬虫。可以通过分析请求特征(如频次、请求模式等)来自动识别和阻止恶意行为。

针对性措施

您可以根据攻击源的特征类型来选择合适的应对措施。在实际您异常分析时,有可能会匹配到多种攻击特征,您可以同时为您的DCDN服务配置多种防护策略实现全方位的防护。

配置方法一:通过访问控制的功能进行拦截

您可以通过配置Referer防盗链、URL鉴权,以及IP黑白名单、User-Agent黑白名单来实现对访客身份的识别和过滤拦截,命中规则触发则返回403,从而限制访问DCDN资源的用户,提升DCDN的安全性。具体请参见访问控制概述

功能

说明

配置Referer防盗链

您可以通过配置访问请求来源的域名(即Referer黑名单和白名单),实现对访客身份的识别和过滤,限制访问DCDN资源的用户,禁止其他网站引用您的资源链接。

配置URL鉴权

URL鉴权是指用户按照指定的签名方式对于特定的URL增加鉴权认证,您可以通过自行配置校验鉴权URL中的加密串和时间戳,保护用户站点的资源不被非法站点下载盗用。URL鉴权比Referer防盗链安全性更高,适合于安全密级较高的文件。

配置IP黑白名单

您可以通过配置访问请求来源的IP地址(即IP黑名单和白名单),来实现对访客身份的识别和过滤,限制访问DCDN资源的用户,防止恶意IP盗刷、攻击等问题。

配置User-Agent黑白名单

User-Agent是访问请求客户端的标识,当您想指定访问的客户端时,可以通过配置User-Agent黑名单和白名单来实现对访客身份的识别和过滤,保证用户只能从您允许的客户端访问。

配置方法二:配置WAF防护规则拦截恶意请求

DCDN结合边缘Web应用防火墙WAF(Web Application Firewall)能力,在DCDN节点上提供WAF防护功能,可以有效识别业务流量恶意特征,将正常、安全的流量回源到服务器。避免网站服务器被恶意入侵,保障业务的核心数据安全,解决因恶意攻击导致的服务器性能异常问题。

  1. 如果未开通边缘WAF功能,请登录全站加速控制台,在左侧导航栏选择WAF防护 > 防护总览,根据页面提示单击立即开通

    image

    边缘WAF内置了Web基础默认防护策略,帮助Web业务防御SQL注入、XSS跨站、代码执行、WebShell上传、命令注入等一千多种常见的Web应用攻击。如果系统内置的Web基础默认防护策略无法满足您的需求(例如,您需要为不同防护对象应用不同的防护模式),您可以自主配置默认防护策略。具体操作,请参考默认防护策略

  2. 在左侧导航栏,单击WAF防护 > 防护域名 > 防护域名接入 > 添加防护域名

    image

  3. 若是默认防护策略无法满足您的业务,您可以配置自定义防护策略。

    CC限速

    参考配置自定义防护策略完成规则策略配置。

    接口访问量突增会触发监控告警,查看实时日志时,在被攻击的时间段内,60秒内单IP对该接口访问量达到3000多次;在未被攻击时间段内,60秒内单IP访问该接口最多只有100次。根据未被攻击时间段内60秒内访问频次的2~3倍配置CC防护策略。

    说明
    • 您需要查看实时日志,定位到被攻击的资源,对比攻击时间段和未被攻击时间段内的访问频率,若存在差距可以配置该防护策略。

    • 正常业务中服务器通过公网接口调用资源,如果存在内网IP被集中访问,您需要添加IP不被统计的匹配条件。

    • 您需要根据自身业务和实时日志中攻击者访问频次,调整防护路径和触发防护的阈值,以下是配置案例。

    image

    配置项

    取值示例

    说明

    规则名称

    您自定义的规则名称。名称需符合:

    • 支持使用中文字符、英文字符(大小写)、数字(0~9)及下划线(_)。

    • 最多支持64个字符。

    表示当被请求的路径中包含/且不属于目标IP地址时,则请求命中该规则。

    匹配条件

    • 匹配字段选择URI逻辑符选择包含匹配内容输入/

    • 匹配字段选择IP逻辑符选择不属于匹配内容输入目标IP地址

    频率设置

    打开频率设置开关。

    表示如果某个客户端IP在60秒内命中匹配条件的次数超过300次,则对该IP触发黑名单处置。

    统计对象

    选择IP

    统计时长(秒)

    输入60

    统计阈值(次)

    输入300

    响应码

    默认关闭。

    表示将命中频率检测条件的统计对象加入黑名单,在3600秒内,对来自该对象的所有请求,执行拦截处置。

    黑名单生效范围

    选择作用于整个域名

    黑名单超时(秒)

    输入3600

    规则动作

    选择拦截

    异常UA拦截

    参考配置自定义防护策略完成规则策略配置。

    说明
    • 针对App场景,正常业务为空UA,则无需使用该策略。

    • 如果UA取值是App名称,需要将UA中正常业务的App名称加入匹配内容。

    image

    配置项

    取值示例

    说明

    规则名称

    您自定义的规则名称。名称需符合:

    • 支持使用中文字符、英文字符(大小写)、数字(0~9)及下划线(_)。

    • 最多支持64个字符。

    表示当请求的User-Agent中不包含Android,iPhone,iPad,Mac,Windows,Linux时,则请求被拦截。

    匹配条件

    • 匹配字段选择User-Agent

    • 逻辑符选择不等于任一值

    • 匹配内容输入Android,iPhone,iPad,Mac,Windows,Linux

    频率设置

    默认关闭。

    规则动作

    选择拦截

    异常UA限速

    参考配置自定义防护策略完成规则策略配置。

    某个域名或接口被攻击者大量访问导致DCDN流量费用突增,查看实时日志发现访问IP分散,但User-Agent非常集中,和正常业务不符。您可以查看未被攻击的时间段,同一个User-Agent的访问量远远低于被攻击时间段。

    说明

    您需要根据自身业务和实时日志中攻击者特征和频次,调整防护路径和触发防护的阈值,以下是配置案例。

    image

    配置项

    取值示例

    说明

    规则名称

    您自定义的规则名称。名称需符合:

    • 支持使用中文字符、英文字符(大小写)、数字(0~9)及下划线(_)。

    • 最多支持64个字符。

    表示当被请求的路径中包含/时,则请求命中该规则。

    匹配条件

    • 匹配字段选择URI

    • 逻辑符选择包含

    • 匹配内容输入/

    频率设置

    打开频率设置开关。

    表示如果某个客户端的请求中包含User-Agent,同一个User-Agent中,在60秒内命中匹配条件的次数超过400次,则对该IP触发黑名单处置。

    统计对象

    选择自定义Header,输入User-Agent

    统计时长(秒)

    输入60

    统计阈值(次)

    输入400

    响应码

    默认关闭。

    表示将命中频率检测条件的统计对象加入黑名单,在1800秒内,对来自该对象的所有请求,执行拦截处置。

    黑名单生效范围

    选择作用于整个域名

    黑名单超时(秒)

    输入1800

    规则动作

    选择拦截

    拦截异常IP

    参考配置IP黑名单完成规则策略配置。

    image

    爬虫拦截

    参考配置Bot管理完成规则策略配置,根据实际需要开启相关防护项。

    image

异常排查

DCDN为您提供了日志以及报表功能,您可以离线日志、实时日志、运营报表等方式,对突发流量的时段的数据进行分析并根据异常类型来选择采取的防护策略。

日志报表获取

  1. 首先,您可以下载离线日志配置实时日志投递,查看访问量增多的当天日志。

  2. 其次,您也可以通过定制和订阅运营报表功能分析TOP域名、Referer、URL、客户端IP等。

    重要

    需要注意的是,运营报表只能分析开启报表后的访问行为,开启报表之前的行为无法监测。

特征分析

当您获取到了日志或报表数据后,您可以通过数据特征来分析攻击类型。通常您可以分析Top信息(Top IP、Top URL、Top User-Agent、Top Referer等)提取特征。

  • IP集中度:通过Top IP来分析IP的地址范围,识别攻击者IP,针对IP做访问控制拦截。

  • 请求的资源:通过Top URL来分析攻击者针对的资源对象,针对资源做访问控制。

  • 客户端特征:通过Top User-Agent来分析攻击者客户端特征,针对客户端特征做访问控制拦截。

  • 爬虫识别:通过请求频次、请求模式来匹配是否为恶意爬虫,针对爬虫做Bot防护。

针对离线日志您可以参照下述流程来进行攻击特征分析。

离线日志分析

  1. 下载离线日志

  2. 上传日志文件至本地Linux系统服务器。

  3. 登录本地Linux系统服务器,统计文件中的行数,即请求总次数。

    wc -l [$Log_Txt]

    按小时统计访问量。

    awk -F' ' '{print \$4}' [$Log_Txt] | sed 's/^\[\(.*\/.*\/.*\):\(.*\):.*$/\1 \2:00/' | sort | uniq -c | sort -nr | head -n 10

    统计出来请求总数,确认请求量异常。

    重要

    以下配置需要参考业务的真实请求,谨慎操作,以免影响您正常用户。

  4. 执行如下命令,查询访问量前十的IP。

    cat [$Log_Txt] | awk '{print $3}' |sort|uniq -c|sort -nr |head -10

    限制可疑IP访问,配置IP黑白名单

  5. 执行如下命令,查询访问量前十的User-Agent。

     grep -o '"Mozilla[^"]*' [$Log_Txt] | cut -d'"' -f2 | sed 's/ ANCHASHI-SCAN[^)]*)//g' | sort | uniq -c | sort -nr | head -n 10

    过滤可疑User-Agent,配置User-Agent黑白名单

  6. 执行如上命令,查询访问量前十的路径。

  7. grep -oP '"https?://[^"]+"' [$Log_Txt] | sort | uniq -c | sort -nr | head -n 10

防护案例

游戏类用户安装包盗刷

背景

游戏客户A在两年前推出某款游戏B,该游戏在推出两年内均保持稳定运行。近期出现高额的DCDN账单。

异常识别

通过配置实时日志投递进行流量监控和日志分析,发现多次出现高频次下载安装包请求。在1小时内的PC端下载量高达31万次,1小时内的安卓端下载量高达1.8万次。

说明

开启实时日志,并成功投递日志后,根据日志投递条数产生计费。

image

分析下载安卓端请求包时,在请求中可以发现异常请求中User-Agent非安卓端信息而是典型的PC端信息。

image

从一般用户现阶段的访问习惯来看,通过手机直接下载apk包的用户占绝大多数,目前很少有用户使用PC下载然后再通过USB方式传输到手机上进行安装。因此从User-Agent可以基本判定相关的下载信息是由攻击者产生的。

从频率和请求的资源来分析,单IP每分钟300多次访问(APK包),每分钟5100多次(exe包)业务明显异常。

解决措施

主要可以通过访问控制方式来识别用户身份以及对资源下载频率做防护。

  • IP拦截:设置黑名单规则,将Top IP将入黑名单。具体请参见配置IP黑白名单

    image

  • 资源频次控制:新建规则,将同一IP访问后缀为.exe或.apk的资源请求的次数阈值控制为20次/60秒。具体请参见配置自定义防护策略

    image

  • 爬虫防范:在规则中开启爬虫威胁情报库,开启“滑块校验”。具体请参见配置Bot管理

    image

网站资源被盗用

背景

电商客户A网站保持稳定运行。近期发现网站的上图片内容被其他的网站在短时间内高频次请求盗用。

异常识别

通过配置实时日志投递进行流量监控和日志分析,发现日志中发现有伪造Referer信息。

image

使用SQL域名查询了 refer_domain伪造数量在十几分钟内访问了1万多次。

image

从refer_domain判断,refer_domain和domain不一致,应该是盗取资源。同时通过SQL查看访问量,判定为不仅仅是盗取资源,还是恶意攻击。

解决措施

Referer防盗链:设置黑名单将和domain不一致的refer_domain加入到黑名单中。具体请参见配置User-Agent黑白名单

image

后续防护

设置实时监控

设置对DCDN产品下指定域名的带宽峰值监控,达到设定的带宽峰值后将会给管理员发送告警(短信、邮件和钉钉),便于更加及时地发现潜在风险。详情请参见设置报警

设置费用预警

您可以在控制台右上方菜单栏费用选择用户中心,通过设置以下这三个功能来更好地控制账户的消费额度,避免产生过高的账单。

  • 可用额度预警:您可以设置账户余额低于一定金额的时候就给您发送短信告警。

  • 启用延停额度:您可以选择关闭该功能,这样在账号欠费时会立即关闭业务,以避免产生更多消费。更多信息,请参见延期免停权益

  • 高额消费预警:您可以开启预警,设置产品日账单大于预警阈值时将会发送短信告警。

说明

为了保证计量数据统计的完整性,确保账单的准确性,DCDN产品需要在记账周期结束后大约3个小时才能生成实际的账单,因此实际扣款时间与对应的资源消费时间存在一定的时延,无法通过账单来实时反馈资源消耗情况,这是由DCDN产品自身的分布式节点特性决定的,每个DCDN服务商都采用类似的处理办法。