最新消息:

低成本防CC攻击、薅羊毛风控反欺诈方案

技术 admin 3177浏览 0评论

项目最近做邀请好友送代币的活动,招来了一堆薅羊毛的,总结一下用到的风控反欺诈方案。

业务场景:

1、用户在钱包APP中邀请好友注册成功后,会赠送一定数量的Token。
2、用户注册可以使用邮箱或手机号,通过发送验证码方式验证

攻击情况:

1、薅羊毛使用接码平台,因此有无限量的手机号可用
2、薅羊毛应该通过自动化方式,疯狂调用注册、验证接口
3、对注册、验证等主要接口服务CC攻击

策略原则:

1、尽量采用低成本或免费方案,避免不必要的投入
2、尽量避免对现有产品做大幅调整,快速响应目前市场推广活动

策略方案

策略总体方案:CloudFlare CDN+Token Authentication+Fail2Ban+fingerprint2

策略主要思路:
1、使用CloudFlare CDN(免费版)来做第一层防护,隐藏服务器IP,应对可能的DDOS攻击

2、使用CloudFlare Token Authentication来对URL做鉴权,防止CC攻击
由于 Firewall Rules 需要开通Business或Enterprise account,为收费服务。因此采用了Worker免费版。

Token Authentication国内一般叫URL鉴权,可以用于防止CC攻击、防盗链等场景,核心思路:
a、APP端在调用接口服务前,先生成本次请求的签名,参与签名的要素包括:token有效期、对称密钥、URL地址。签名采用HMAC加密,此步可以在本地完成
b、APP在接口请求头、或请求参数中带上签名sign1
c、服务器端根据token有效期、对称密钥、URL地址,计算出对应签名sign2,比较sign1和sign是否相等,以及当前时间是否小于token有效期(在有效期内)

3、使用Haproxy/Nginx的流量控制功能,对单一IP同时并发调用注册、验证接口的并发数做限制
Haproxy主要使用stick-table、acl、path_end来做限制。
结合URL鉴权或cookie机制,可以对用户并发数做限制,避免IP限制粒度过粗缺陷。

4、使用Fail2Ban对Haproxy/Nginx日志解析,对注册、验证接口失败次数超过限制次数的IP直接在iptables封杀

5、使用fingerprint2获取用户终端信息的fingerprint,避免同一台终端反复中注册,提高攻击成本
原本可以在APP端获取终端标识信息方案,但需要升级APP。由于注册、验证页面用的是HTML5页面,因此采用fingerprint2方案。

转载请注明:出家如初,成佛有余 » 低成本防CC攻击、薅羊毛风控反欺诈方案

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址