如何防范CDN恶意访问盗刷流量
- 2024-07-10 22:07:00
- 丁国栋
- 原创 162
由于CDN通常是一个根据流量、带宽和次数消耗的一个服务,因此它经常会成为一些攻击者攻击的目标。
- 很多服务运营商和电信网络运行商会故意刷CDN流量
- 很多恶毒的攻击者故意刷CDN流量
- 很多搜索引擎的爬虫故意、无意刷CDN流量
通常 CDN 会提供多种访问控制方式来实现对访客身份的识别和过滤,从而限制访问CDN资源的用户,提升CDN的安全性。
若域名因被恶意攻击或流量被恶意盗刷,会占用较高的带宽或者消耗大量的流量,从而导致产生不必要的消费甚至是高额账单。因为恶意攻击或流量盗刷产生的账单一般是无法免除或者退款的。因此为了避免此类风险,需要开启CDN的访问控制功能。
防范措施:
- 一般来说对于图片、JS、CSS等需要访客访问小文件的静态资源,开启 Referer 防盗链即可,即只有从自己网站发起请求的才被接受;
- 对于一些提供下载后使用的大文件(通常几MB甚至更大),这种需要经过一定的验证才可以下载,比如生成具有过期签名的下载链接,签名有效并且没有过期才能访问到下载资源,这样的签名一般是由对象存储及CDN服务商提供的;
- 如果是为了方便访客下载和获取链接等目的直接将下载文件的外链提供给访客,那么这种不变的下载链接就很可能成为攻击者的攻击目标,这种的就需要控制下载频率,每秒、每分钟、每小时不能超过x次。如果服务商原生支持就加以利用,否则就自己开发回源鉴权的接口实现访问控制;
- 此外还有更通用的做法,就是收集统计数据(下载次数、流量),将恶意下载的IP加入黑名单中;
回源鉴权功能的考虑点:
- 城域网NAT的存在,导致很多用户的出口IP是同一个;因此我们需要有移除黑名单的功能,并且黑名单应该具有过期失效,即在一定时间后自动过期;
- 攻击者可能会变换User-Agent;因此我们要考虑针对一些常见的User-Agent进行拦截,例如'Go-http-client/1.1'、'Apache-HttpClient'等等;
- 攻击者可能会变化网络代理,出口IP可能不同;因此我们需要将访客的特征提取出来,不能简单地只将IP作为标识符,将IP+UA+URI+请求参数 作为唯一的标识符;
- 攻击者可能会下载不同的文件,并控制好频率;因此要支持人工定期的检查和判断访问日志,并且设置带宽、流量的上限等。
就最近1个多月以来大家都有目共睹的公共安全事件来看,山西联通俨然成了大家公认的黑心服务商,以下是我们收集到一些包含它的CIDR和具体IP地址。
[ '60.221.231.0/24', '211.90.146.0/24', '221.205.168.0/23', '124.163.207.0/24', '124.163.208.0/24', ]
124.163.207.20 山西/忻州 124.163.207.40 山西/忻州 124.163.207.80 山西/忻州 124.163.208.100 山西/忻州 124.163.208.20 山西/忻州 124.163.208.60 山西/忻州 60.221.231.100 山西/临汾 60.221.231.157 山西/临汾 60.221.231.158 山西/临汾 60.221.231.159 山西/临汾 60.221.231.163 山西/临汾 60.221.231.165 山西/临汾 60.221.231.166 山西/临汾 60.221.231.167 山西/临汾 60.221.231.170 山西/临汾 60.221.231.173 山西/临汾 60.221.231.20 山西/临汾 60.221.231.210 山西/临汾 60.221.231.58 山西/临汾 60.221.231.88 山西/临汾最后祝愿世界和平,人人友善互助,享有互联网享受互联网!
发表评论