社交、直播类APP的DDoS防护新方案--SDK版

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 针对当下流行的直播社交类app遇到的安全问题进行了专门研究,希望能给相关领域的朋友一定帮助。

image.png

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

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

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

产品原理

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

image.png

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

image.png

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

方案演示

一、生成SDK文件

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

image.png

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

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

image.png

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

 

 

二、抓包分析

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

image.pngimage.png

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

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

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

image.png

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

image.png

image.png

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

image.png

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

 

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

image.png

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

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

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

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

对比项

传统方案

SDK方案

防护能力

仅能靠一个本地机房,带宽无法扩展,无法防御更大的DDoS攻击

分布式节点BGP接入,针对游戏提供高可用的网络环境,理论上无上限的抗攻击能力

身份验证

传统清洗机房仅靠硬件设备来识别,无法解码游戏私有协议

数据报文全链路加密,身份验证,防黑客破解,端到端的加密,游戏安全接入

节点个数

节点数量有限,容易被逐一打死

节点数量很多,即使打死几个对绝大多数用户无影响

CC防护

CC攻击防护效果不佳,大量漏杀和误杀,严重影响业务

100% CC防护能力,0误封

启动防护

识别攻击行为需要一个过程

即刻识别攻击行为

攻击成本

黑客轻易打出几百Gbps的攻击

找不到攻击目标,黑客成本很高

防护成本

防护成本很高

防护成本较低

接入方式

需要DNS解析

无需DNS解析

调度能力

调度时间很长

秒级调度,快速切换节点

调度策略

调度策略很简单

多维度,调度策略很灵活

节点使用

用户集中到少数几个防护节点上

用户分散到不同节点上

隐秘性

黑客很容易找到攻击目标

混淆加防逆向抓包,无法找到真实节点IP

防护配置

需配置防护策略

无需配置防护策略

策略制定

需根据攻击特征调整防护策略

一次接入,终身免疫

攻击溯源

溯源困难

溯源成功率将大大提升

三、控制台可视化操作

image.png

控制台使用Go语言开发,主要是配合SDK进行节点的调度与分配,用户请求的身份验证识别等功能。

image.png

节点池分为临时池、可信池、备用池。根据用户权重等方式进行分配到不同节点池。新用户请求会分配临时池,等通过一系列权重评估之后会分配可信池节点。备用池是在极端情况下进行分配的节点。节点同时支持近源分配。

image.png

image.png

每个平台会分配唯一的授权码,同时生成SDK的时候也会直接写死的文件里面。image.png

一些列相关配置参数。image.png

中转机配置也就是针对用户业务进行端口转发,并生成虚拟IP。类似127.0.0.2.

image.png

debug模式主要是在个别终端出现异常情况下进行远程调试、日志分析等,用来进行排查问题。

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支持例外设置,比如链接第三方流媒体或者存储更新资源等无需保护的链接进行直连访问。

需要技术交流可以加q:278056823 vx: zenops

相关文章
|
3天前
|
安全 定位技术 API
婚恋交友系统匹配功能 婚恋相亲软件实现定位 语音社交app红娘系统集成高德地图SDK
在婚恋交友系统中集成高德地图,可实现用户定位、导航及基于地理位置的匹配推荐等功能。具体步骤如下: 1. **注册账号**:访问高德开放平台,注册并创建应用。 2. **获取API Key**:记录API Key以备开发使用。 3. **集成SDK**:根据开发平台下载并集成高德地图SDK。 4. **配置功能**:实现定位、导航及基于位置的匹配推荐。 5. **注意事项**:保护用户隐私,确保API Key安全,定期更新地图数据,添加错误处理机制。 6. **测试优化**:完成集成后进行全面测试,并根据反馈优化功能。 通过以上步骤,提升用户体验,提供更便捷的服务。
|
1月前
|
Java 开发工具 Windows
【Azure App Service】在App Service中调用Stroage SDK上传文件时遇见 System.OutOfMemoryException
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
|
2月前
|
API 开发工具 UED
在 UWP 中使用 Windows App SDK
【10月更文挑战第17天】在UWP中使用Windows App SDK可增强应用功能和性能。首先了解SDK特性,接着安装Visual Studio 2022及以上版本,并从微软官网下载安装SDK。配置项目时,确保目标版本支持SDK,添加SDK引用后即可使用新API提升应用体验。开发过程中应充分利用调试工具进行测试,确保应用的兼容性和稳定性。
|
4月前
|
机器学习/深度学习 开发工具 Python
【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)
【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)
|
5月前
|
存储 开发工具
通用快照方案问题之快照SDK的安装如何解决
通用快照方案问题之快照SDK的安装如何解决
52 0
|
6月前
|
Linux 调度 开发工具
云桌面系统镜像文件快速分发方案分享SDK
为了解决云桌面环境下批量升级系统镜像的效率问题,传统的1对多FTP/HTTP方式因服务器带宽限制导致传输慢。一种基于优化的Bittorrent协议的P2P解决方案被提出,利用P2P技术将文件切块并让终端互相分享,提高下载速度,尤其适合大文件如256GB分区镜像的分发。通过自定义IO接口、跳过校验、超大分块、多分块支持及局域网自建Tracker等功能,实现更快的传输和镜像更新,适用于系统镜像、游戏更新等领域。该方案已广泛应用于各行业,可根据不同场景定制优化。
71 1
|
5月前
|
分布式计算 Java 调度
MaxCompute产品使用合集之使用Tunnel Java SDK上传BINARY数据类型时,应该使用什么作为数据类字节
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
缓存 算法 Java
反射埋点方案: 全局点击埋点代理OnClickListener SDK 编写
反射埋点方案: 全局点击埋点代理OnClickListener SDK 编写
37 0
|
4月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
123 0
|
1月前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
88 1