社交、直播类APP的DDoS防护新思路--SDK版

举报
云防护 发表于 2022/02/27 13:58:45 2022/02/27
【摘要】 社交、直播类app经常被cc和ddos攻击,此方案为一个独特的创新思路。有效解决流量攻击

近几年,随着短视频平台兴起,各种直播APP映入人们视野,目前社交、直播类APP行业仍是被攻击的重灾区,之前与几个做社交APP的朋友交流,平台服务端被流量攻击了,他们就抓紧换到高防机房,虽然高防服务器有一定效果,但是由于社交APP涉及视频流、图片等内容,再过滤攻击的同时会出现严重卡顿、延迟高的情况,所以朋友一直不太满意,在有攻击的时候打开视频、发送图片等情况下延迟很大(有时候没攻击延迟也高,可能很多高防单线缘故或者机房其他用户有攻击影响到整个机房环境造成出口波动),影响用户体验,甚至会因为高防依靠策略过滤造成误封用户的情况,导致一些正常用户无法登录被拦截的情况。

了解需求之后根据这种应用场景定制了一套解决方案,采用大量分布式节点部署,攻击流量分散在不同的节点上,节点间可无缝切换,通过APP集成SDK跟验证端通讯来调度节点,可实现无上限防御DDOSCC攻击同时为用户访问加速。

随后不断有平台接入测试,为不少平台轻松防护了棘手的流量攻击,由于传统高防的不足,针对TCP端口的CC攻击没有太好的过滤策略,外加流量攻击量不断飙高,依靠硬防生抗效果不理想同时防护价格昂贵等,后来这个方案的独创的安全防护引擎VEC核心功能在github上开源,同时产品经过不断历练进行了三次重构,目前产品已经足够稳定。

产品原理

这个产品是一款专注于C/S架构的安全防护产品,利用分布式云集群拦截针对用户服务器的CC攻击、DDOS攻击,通过在APP客户端集成SDK防御模块,来实现精准快速的切换以及链路加密通讯,由于采用了隧道加密通讯技术,使用动态虚拟IP连接,因此,任何DDOS攻击流量都无法进入隧道,同时还可以隐藏真实服务器IP。

整个防护由三大模块组成,分别是客户端SDK、智能调度和身份验证

简单演示一下大概效果,有感兴趣的朋友可以进行沟通交流。市面上有不少同类商用产品,各有各的优点,这个产品是之前给朋友平台提供运维时候自己团队开发的产物,有需要的可以免费提供部署和搭建。

方案演示

一、生成SDK文件

通过搭建jenkins在线生成SDK文件

产品支持android\ios\windows三端的源码和无源码集成。

随便从搜索引擎找了一款社交APP进行演示,因为直接下载的apk文件并无源码,因此,通过逆向的方式将SDK集成进去。

通过脚本进行集成之后进行测试(三端无源码集成过程后续单独写一个独立的介绍)。

 

 

二、抓包分析

首先安装原版APP进行抓包分析。

通过原版抓包能看到大量dns请求以及http明文请求数据。

再将逆向集成SDKAPP进行安装并抓包。

SDK启动的时候会HOOK掉APP的所有网络通讯,由于SDK和节点之间是加密传输的,因此抓包也无法获取dns解析记录以及http、tcp等明文信息,全部都是私有加密协议进行了封包。下图为原版dns解析

下图为逆向集成SDK之后抓包

62001端口为SDK跟节点加密通讯端口。所有数据都被加密传输,无法解密出明文数据,避免了关键数据和内容在网上明文传输。

上图为节点里面进行dns解析服务,所有的客户端dns解析都会在远端节点进行解析,从而防范了dns污染和劫持。也可以避免攻击者获取域名信息。集成SDK之后抓包看到的全部都是加密封装后的TCP数据包。

 

抓包看到SDK跟分配的节点203.215进行通讯,在IP为203.215的节点里面将加密隧道程序断开,模拟节点被攻击产生无法访问的情况。抓包看到SDK迅速切换到分配给用户的第二个可用IP62.24所有的切换都是无感知进行的。为了避免攻击者重复拉取全部节点池,SDK的验证端做了身份识别,token、deviceid等方式进行验证。每个用户分配的一组3ip都不会重复,如果攻击者打死分配给他的节点IP,也只会影响到黑客自己。

断线重连,节点异常瞬间自动切换。

SDK方案优点主要是不依靠生抗来防护,而是通过大量分布式节点调度防护。

其次能完美防护CC攻击,因为节点对外不提供任何业务端口,只对外开放一个加密传输隧道端口(62001)。

SDK节点切换都是瞬间切换,不依靠域名dns解析方式。cname防护集群切换依靠域名解析同时无法实现无缝切换,并且防CC效果依然不理想。

Q & A 问答集

  • 端口防CC效果如何?

答:SDK跟节点之间通讯是建立一个加密隧道,只有APP集成SDK之后的数据才会进入,攻击量无法进入隧道内,同时节点不对外开放任何业务端口,只有一个加密隧道通讯端口62001开放。因此,任何针对业务端口的CC都起不到任何效果。所有的业务数据都通过封装发送到节点的加密隧道端口,到达节点之后进行解密解包将用户业务数据发送给原站服务器。

  • 最高能防御多大攻击量?

答:因为不是依靠高防的生抗模式,全部都通过调度算法分配节点,因此,黑客攻击打死的节点也只是影响黑客自己,通过多层识别,杜绝全部节点被拉取。用户可以在分配的一组唯一IP之间无感知切换。cname高防转发模式则会出现掉线,延迟高,过滤规则误封真实用户的情况。无感知切换是通过SDK进行处理的,不存在通过cname域名进行调度切换的弊端。

  • 文中提到的虚拟IP如何使用?

答:为了更好的保护APP不被逆向破解,我们建议用户客户端链接服务端的域名解析到虚拟IP,如果客户端绑定的是IP地址,可以换成我们的虚拟IP。虚拟IP是一个环路IP不会在互联网上传输,但是客户端集成SDK之后就可以使用虚拟IP跟我们节点建立加密通讯了。虚拟IP类似127.0.0.1~127.0.0.255

  • 集成之后是否可以抓包到客户端明文数据?

答:APP集成SDK之后会hook全部APP的通讯数据封装到我们的加密协议里面,并与节点建立加密隧道。任何数据都是加密之后传输的,通过抓包是无法显示明文的。有的客户有单独需求,比如社交视频等APP,这类客户流媒体数据较多,如果都走节点会造成增加成本和担忧额外延迟等情况,因此SDK支持例外设置,比如链接第三方流媒体或者存储更新资源等无需保护的链接进行直连访问。

  • 是否可以将流媒体、图片等资源直连不进行保护,来提高速度?

答:SDK默认启动的时候会截获APP全部流量传输数据给节点,但是由于大部分用户客户端里面流媒体、图片等存储于第三方接口,无需保护,因此,我们会根据用户需求进行定制化转发,也就是提供第三方域名或者将需要保护的业务使用我方提供虚拟IP都可以实现。这样保护了重要的原站服务器同时第三方无需保护的接口又可以进行直连,既安全又快速,无需额外多进行一次转发,也避免过多的资源带宽等消耗节省成本。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。