在数字化时代,网络安全问题日益严重,企业面临着各种各样的安全威胁,其中异常盗刷和网络攻击是最常见的两种形式。这些事件不仅会导致经济损失,还可能损害企业的声誉和客户信任。并且在如今降本增效的大背景下,有效的防止盗刷和攻击也可以节省很大一部分成本。 本文将探讨在业务出现异常盗刷或攻击时,CDN或Edge one产品 如何进行发现、分析及处理。
在激烈的市场竞争中,部分企业为了获取不正当的竞争优势,可能会采取恶意竞争手段。其中,通过攻击或盗刷竞争对手的业务,干扰其正常服务的提供,便是一种恶劣的行径。这种行为旨在破坏对方的业务稳定性和声誉,从而使自己在市场竞争中占据有利地位。
以游戏行业为例,游戏在上线开服等关键时期,往往容易成为恶意攻击的目标。一些不法分子会在此时发动攻击,并以停止攻击为要挟,向游戏运营方勒索钱财。这种恶意勒索行为不仅给游戏企业带来直接的经济损失,还严重影响了游戏玩家的正常体验,对整个游戏产业的生态环境造成极大危害。
在视频、图床等数据资源丰富的场景中,如果缺乏有效的安全防护手段,极易遭受恶意爬取数据或盗链使用的问题。盗链者通过非法手段获取资源链接,直接盗用他人的服务器带宽和数据,不仅侵犯了内容创作者和服务提供商的合法权益,还可能导致被攻击方的服务器负载过高,影响正常用户的访问和使用体验。
在网络运营领域,部分运营商为了维护网络秩序和自身利益,会对 PCDN(P2P 内容分发网络)进行监测和管控。当监测到用户存在巨量上传但下载量极小的情况时,会判定其可能在使用 PCDN,并采取限速或封禁措施。而一些 PCDN 从业者为了躲避运营商的封堵,会采取伪造数据并频繁发起请求和下载的手段,这种行为在一定程度上干扰了正常的网络运营秩序,也可能引发一系列的盗刷和攻击问题,对网络安全和稳定造成潜在威胁。
DDoS攻击是一种基于DoS特殊形式的拒绝服务攻击,是一种分布的、协同的大规模攻击方式,处于不同位置的多个攻击者同时向一个或多个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。攻击者进行一次DDoS攻击,需要经过了解攻击目标、攻占傀儡机、实际攻击三个主要步骤,如下图所示:
CC攻击是攻击者使用代理服务器向受害服务器发送大量貌似合法的请求,攻击者控制某些主机不停地发大量协议正常的数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃,如下图所示:
通过如下的通知,可以清晰看到TOP客户端IP、TOP URL、TOP UA、TOP Referer等信息。 可以直接针对异常来源进行常规封禁屏蔽处理即可。
可以按固定周期维度进行报告推送,关注是否存在异常,无需人工二次分析,即可发现同比数据是否有异常,TOP访问信息等内容:
https://console.cloud.tencent.com/cls/alarm/list
执行语句参考:
1、统计对应时间段PV数:
*| select histogram( cast(TIMESTAMP as timestamp),interval 1 day) as time,count(*) as PV group by time order by time desc limit 1
2、统计同比昨天同时间段涨幅:
*| SELECT compare[1] AS today, compare[2] AS yesterday, compare[3] AS ratio FROM ( SELECT compare(PV, 86400) AS compare FROM ( SELECT COUNT(*) AS PV ) ) limit 100
触发条件:PV大于指定值或同比增长200%
创建多维分析,推送需要的内容:
语句参考:
正常状态码,TOP 5 客户端IP:
"EdgeResponseStatusCode" < 400 | select "ClientIP","ClientRegion","ClientState","ClientISP", count(*) as pv group by "ClientIP","ClientRegion","ClientState","ClientISP" ORDER by pv desc limit 5
正常状态码,TOP 5 URL:
"EdgeResponseStatusCode" < 400 | select "RequestUrl" as "URL",count("RequestUrl") as "count_RequestUrl" group by "RequestUrl" order by "count_RequestUrl" desc limit 5
正常状态码,TOP 5 UA:
"EdgeResponseStatusCode" < 400 |select "RequestUA" as "UA",count("RequestUA") as "count_RequestUA" group by "RequestUA" order by "count_RequestUA" desc limit 5
正常状态码,TOP 5 Referer:
"EdgeResponseStatusCode" < 400 |select "RequestReferer" as "referer",count("RequestReferer") as "count_RequestReferer" group by "RequestReferer" order by "count_RequestReferer" desc limit 5
设置告警频率和通知渠道即可。
直接导入json文件创建:
https://console.cloud.tencent.com/cls/dashboard
自行创建
选择Nginx访问模版:
修改缺失字段:
对应字段:
ClientIP | 客户端 IP |
---|---|
RequestHost | 请求的 Host |
RequestUA | 请求的 User-Agent |
RequestUrl | 请求的 URL Path |
EdgeResponseStatusCode | 状态码 |
可以再根据个人需求添加图表、修改过滤条件、修改图表信息等。
在配置监控之前,首先要明确监控的目标,这里主要是以流量异常、攻击、盗刷发现为目标。
需要考虑如下几个因素,按业务场景进行配置,并持续进行优化调整,避免告警失真。
策略类型按域名维度(CDN产品)选择,并勾选对应域名实例ID;EO产品选择站点/域名方式。
触发条件--参考:
说明:
1、从请求数、流量、带宽角度在同比和环比不同角度分别配置告警阈值策略,例如:条件1/2/3,条件5/6/7;
2、增加基础阈值,带宽或者请求数或者流量设置基线,防止小流量或请求导致的波动,例如条件4;
3、复合条件组成,多条件绑定,同时满足同比上涨、环比上涨,达到基线以上,例如:(1 AND 4 AND 5)OR(2 AND 4 AND 6)OR(3 AND 4 AND 7)
说明:
1、从请求数、流量、带宽角度在同比和环比不同角度分别配置告警阈值策略;
2、增加基础阈值,带宽或者请求数或者流量设置基线,防止小流量或请求导致的波动;
3、复合条件组成,多条件绑定,同时满足同比上涨、环比上涨,达到基线以上触发告警。
可以直接导入模版调整阈值即可:
地址:https://console.cloud.tencent.com/monitor/alarm/template
导入告警模版
编辑修改阈值:
新建告警策略,选择导入的模版即可:
通过实际的告警信息及业务情况,调整合理的阈值,避免告警失真。
https://cloud.tencent.com/document/product/228/6316
shell脚本:
下载对应时间CDN离线日志,执行脚本获取TOP信息:
使用参考:https://cloud.tencent.com/developer/article/1751515
下载地址:https://kk-1253792666.file.myqcloud.com/cdn/cdn.sh
离线日志分析参考示例:
1、查看TOP 客户端IP:zcat *.gz|awk '{print $2}' | sort | uniq -c | sort -rn |head -10
2、统计TOP 省份:zcat *.gz|awk '{print $6}' | sort | uniq -c | sort -rn |head -10
3、统计TOP URL分布:zcat *.gz|awk '{print $4}' | sort | uniq -c | sort -rn |head -10
4、统计TOP UA分布:zcat *.gz|awk -F '"' '{print $2}'| sort | uniq -c | sort -rn |head -10
5、统计TOP Referer分布:zcat *.gz|awk '{print $9}' | sort | uniq -c | sort -rn |head -10
https://cloud.tencent.com/document/product/1552/96007
SQL版本(开通实时日志):
1、查看TOP 客户端IP:select "ClientIP" as "ClientIP",count("ClientIP") as "count_ClientIP" group by "ClientIP" order by "count_ClientIP" desc limit 50
2、统计TOP 省份:select "ClientState" as "省份",count("ClientState") as "count_ClientState" group by "ClientState" order by "count_ClientState" desc limit 50
3、统计TOP URL分布:select "RequestUrl" as "URL",count("RequestUrl") as "count_RequestUrl" group by "RequestUrl" order by "count_RequestUrl" desc limit 50
4、统计TOP UA分布:select "RequestUA" as "UA",count("RequestUA") as "count_RequestUA" group by "RequestUA" order by "count_RequestUA" desc limit 50
5、统计TOP Referer分布:select "RequestReferer" as "referer",count("RequestReferer") as "count_RequestReferer" group by "RequestReferer" order by "count_RequestReferer" desc limit 50
6、统计TOP 节点IP分布:select "EdgeServerIP" as "节点IP",count("EdgeServerIP") as "count_EdgeServerIP" group by "EdgeServerIP" order by "count_EdgeServerIP" desc limit 50
通过对单 IP 单节点在每一秒钟的访问次数进行限制,进行高频 CC 攻击抵御、防恶意用户盗刷等。
注意:
一个WEB页面的访问,可能同时加载同一个域名下多个资源,这样就会出现qps比较高情况。
配置合理QPS阈值,可以有效防止CC攻击,但是如果阈值不合理会影响正常客户的访问。
根据日志分析结果,把恶意访问的IP加入到IP黑名单,拦截此部分IP的访问,也可以配置IP段。
根据访问日志把对应爬虫类或者异常UA头加入到黑名单,限制访问。
对域名设置带宽封顶阈值,当域名在一个统计周期(5分钟)内产生的带宽超过指定阈值时,会根据您的配置直接关闭 CDN 服务,所有访问均返回 404。
注意:如果重点关心费用问题可以选择,否则不建议配置。不然关闭CDN服务会影响到业务的正常访问。
对业务资源的访问来源进行控制,通过对用户 HTTP Request Header 中 referer 字段的值设置访问控制策略,从而限制访问来源,避免恶意用户盗刷,防止盗链请求。
根据大数据统计结果确认异常客户端 IP 或 UA 信息,将自动进行拦截,避免恶意用户的盗刷,产生非正常请求。
EO对标:IP黑名单、referer白名单、UA黑名单等配置,具体配置参考:
配置方法例如:
平台托管的速率限制规则
优势:访问频率限制基于最近 7 天请求速率基线,每 24 小时自动更新频次限制,无需自行设置。
注意:前期处置方式配置为观察,业务稳定后,频次限制阈值得到合理数据改为拦截或js挑战;
如果业务存在高频访问地址,可以配置例外规则,防止误拦截。
通过限制最小请求速率和设置超时,缓解慢速传输等攻击场景对站点资源的消耗,避免服务可用性下降。
速率基线学习、头部特征统计分析和客户端 IP 情报,实时动态生成防护规则。
针对来自高危客户端、或者携带高危头部特征的请求进行人机识别。
注意:业务重大变更(接入、切量、新增业务、活动上新)时,业务基线可能造成误拦截,可将处置方式暂时修改为观察,待业务平稳后开启。
允许的访问调用频次为 100 次/分钟,当超过频次限制后,将封禁该 IP 10 分钟。
例如:对在 1 分钟内请求次数超过 300 次的 IP 触发处置动作(观察,js挑战,拦截),处置持续时间为 30 分钟。
减少源站的错误响应,缓解服务器压力,提升静态资源站点的安全性和稳定性
例如:资源不存在响应 404 时,访问在 10 秒内超过 100 次时,则直接拦截对应的客户端 IP 请求 60 秒。
具体配置及其它功能参考文档: https://cloud.tencent.com/document/product/1552/93127
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。