共计 2208 个字符,预计需要花费 6 分钟才能阅读完成。
目前游戏行业仍是攻打的重灾区,这个产品也应运而生,采纳分布式节点部署,攻打流量扩散在不同的节点上,能够无下限进攻 DDOS,CC 攻打其余协定攻打等。十分全面的进攻各种攻打入侵浸透,同时为用户拜访减速。
此产品设计之初仅仅是“江湖救急”为了帮忙几个敌人的游戏和在线教育平台抵制大流量攻打,起初敌人介绍敌人,一直有平台接入测试,为不少平台轻松防护了辣手的流量攻打。因为传统高防的有余,针对 TCP 端口的 CC 攻打没有太好的过滤策略,外加流量攻打量一直飙高,依附硬防生抗成果不现实同时防护价格昂贵等,产品通过一直历练进行了三次重构。目前产品曾经足够稳固。
这个产品是一款专一于 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 解析记录应该是在 app 启动 SDK 之前或者手机其余 app 解析申请)比照原版 app 的 dns 解析记录。
62001 端口为 SDK 跟节点加密通信端口。所有数据都被加密传输,无奈解密出明文数据。
上图为节点外面进行 dns 解析服务,所有的客户端 dns 解析都会在远端节点进行解析,从而防备了 dns 净化和劫持。也能够防止攻击者获取域名信息。集成 SDK 之后抓包看到的全部都是加密封装后的 TCP 数据包。
抓包看到 SDK 跟调配的节点 117 进行通信,在 IP 为 117 的节点外面将加密隧道程序断开,模仿节点被攻打产生无法访问的状况。抓包看到 SDK 迅速切换到调配给用户的第二个可用 IP154. 所有的切换都是无感知进行的。为了防止攻击者反复拉取全副节点池,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 反对例外设置,比方链接第三方流媒体或者存储更新资源等无需爱护的链接进行直连拜访。