近几年,随着短视频平台衰亡,各种直播APP映入人们视线,目前社交、直播类APP行业仍是被攻打的重灾区,之前与几个做社交APP的敌人交换,平台服务端被流量攻打了,他们就放松换到高防机房,尽管高防服务器有肯定成果,然而因为社交APP波及视频流、图片等内容,再过滤攻打的同时会呈现重大卡顿、提早高的状况,所以敌人始终不太称心,在有攻打的时候关上视频、发送图片等状况下提早很大(有时候没攻打提早也高,可能很多高防复线缘故或者机房其余用户有攻打影响到整个机房环境造成进口稳定),影响用户体验,甚至会因为高防依附策略过滤造成误封用户的状况,导致一些失常用户无奈登录被拦挡的状况。
理解需要之后依据这种利用场景定制了一套解决方案,采纳大量分布式节点部署,攻打流量扩散在不同的节点上,节点间可无缝切换,通过APP集成SDK跟验证端通信来调度节点,可实现无下限进攻DDOS,CC攻打,同时为用户拜访减速。
随后一直有平台接入测试,为不少平台轻松防护了辣手的流量攻打,因为传统高防的有余,针对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明文申请数据。
再将逆向集成SDK的APP进行装置并抓包。
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等形式进行验证。每个用户调配的一组3个ip都不会反复,如果攻击者打死调配给他的节点IP,也只会影响到黑客本人。
断线重连,节点异样霎时主动切换。
SDK计划长处次要是不依附生抗来防护,而是通过大量分布式节点调度防护。
其次能完满防护CC攻打,因为节点对外不提供任何业务端口,只对外开放一个加密传输隧道端口(62001)。
SDK节点切换都是霎时切换,不依附域名dns解析形式。cname防护集群切换依附域名解析同时无奈实现无缝切换,并且防CC成果仍然不现实。
Q & A 问答集
1、端口防CC成果如何?
答:SDK跟节点之间通信是建设一个加密隧道,只有APP集成SDK之后的数据才会进入,攻打量无奈进入隧道内,同时节点不对外开放任何业务端口,只有一个加密隧道通信端口62001凋谢。因而,任何针对业务端口的CC都起不到任何成果。所有的业务数据都通过封装发送到节点的加密隧道端口,达到节点之后进行解密解包将用户业务数据发送给原站服务器。
2、最高能进攻多大攻打量?
答:因为不是依附高防的生抗模式,全副都通过调度算法调配节点,因而,黑客攻击打死的节点也只是影响黑客本人,通过多层辨认,杜绝全副节点被拉取。用户能够在调配的一组惟一IP之间无感知切换。cname高防转发模式则会呈现掉线,提早高,过滤规定误封实在用户的状况。无感知切换是通过SDK进行解决的,不存在通过cname域名进行调度切换的弊病。
3、文中提到的虚构IP如何应用?
答:为了更好的爱护APP不被逆向破解,咱们倡议用户客户端链接服务端的域名解析到虚构IP,如果客户端绑定的是IP地址,能够换成咱们的虚构IP。虚构IP是一个环路IP不会在互联网上传输,然而客户端集成SDK之后就能够应用虚构IP跟咱们节点建设加密通信了。虚构IP相似127.0.0.1~127.0.0.255
4、集成之后是否能够抓包到客户端明文数据?
答:APP集成SDK之后会hook全副APP的通信数据封装到咱们的加密协议外面,并与节点建设加密隧道。任何数据都是加密之后传输的,通过抓包是无奈显示明文的。有的客户有独自需要,比方社交视频等APP,这类客户流媒体数据较多,如果都走节点会造成减少老本和担心额定提早等状况,因而SDK反对例外设置,比方链接第三方流媒体或者存储更新资源等无需爱护的链接进行直连拜访。
5、是否能够将流媒体、图片等资源直连不进行爱护,来进步速度?
答:SDK默认启动的时候会截获APP全副流量传输数据给节点,然而因为大部分用户客户端外面流媒体、图片等存储于第三方接口,无需爱护,因而,咱们会依据用户需要进行定制化转发,也就是提供第三方域名或者将须要爱护的业务应用我方提供虚构IP都能够实现。这样爱护了重要的原站服务器同时第三方无需爱护的接口又能够进行直连,既平安又疾速,无需额定多进行一次转发,也防止过多的资源带宽等耗费节省成本。
须要技术交换沟通能够加q: 278056823 vx: zenops