如何提高游戏网站抵御DDoS攻击稳定性

经常发生的情况是,DDoS 防护服务的客户认为只要连接到这些服务,他们就得到了全面保护。不幸的是,这并不完全正确:DDoS 防护不是魔法或超能力,为了使其有效发挥作用,服务本身必须具有足够的 DDoS 风险免疫力。

我们将这种免疫力称为“可保护性”——通过这个术语,我们定义了互联网资源以最少的金钱、时间和精力投入抵御 DDoS 攻击的属性。

在本文中,我们将讨论如何提高积极使用 TCP 和 UDP 协议的游戏服务的可保护性。我们应该立即注意到,我们将要讨论的几乎所有内容也适用于许多其他在线服务,这些服务与用户的交互以尽可能接近实时的方式进行。特别是,我们的建议将有助于保护在 TCP 和 UDP 上运行的物联网 (IoT) 和工业物联网 (IIoT) 中的在线服务。

服务保护的具体内容

游戏服务通常是相当复杂的多组件软件综合体。通常,它们的复杂性是其中存在大量漏洞的不可避免的原因。隔离所有当前的网络风险并建立可靠的保护措施可能很困难。

为了保证与客户端的快速交互,网络游戏主要使用 UDP 和 TCP 协议,这给反 DDoS 服务提供商带来了额外的困难。特别是,并非所有服务提供商都能够过滤 UDP 流量。有些提供商在检测到攻击时只是简单地阻止 UDP 流量,甚至不会尝试过滤流量中未经授权的部分。

因此,选择可靠的反 DDoS 提供商对于保护游戏服务至关重要。必须确保提供商能够过滤服务的流量,包括 UDP 数据包(如果使用)。

什么是“好”服务,什么是“坏”服务,或者服务的架构如何影响其对 DDoS 攻击的抵抗力

我们先举两个游戏服务的例子,它们对DDoS风险的抵御能力根据设计阶段选择的架构而有很大差异。

第一个例子是一个“坏”服务,它是一种基于 UDP 协议的在线游戏。游戏的网站和服务器软件包都位于同一个 IP 地址上。每次用户请求后,网站都应该访问自己的数据库——这就是“游戏在线”统计数据的计算方式。为了使游戏服务不可用,攻击者可以注册为合法用户,分析流量,在其中找到模式,然后模拟类似于合法序列的数据包序列。当攻击者的僵尸网络开始自动生成虚假请求时,游戏服务将花费其很大一部分能力来处理这些请求,再多一点——它将完全淹没在试图处理大幅增加的流量中,并变得不可用。同时,该网站也将变得不可用:由于游戏服务器速度慢或根本没有响应,其后端将无法连接以计算在线统计数据,并且托管上的进程队列将溢出。

问题是:反 DDoS 提供商有多容易将攻击者模拟的流量与该在线游戏的合法用户的流量区分开来?可能并不容易,因为攻击者会尝试创建一个完全可信的数据包序列。只有当单个机器人的活动非常频繁时,才有可能将这些“假”流量与合法流量区分开来 - 那时就会清楚流量是由机器人而不是人生成的。然而,攻击者可以很容易地欺骗保护措施,因为为了关闭游戏服务,每个机器人不必产生太多流量,只需要有很多机器人,而单个机器人的活动不能超过正常用户的活动。

让我们想象一下另一种游戏服务,它展示了一种“良好”方法的基本原理,可以高度抵御 DDoS 攻击。这款在线游戏的主要组件是单独实现的:网站、用户授权服务和服务器应用程序。网站和授权服务使用 HTTPS 协议。服务器应用程序的工作方式很复杂:每个用户都有自己的一组 IP 地址,这些 IP 地址来自一个 IP 地址池,首先,这些 IP 地址不连续,其次,这些 IP 地址属于不同的子网。该应用程序同时与多个 IP 地址建立 TCP 连接,当其中一些 IP 地址不可用时,它会切换到其他 IP 地址。为了确保用户确实是其中一个客户端,每次移动应用程序连接时都会检查授权令牌和用户的 IP 地址。

有了这样的方案,不知道网络游戏实现细节的攻击者就很难发动 DDoS 攻击来破坏网络游戏的运行。此外,黑客也很难伪造正常的活动。

网络游戏设计阶段需要做什么

网络游戏的稳定性和易受网络风险影响的程度很大程度上取决于这些软件系统的设计阶段。因此,我们建议刚开始开发网络游戏的人在开发这些系统的早期阶段就仔细考虑网络安全问题。与信息安全领域的专家和 DDoS 保护专家密切合作非常有用。

为了提高游戏服务的安全性,我们建议考虑以下几点。

1. 开发在线游戏与用户交互的协议,创建准确区分合法会话和虚假会话的方法。同时,如果可以在协议中包含一些标记或棘手的、不明显的规则,那么就太好了,基于这些规则可以清楚地确定此用户及其特定会话是否合法。必须仔细记录此交互协议和数据包过滤规则,然后将其提供给反 DDoS 提供商,以便它能够成功地将合法流量与攻击者机器人生成的流量分开。

2. 在设计阶段,提供尽可能多的方法来隐藏授权用户访问游戏的真实 IP 地址,防止未经授权的客户端看到——这极大地限制了攻击者发起 DDoS 攻击的能力。我们的一位客户通过在其游戏服务中引入用户“等级”解决了这个问题:一旦玩家达到 20 级,他们就会被分配一个新的游戏服务器 IP 地址。计算基于这样一个事实:攻击者很可能被限制在授权初期分配给他的 IP 地址上,并且不太可能攻克游戏的多个等级。得益于这一解决方案,最忠实的玩家根本没有感受到游戏服务受到的 DDoS 攻击。

3. 不要将用于访问游戏服务和其他互联网资源的 IP 地址集成(“硬编码”)到程序代码中。DDoS 保护提供商通常会向其客户提供其 IP 地址。但是,如果发现以前的地址是硬编码的,则将其替换为反 DDoS 提供商分配的地址是非常有问题的。使用 DNS 寻址更有意义。

4. 避免游戏服务服务器组件之间以及它们与其他软件系统(如 DBMS)之间的强依赖关系。否则,如果其中一个组件因攻击而不可用,其他组件无法与其交互,可能会陷入“昏迷”或崩溃,这当然会给用户带来非常负面的影响。有必要为游戏服务的其他组件停止响应请求时组件正常运行提供可能性。

5. 尽可能通过不同子网的不同 IP 地址重复访问在线游戏功能——这将有助于降低整个游戏服务同时出现故障的概率:如果攻击击中了某些 IP 地址,它可以继续为连接到其他地址的用户提供服务。

尽管 UDP 协议对于在线游戏来说更为方便,但从 DDoS 保护的角度来看,依赖 TCP 更有意义,因为使用此协议的攻击更容易被击退。如前所述,通过 UDP 协议进行的交互会话很容易被欺骗,这为攻击者提供了许多有针对性的攻击机会。如果您仍然必须使用 UDP,您至少应该提供独特的授权功能,反 DDoS 提供商可以使用这些功能来区分合法客户端和非法客户端。例如,您可以使用预 TCP 授权。

对应用程序及其安全性进行审核,评估 DDoS 保护的必要性并规划其开发

如果一款在线游戏已经投入生产运营,那么就需要仔细研究和记录其架构和运营情况——这将有助于反 DDoS 提供商了解如何更好地构建保护。此外,对游戏服务的信息安全进行审计以识别其漏洞并了解如何应对这些漏洞也非常有用。

从审计中获得的信息将有助于规划实施和进一步开发针对 DDoS 攻击的保护措施。覆盖游戏服务的所有组件、其使用的 IP 地址、端口和其他可从外部访问的资源非常重要。保护覆盖范围的复杂性和完整性是其有效性的最重要条件之一。

制定路线图将有助于确定构建全面 DDoS 保护的顺序。这将反映出提高游戏服务抵御 DDoS 风险的稳定性的最重要步骤。连接反 DDoS 服务并进一步加强保护。重要的是,该路线图不仅要考虑在线游戏开发的计划,还要考虑当前的网络风险及其动态情况。如果游戏服务是更大 IT 格局的组成部分(例如,由游戏或媒体控股公司拥有),则开发该服务的路线图和计划必须与游戏运营商组织的信息安全战略相协调和一致。

当然,如果游戏服务不仅使用传输层协议(根据 OSI 模型为 L4),还使用应用层协议(L7)– HTTP/HTTPS – 那么您需要确保反 DDoS 服务保护 L3/L4 和 L7 层的流量。我们还建议连接至少两个 DNS 服务,其中至少一个必须受到 DDoS 攻击保护 – 此措施可提高游戏服务抵御 DDoS 风险的稳定性。

为反 DDoS 提供商提供明确的攻击过滤选项

反 DDoS 服务的主要功能是过滤流量,即阻止未经授权的流量部分并允许授权流量畅通无阻。为了实现这一点,反 DDoS 提供商必须确切知道可以使用哪些标志来确定流量是否合法。为此,必须为提供商配备适当的功能。

理想情况下,如前所述,应在网络游戏的设计阶段设想和定义过滤 DDoS 攻击的能力,然后详细记录下来。如果这是一项已经运行的游戏服务,请花时间(最好有反 DDoS 提供商的参与)详细记录该服务与其用户交互的规则和程序,然后在分析后设置过滤流量的规则。

对于反 DDoS 提供商来说,过滤规则允许以足够的精确度分配和阻止未经授权的流量,以免同时丢失合法流量,这一点非常重要。在某些游戏服务中,会提供预授权程序来验证用户的合法性。在这种方法中,成功通过此授权的客户的流量被视为合法。但是,要绕过这种保护,攻击者只需学习如何授权他们的机器人。其他更高级的游戏服务有一套与合法用户交互的规则,不仅可以非常单调地了解特定客户端是否合法,而且还使攻击者很难模拟可用于组织有针对性攻击的合法流量。

一些专业的反DDoS提供商利用机器学习机制,对活动进行行为分析,建立游戏服务与用户正常互动的模型,而那些明显超出正常模型的活动会被自动屏蔽。

准备DDoS防御服务提供商的信息

在收集有关游戏服务运行的信息并附上其信息安全审计结果和数据包过滤规则后,您需要将这些信息提交给反 DDoS 提供商。不使用 UDP 的在线游戏实施的重要细节列表与通过 HTTP/HTTPS 运行的应用程序的 DDoS 保护要求相吻合;详细信息可在本文中找到。

在保护使用 UDP 的在线游戏时, DDoS防御服务提供商还需要了解哪些服务在某些端口上运行,是否有现成的保护配置文件,以及它们与游戏当前版本的相关性如何,以及是否需要修改它们。如果没有现成的保护配置文件或需要更正和验证,提供商将在与游戏所有者约定的时间内读取流量(例如,在玩家活动最少的时间段内),对其进行分析,得出结论并创建保护配置文件(如果没有),或验证现有配置文件。

为了以防万一,我们再重复一遍:并非所有的反 DDoS 提供商都能够过滤 UDP 流量,并且在受到攻击时只能阻止 UDP 流量。有些提供商承诺只过滤某些类型的基于 UDP 的协议。因此,务必向提供商确认他们是否可以过滤 UDP 流量,如果可以,他们是否会负责过滤您的游戏服务流量。例如,StormWall 在保护在线游戏免受 DDoS 攻击方面拥有丰富的经验,并成功地为各种基于 UDP 的通信协议配置了其服务。

尽可能向攻击者隐藏有关你的游戏服务的信息

经验丰富的攻击者在攻击游戏服务之前会尝试事先对其进行研究。首先,他会尝试对其关键组件的 IP 地址发起 DDoS 攻击。在连接反 DDoS 服务时进行的 IP 地址替换本身并不能帮助防范 DDoS 风险,因为可以使用互联网上提供的工具轻松获取互联网资源的 IP 地址。IP 地址还可以显示在通过电子邮件发送消息和通知时使用的 SMTP 数据包的标头中。应注意确保真实 IP 地址不显示在 SMTP 数据包中或通过开放端口或其他服务。

另外,连接保护后,您必须仅通过防DDoS提供商提供的IP地址开放对在线游戏的访问,并通过正确配置防火墙阻止对游戏服务的所有其他IP地址的访问,以便攻击者无法通过不受保护的地址攻击在线游戏。

如果可以向攻击者隐藏甚至允许他了解攻击的成功程度、是否有可能使游戏服务或其组件不可用的信息,那就太好了。

禁用未使用的服务并关闭不需要的端口

通过对游戏服务的信息安全进行有效审计,您一定能够了解哪些互联网服务和端口被使用,哪些没有被使用。那些不参与在线游戏运营的必须被禁用或阻止,以防止通过这些端口和服务进行攻击。否则,攻击者可以扫描和识别它们,然后通过它们对游戏服务发起 DDoS 攻击。

不要等待攻击,我们建议扫描安装游戏服务的服务器的端口,以识别所有开放端口并关闭未使用的端口。为了可靠地阻止绕过保护的访问所有开放的 IP 地址和端口,我们强烈建议使用防火墙。

我们还建议确保需要外部访问的开放端口(例如 SSH 或 SMTP)不会通过服务横幅暴露有关您的游戏服务或其域的信息(通常默认情况下在横幅中输入域名),因为如果攻击者发现您的游戏服务使用了开放的服务器端口,他们很可能会扫描其域,识别您的服务使用的 IP 地址并对其发起有针对性的 DDoS 攻击。您可以通过 Telnet 连接到横幅来检查横幅中包含的信息。要手动更改横幅中的信息,您可以使用配置文件。

优化服务器组件

如前所述,流量延迟对于在线游戏来说非常关键,因此为它们提供一定的功率余量非常重要——这将帮助它们在 DDoS 攻击发生时幸存下来,并在少量非法流量尚未被反 DDoS 提供商过滤掉时将延迟降至最低。请注意,即使是 1% 的强力攻击遗留下来的流量也会对游戏服务产生非常严重的影响。

提高生产力主要有两种方法。第一种是优化游戏服务及其部署平台(除非您可以直接访问该平台)。首先,您需要分析操作系统的网络堆栈,并确保网卡中断分布在不同的处理器核心之间,必要时手动分配它们。这对于在处理器核心之间更均匀地分配负载是必要的。

第二种方法通常需要额外花费,即迁移到更强大、更高效的(如果可能的话是专用的)物理或虚拟服务器。为此,您可以增加或升级服务器,或者购买或租用新服务器。预留资源(计算机和网络设备以及与互联网的通信渠道)也非常有用。

在服务组件以及客户之间更均匀地分配可用地址池也有助于降低在一个或多个 IP 地址受到攻击时发生故障的概率。此外,最好为游戏服务提供至少多个接入点:如果其中一个“访问 IP 地址”受到攻击,则可以快速在 DNS 表中指定另一个地址。这同样适用于提供给客户端的 IP 地址:如果其中一些受到攻击,则可以向客户端提供其他地址——当然是在对客户端进行可靠的身份验证之后(例如使用令牌)。

连接受保护的 DNS 服务

我们已经提到了使用受 DDoS 保护的 DNS 服务及其复制。这些措施有助于最大限度地降低 DNS 攻击的风险,因为 DDoS 攻击会极大地影响在线游戏的访问质量。如今,受保护的 DNS 服务既由反 DDoS 提供商(当然包括 StormWall)提供,也由专门从事 DNS 的公司提供。

定期检查保护

定期检查 DDoS 攻击防护的可行性和有效性十分必要。首先,因为 DDoS 风险的格局瞬息万变:随着时间的推移,攻击的强度和强度不断增加,因为攻击者会扩大其僵尸网络、开发新的攻击方法和工具,并且经常合作组织更具破坏性的 DDoS 攻击。其次,因为您自己的 IT 格局也在发生变化:游戏服务及其组件的新版本发布、环境更新等。定期的安全审核有助于充分评估有效性,及时识别和消除新出现的漏洞。

检查 DDoS 保护有效性的最重要方法是压力测试。它通常作为信息安全审计的一部分进行,有助于评估游戏服务抵御弱 DDoS 攻击的稳定程度并识别其漏洞。在未来执行它非常有用 - 在测试反 DDoS 服务阶段以及最终配置和调整之后。由于完全可以使用可在公共领域找到的免费工具进行压力测试,因此压力测试的成本极低。

另一种更昂贵的测试方法是模拟对游戏服务的 DDoS 攻击,这可以从提供信息安全服务的公司订购。专家可以帮助您检查游戏服务及其相关保护,评估其对 DDoS 攻击的抵御能力,并识别漏洞。

我们强烈建议您不要将安全审核局限于工作日和工作时间,还要在大多数员工可能休息的时间进行审核:周末和节假日,以及这些时间前夕的晚上。

建立流程以防范 DDoS 攻击

众所周知,信息安全是一个过程。将最小化 DDoS 风险的工作构建为一个过程并和谐地融入到更一般的信息安全流程中非常重要。与监控和审计、漏洞管理、配置、事件等子流程密切合作。不仅负责游戏服务支持和开发的内部专家,而且反 DDoS 提供商的代表也参与此过程也非常重要——从长远来看,这将有助于有效保护您的在线游戏免受 DDoS 风险的影响。

最终检查清单

  • 在应用程序的设计阶段就奠定安全性的基础
  • 为反 DDoS 提供商提供明确的攻击过滤选项
  • 准备反 DDoS 提供商的信息
  • 禁用未使用的服务并关闭不需要的端口
  • 优化服务器组件
  • 连接受保护的 DNS 服务
  • 定期检查保护
  • 建立流程以防范 DDoS 攻击

 

 

 

 

最近发表