使用AWS保护您的Minecraft服务器免受DDOS攻击

Minecraft徽标。

是否想在不显示IP地址的情况下在家运行Minecraft服务器?您可以只需使用Amazon Web Services设置免费代理即可保护您的服务器免受拒绝服务攻击。我们将向您展示如何。

本指南适用于任何游戏服务器,而不仅仅是Minecraft。它所做的只是在特定端口上的代理流量。您只需将Minecraft的端口25565更改为运行游戏服务器的端口即可。

这是如何运作的?

假设您要托管一个Minecraft服务器,并将其开放给互联网。运行一个并不难。它们易于安装,仅使用一个处理线程,即使是经过大量改装的服务器也不会占用超过2至3 GB的RAM,并且只有几个播放器在线。您可以轻松地在旧笔记本电脑上或台式计算机的后台运行服务器,而不用付钱给其他人托管。

但是,要让人们连接到它,您必须提供IP地址。这带来了一些问题。这是一个重大的安全风险,尤其是如果您的路由器仍具有默认的管理员密码。它还使您容易受到分布式拒绝服务(DDOS)攻击的影响,这不仅会停止Minecraft服务器,而且还可能关闭Internet,直到攻击消退。

您不必允许人们直接连接到您的路由器。取而代之的是,您可以从Amazon Web Services,Google Cloud Platform或Microsoft Azure租用一个小的Linux盒子,它们都有免费的层。该服务器不必足够强大来托管Minecraft服务器,它只是为您转发连接。这使您可以提供代理服务器的IP地址而不是您自己的IP地址。

假设有人要连接到您的服务器,因此她在她的Minecraft客户端中键入了您的AWS代理的IP地址。数据包通过端口25565(Minecraft的默认端口)发送到代理。代理配置为匹配端口25565流量并将其转发到您的家庭路由器。这是在幕后发生的,甚至连人都不知道。

然后,必须将您的家庭路由器进行端口转发,以将连接进一步转发到您的实际PC。您的PC会运行服务器并响应客户端的数据包。它将其转发回代理服务器,然后代理服务器重写数据包,以使其看起来像是代理服务器在响应。客户端不知道这种情况正在发生,只是认为代理是运行服务器的系统。

这就像在服务器前面添加另一台路由器一样,就像家用路由器保护您的计算机一样。但是,此新路由器在Amazon Web Services上运行,并获得了每个AWS服务(称为AWS Shield)免费提供的完整的传输层DDOS缓解措施。如果检测到攻击,则会自动缓解攻击,而不会打扰您的服务器。如果由于某种原因没有停止,您可以随时关闭实例并断开与房屋的连接。

要处理代理,请使用名为sslh的实用程序。用于协议多路复用;如果您想在同一端口上运行SSH(通常为端口22)和HTTPS(端口443),则会遇到问题。 sslh位于前面,并将端口重定向到预期的应用程序,从而解决了此问题。但是,它像路由器一样在传输层级别执行此操作。这意味着我们可以匹配Minecraft流量并将其转发到您的家庭服务器。 sslh默认情况下是非透明的,这意味着它会重写数据包以隐藏您的家庭IP地址。这使得任何人都不可能使用Wireshark之​​类的东西来嗅探它。

创建并连接到新的VPS

首先,您已经设置了代理服务器。如果您有一定的Linux经验,那么这样做绝对容易,但是不是必需的。

转到Amazon Web Services并创建一个帐户。您必须提供借记卡或信用卡信息,但这只是为了防止人们制作重复的帐户;您无需为要创建的实例付费。免费套餐会在一年后过期,因此请确保在使用完毕后将其关闭。如果您愿意使用Google Cloud Platform,可以一直免费使用f1-micro实例。 Google还提供一年$300的信用额度,您实际上可以使用该信用额度运行适当的云服务器。

AWS确实会收取一定的带宽费用。您可以获得1 GB的免费空间,但超出此部分的价格为每GB $0.09。实际上,您可能不会理会这件事,但是如果您看到帐单上有20美分的费用,请留意。

创建帐户后,搜索“ EC2”。这是AWS的虚拟服务器平台。您可能需要稍等一会儿,AWS才能为您的新帐户启用EC2。

在AWS的虚拟服务器平台上的搜索栏中键入“ EC2”。

从“实例”选项卡中,选择“启动实例”以启动启动向导。

单击“实例”,然后选择“启动实例”。

您可以选择默认的“ Amazon Linux 2 AMI”或“ Ubuntu Server 18.04 LTS”作为操作系统。点击下一步,然后要求您选择实例类型。选择t2.micro,这是免费实例。您可以在AWS的免费套餐下以24/7运行此实例。

选择“ t2.micro”。

选择“查看并启动”。在下一页上,选择“启动”,然后看到下面的对话框。单击“创建新密钥对”,然后单击“下载密钥对”。这是您对实例的访问密钥,因此请不要丢失它-将其放在“文档”文件夹中以进行保管。下载后,单击“启动实例”。

  单击“创建新的密钥对”,然后单击“下载密钥对”。下载后,单击“启动实例”。

您将返回到实例页面。查找您实例的IPv4公用IP,即服务器的地址。如果您愿意,您可以设置一个AWS Elastic IP(在重新启动后不会更改),甚至可以使用dot.tk设置一个免费域名(如果您不想继续返回此页面进行查找)地址。

查找您实例的IPv4公共IP。

保存地址以备后用。首先,您需要编辑实例的防火墙以打开端口25565。从“安全组”选项卡中,选择您的实例正在使用的组(可能是launch-wizard-1),然后单击“编辑”。

单击“安全组”选项卡,然后选择您的实例正在使用的组(可能是“ Launch-Wizard-1”)。

添加新的“自定义TCP”规则并将端口范围设置为25565。源应设置为“任意位置”或0.0.0.0/0。

添加一个新的自定义TCP规则,并将端口范围设置为25565。源应设置为0.0.0.0/0(或“任意位置”)。

保存更改,然后防火墙更新。

现在,我们将通过SSH进入服务器以设置代理;如果您使用的是macOS / Linux,则可以打开终端。如果您使用的是Windows,则必须使用SSH客户端(例如PuTTY)或安装Windows子系统(适用于Linux)。我们建议使用后者,因为它更加一致。

您应该做的第一件事是cd到您的文件文件夹,其中的密钥文件是:

cd〜/文件/

如果您使用的是Windows Subsystem for Linux,则C驱动器位于/ mnt / c /,并且必须CD到文档文件夹:

cd / mnt / c /用户/用户名/文档/

使用-i标志告诉SSH您要使用密钥文件进行连接。该文件的扩展名为.pem,因此您应该包括以下内容:

ssh -i keyfile.pem ec2-user@0.0.0.0

用您的IP地址替换“ 0.0.0.0”。如果您制作的是Ubuntu服务器而非AWS Linux,请以“ ubuntu”用户身份进行连接。

您应该被授予访问权限,并看到命令提示符更改为服务器提示符。

配置SSLH

您要从软件包管理器安装sslh。对于AWS Linux,这非常好,对于Ubuntu,则使用apt-get。您可能必须在AWS Linux上添加EPEL存储库:

sudo yum install epel-release sudo yum install sslh

安装完成后,使用nano打开配置文件:

Nano/ etc / default / sslh

将RUN =参数更改为“是”:

终端窗口中的“ RUN = yes”命令。

在最后的DAEMON行下方,键入以下内容:

DAEMON_OPTS =“-user sslh –listen 0.0.0.0:25565 –anyprot your_ip_address:25565 –pidfile /var/run/sslh/sslh.pid

将“ your_ip_address”替换为您的家庭IP地址。如果您不知道自己的IP,请在Google上搜索“我的IP地址是什么?”(是的)。

此配置使sslh代理在端口25565上的所有网络设备上进行侦听。如果您的Minecraft客户端使用其他端口或玩其他游戏,请使用其他端口号替换此端口。通常,使用sslh,您可以匹配不同的协议并将其路由到不同的地方。但是,出于我们的目的,我们只想匹配所有可能的流量并将其转发到your_ip_address:25565。

按Control + X,然后按Y保存文件。输入以下内容以启用sslh:

sudo systemctl启用sslh sudo systemctl启动sslh

如果系统上没有systemctl,则可能必须改用service命令。

sslh现在应该正在运行。确保家用路由器正在端口转发,并向计算机发送25565流量。您可能需要为计算机提供一个静态IP地址,这样它就不会更改。

要查看人们是否可以访问您的服务器,请在在线状态检查器中键入代理的IP地址。您也可以在Minecraft客户端中输入代理的IP,然后尝试加入。如果不起作用,请确保实例的“安全组”中的端口已打开。

资讯来源:由0x资讯编译自HOWTOGEEK。版权归作者Anthony Heddings所有,未经许可,不得转载
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢