欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

作者:腾讯游戏云资深架构师 vince

本篇文章主要是分享游戏业务面临的安全风险场景,以及基于这些场景的特点,我们应该如何做好对应的防护。

背景:游戏行业DDoS攻击愈演愈烈

《2017年度游戏行业DDoS态势报告》显示,中国成为全球DDoS攻击最大受害区,占比84.79%。

第二个特点是,大流量攻击越来越多,其中百G以上攻击占比逐年加大:

第三个特点是游戏行业被攻击情况严重,已是最大受害行业。而其中棋牌类被攻击尤其严重,百G以上攻击棋牌类占比57%:

另外,国内已经开始出现超大流量攻击。在今年4月8日,腾讯云防护了1.23T的超大攻击流量,DDoS攻击越来越凶猛。面对越来越严峻的安全攻击现状,如何构筑我们的业务防线,这是所有游戏研发和发行商都要面对的问题。

常见游戏风险场景

鉴于游戏业务面临日益严峻的安全攻击风险,我们有必要对其进行进一步的剖析,为后续建立相应的安全防护打好基础。游戏安全场景由两部分要素组成。一部分是业务属性,另一部分是技术和部署架构;业务属性包括了游戏类型、攻击趋势、延迟要求等,决定了被DDoS的概率、攻击流量的大小,需要使用什么类型的防护资源,如BGP还是三大运营商的单线线路;技术和部署架构,包括使用的通信协议、部署架构等,决定了需要使用什么防护产品来对抗。

业务属性

业务属性可以从以下图中的几个方面来展开:

1、 游戏类型
近几年随着手游的持续走热,越来越多的手游类型出现,常见的手游类型如MOBA,MMO,以及16年开始兴起的棋牌等。MOBA和MMO等游戏由于地域属性粒度较粗,基本是以国家维度来做发行,竞争激烈但基本是良性竞争居多;而棋牌主要集中在国内发行,由于地方特色玩法各异,所以地域属性极强,竞争对手较为明确,容易产生不当竞争行为,典型的就是利用DDS攻击打击竞争对手。

2、 生命周期
不同的业务在生命周期的不同阶段,所可能受到的攻击情况也不同。以棋牌,特别是地方棋牌为例,在新游上线初期,可能就会被“围殴”打瘫。因为这个时候攻击影响和成本堪称“性价比”最高,新游首发阶段,如果连续被攻击几天,不仅游戏口碑变差,运营投入的广告转换率和留存率也会很低,给发行商带来很大经济损失。

3、 延迟要求
在防护业务时,两个方面需要考虑,一个是防住攻击,第二是尽量不影响玩家体验。能否防住攻击,与高防产品技术、架构和资源有关,后续再深入介绍。为了不影响玩家体验,建议网络延迟不要增加至超过上述延迟的上限。又因网络延迟主要和网络线路质量有关,故建议MOBA,MMO使用BGP线路的防护资源;棋牌类可以使用BGP(常态下业务访问+基础防护)+三网(大流量下防护)的组合防护资源。

4、 攻击类型
从近年来的攻击情况看,主要以反射性UDP攻击为主,且流量巨大。18年初出现利用Memcached可以放大5万倍的流量,非常惊人,急需有效的UDP防护策略来防护。从攻击时长和频次来看,一定程度上可以预判攻击意图和后续攻击的情况,便于做防护准备。例如对于攻击时间长,频次高的情况,甚至十分钟左右就是一轮高峰值攻击,这种情况下,对方势必要打瘫目标,所以开发商需要和云厂商一起合作才能做好针对性防护。

5、 攻击大小
从以上2017年的攻击统计情况来看,攻击主要集中在2-4月份,全年有3/4的时间攻击量和频次都不高。 从攻击大小上看,87.1%的攻击是在50G以下,约51.2%的攻击是在10G以下。所以是否常态下置备 50G 或 20G的防护资源,在攻击超过这个基数时也可以提供防护?总结说,是否可以以“保底+弹性”的防护模式,做到防护效果和成本的均衡?

技术和部署架构

1、 通用游戏架构
从游戏通用架构上来看,玩家通过CDN下载更新资源包,通过域名登录游戏,然后连接分配的游戏服开始游戏。其他游戏周边服务都在内网。恶意攻击者通过伪装成正常玩家,拿到所有直接公网暴露给游戏玩家的域名、公网IP等,从而通过其控制的互联网的巨量肉鸡对游戏进行攻击;在这个游戏架构场景中,可能被攻击的对象是CDN,DNS,登录服入口,游戏服入口等暴露在公网的服务。其中CDN和DNS一般都是平台型的服务,攻击不多。重点攻击对象是登录服,游戏服务等。

2、 不同延迟需求
在防护时,登录、支付等服务相比游戏服,延迟容忍度更高一下;所以防护措施与游戏服不同,可以考虑电信联通等单线的大带宽高防资源;游戏服的延迟要求与类型密切相关,可以参见上述提及的延迟要求。

3、 可否更换 IP
从业务技术架构上看,能否更换IP,决定了防护的灵活性;若可以更换IP,则可以灵活的调度多个IP实现“游击战”式的灵活防护;如果不能更换IP,只能用带宽先把攻击流量承接下来,然后再做清洗;这种情况在攻击量超过带宽上限时,服务端公网入口已经被拥塞至几近瘫痪,业务请求几乎都不能被正常处理。

4、 是否可多地域部署
此外,如果业务可以多地域部署,则可以更好的利用多地的高防资源防护,并且玩家游戏体验更好。

防护思路总结

架构设计阶段

把安全防护考虑在内,尽量采用公网IP可更换或服务端提供域名访问、可多地域部署的架构

业务部署阶段

规划好暴露在公网的服务(即需要防护的目标)的数量,使其处在一个合理区间,以便在单点攻击发生时,不会影响全部玩家;同时也要综合考虑防护成本和效果;

根据游戏类型,以及自身的竞争环境是否健康,规划游戏是否需要独立的防护资源,游戏内不同玩家分组,不同业务模块是否需要独立防护;否则多业务可以共享防护资源;

根据延迟要求,选择防护资源的地域和线路;一个游戏内的不同服务,延迟要求可能也不相同,例如大厅服通常相对游戏服的延迟要求就低一些;

根据业内攻击数据统计,以及自身的竞争现状,规划是否需要保底+弹性的灵活防护模式,以平衡防护效果和成本;

业务被攻击时

根据攻击情况,调整保底和弹性模式;结合攻击频率,调整防护策略。如果是大流量攻击,但是还在防护带宽内,可以考虑继续使用大带宽防护或者适当升级带宽以保障防护效果;如果是大流量带宽攻击频繁,超过可以购买的带宽或者防护成本过高,可以考虑多高防 IP调度的方式;

如遇到频繁且复杂的攻击场景,有必要建立多层防护。例如使用多 IP 灵活调度作为第一层,第二层可以使用大带宽的三网防护兜底,针对 CC 可以做到有效防护,在一些复杂场景,一定程度上可以做自定义防护;

腾讯云专家助力

在以上各阶段,可以联系腾讯云团队,可以一起更有效的做好多轮次攻防。

腾讯云游戏高防产品-宙斯盾

结合上述的防护思路,在面对越来越严峻的安全威胁时,可以使用腾讯云提供的高防服务宙斯盾来保障业务安全。腾讯云宙斯盾安全防护提供了全方位多层次的 DDoS 防护方案,可以完全契合上述防护思路。您可以根据业务部署特点选择 DDoS 高防 IP、DDoS 高防包,并根据防护需求配置高级安全策略、CC 防护策略、水印防护策略等以灵活应对多种 DDoS 和 CC攻击威胁。

防护域名

防护域名提供智能解析和自动切换的能力。 在同时具备包括BGP的多线路防护资源时,优先解析到BGP;若发生攻击导致BGP线路被封禁,系统会自动切换到三网防护资源,此时会根据访问者的来源IP自动解析到对应的运营商线路,从而尽可能的保证最优的延迟;

高防IP

借助BGP高防IP的力量来防护,客户端连接到高防IP,高防IP再转发给游戏服务器;可以转发云外或者云上的服务器。

高防包

对于部署在腾讯云上的业务,高防包就像一层护甲,直接在现有业务IP上生效,做到快速接入高防,业务无需做变更;高防包分两种:

  • 单IP高防包,为腾讯云上一个服务器或者负载均衡提供防护;
  • 多IP高防包,也叫共享高防包,可以防护多个腾讯云服务器或者负载均衡;

高级安全策略

如果DDoS攻击流量的报文中有一定特征,可以通过设置针对性的安全策略,进行有针对性的过滤

CC防护策略

CC防护一直是个难点,通过在CC检测清洗层面,设置自定义的检测和处理策略,可以有效阻击一定的CC攻击。如果一些特殊的CC流量已经到达服务器,也可以通过开启紧急防护模式,收紧防护策略,从而达到防护效果。

空连接防护

在CC防护中,空连接是一种常用的手段。宙斯盾会先与请求端建立连接,待有非空连接到来时,才使请求端与服务端真正建立连接,避免空连接攻击对服务产生影响。

水印防护

如果CC攻击频繁且攻击量大,急需彻底防护CC,可以使用水印防护的方案。腾讯云宙斯盾通过在业务报文中增加动态标签,即水印的方式,来识别是否是游戏的正常流量,且潜在攻击者无法通过抓取报文进行回放等方式进行攻击,100%有效过滤攻击流量。

常见游戏类型防护方案

MOBA/MMO

对于 MOBA和MMO 类型的现有项目可以使用BGP高防包覆盖所有公网服务;

新游戏可以使用BGP高防IP或者BGP 高防包覆盖所有公网服务,在发生攻击被黑洞时,可以通过提升防护套餐快速解除黑洞状态,恢复业务访问;

棋牌

对于棋牌业务来说,攻击情况比较复杂。攻击流量大、类型多样、变化快,攻击人员更专业,攻击周期可能会很长,少数情况甚至长达数月或超过一年。所以需要有一套应对复杂状况的方案。根据经验,我们建立了一个多层次防护体系,可以节节对抗,有针对性的变化防护策略,达到有效防护的目的。

防护方案整体上可以采用防护域名+ BGP 高防IP + 三网高防 IP + 高防IP 灵活调度的策略。第一层防护,使用BGP高防IP防护中小流量,并且作为业务对外正常服务的入口;第二层防护,使用三网高防或BGP高防IP灵活调度来防护、三网高防作为保底措施;第三层,若攻击报文有长度、内容特征,可以使用自定义防护策略,过滤这些报文;第四层,若有明显CC攻击,默认的空连接防护以及紧急防护模式(更严格的过滤策略),可以帮助业务正常提供服务,也可以在研发或上线后逐步接入水印防护,100%有效防护CC攻击。

问答
如何防范DDos攻击?
相关阅读
基于TCP反射DDoS攻击分析
初识常见DDoS攻击手段
深入浅出DDoS攻击防御

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/developer/article/1138276?fromSource=waitui

游戏场景下的DDoS风险分析及防护的更多相关文章

  1. Linux下防御DDOS攻击的操作梳理

    DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求.耗尽目标主机资源 ...

  2. 使用Unity3D的设计思想实现一个简单的C#赛车游戏场景

    最近看了看一个C#游戏开发的公开课,在该公开课中使用面向对象思想与Unity3D游戏开发思想结合的方式,对一个简单的赛车游戏场景进行了实现.原本在C#中很方便地就可以完成的一个小场景,使用Unity3 ...

  3. MMORPG大型游戏设计与开发(服务器 游戏场景 地图和区域)

    地图的数据以及区域的信息是场景的重要组成部分,这些数据同时存在客户端和服务器,而且都是由编辑器生成的.那么保存的文件数据结构是怎样的?一张3D的场景地图又是怎样处理这些数据的?同时告诉大家这里同样只是 ...

  4. MMORPG大型游戏设计与开发(服务器 游戏场景 多线程)

    多线程在随着cpu发展应用的是越来越多,游戏场景因为其在服务器所占的数据量与逻辑复杂度的原因必须依赖于它.为什么场景要采用多线程?场景的线程是怎样的?场景的线程又是如何创建的?场景的线程又是怎样管理的 ...

  5. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

  6. (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)

      异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...

  7. Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条

    Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...

  8. Defender Game 游戏实践(1) 基本游戏场景实现

    在网上看到 郑州|boy 这个博客,里面有几篇文章,记录了其用cocos2d-x这个游戏引擎编写的一个游戏,十分不错,所以这段时间,依样画葫芦,依次学习一下. 由于博主开发的平台是在win32,而且屏 ...

  9. 【淡墨Unity3D Shader计划】一间 创建一个游戏场景 & 第一Shader写作

    本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

随机推荐

  1. maven-plugins说明

    maven提供了丰富的plugins. maven是一个插件执行的框架. 核心部分的描述: clean. clean插件. goal:clean 清除构建时生成的文件,文件目录 project.bui ...

  2. C++友元(友元函数、友元类和友元成员函数)

    友元(友元函数.友元类和友元成员函数) C++ 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例如被重载的操作符,如输入或输出操作符,经常需要访问类的私 ...

  3. CentOS下Docker与.netcore(五)之 三剑客之一Docker-swarm集群

    CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...

  4. C# Log4.Net日志组件的应用系列(一)

    引言 Log4Net应该可以说是.NET中最流行的开源日志组件了.在各种项目框架中可以说是必不可少的组成部分.个人认为Log4Net有下面几个优点: 1. 使用灵活,它可以将日志分不同的等级,以不同的 ...

  5. Python短路原则

    1.括号内逻辑先执行 2.and优先级大于or 3.and一假为假 4.or一真为真 and:如果左边为假,返回左边值.如果左边不为假,返回右边值. or:如果左边为真,返回左边值.如果左边不为真,返 ...

  6. 爬虫开发9.scrapy框架之递归解析和post请求

    今日概要 递归爬取解析多页页面数据 scrapy核心组件工作流程 scrapy的post请求发送 今日详情 1.递归爬取解析多页页面数据 - 需求:将糗事百科所有页码的作者和段子内容数据进行爬取切持久 ...

  7. Postman使用手册1——导入导出和发送请求查看响应

    导读: 现在的web和移动开发,常常会调用服务器提供restful接口进行数据请求,为了调试,一般会先用工具进行测试,通过测试后才开始在开发中使用.这里介绍一下如何在chrome浏览器利用postma ...

  8. python3入门之赋值语句介绍

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍赋值语句,以及几种特殊的赋值.下面附有之前的文章: python3入门之print,import,input介绍 python入门之字 ...

  9. 浅谈Android选项卡(二)

    前面简单介绍了选项卡,下面以及后面的几篇文章介绍下Android选项卡的几种简单实现方法. http://blog.csdn.net/xia215266092/article/details/9613 ...

  10. python 常用模块大全

    1.getpass 模块  一般用于获取用户输入的密码 import getpass pwd = getpass.getpass('input your pass') print(pwd) print ...