使用AWS保护您的家庭MIWARTH服务器免受DDOS攻击

想要在不泄露IP地址的情况下在家中运行一台“我的世界”服务器吗?你可以的!。只需使用Amazon Web服务设置免费代理即可保护您的服务器免受拒绝服务攻击。我们会教你怎么做的。

本指南适用于任何游戏服务器,而不仅仅是“我的世界”。它所做的一切都是特定端口上的代理流量。您只需将“我的世界”的端口25565更改为您的游戏服务器运行的任何端口。

这是怎么回事?

假设您想要托管一台“我的世界”服务器,并将其开放给互联网。经营一家并不难。它们易于安装,只使用一个处理线程,即使是大量修改的服务器也不会占用超过2到3 GB的RAM,而且只有几个玩家在线。您可以很容易地在旧笔记本电脑上运行服务器,或者在台式计算机上的后台运行服务器,而不是付钱让别人为您托管服务器。

但要让人们连接到它,你必须提供你的IP地址。这带来了一些问题。这是一个重大的安全风险,特别是如果您的路由器仍然使用默认的管理员密码。它还让你容易受到分布式拒绝服务(DDOS)攻击,这不仅会阻止你的“我的世界”服务器,还会关闭你的互联网,直到攻击平息。

您不必允许用户直接连接到您的路由器。取而代之的是,你可以从亚马逊网络服务(Amazon Web Services)、谷歌云平台(Google Cloud Platform)或微软Azure(Microsoft Azure)租用一个小Linux盒子-所有这些都有免费的层。这台服务器不需要足够强大来托管“我的世界”服务器--它只需为您转发连接即可。这允许您提供代理服务器的IP地址,而不是您自己的IP地址。

假设有人想要连接到您的服务器,所以她将您的AWS代理的IP地址输入到她的“我的世界”客户端。数据包在端口25565(“我的世界”的默认端口)上发送到代理。代理配置为匹配端口25565流量并将其转发到您的家庭路由器。这发生在幕后--连接的人甚至不知道。

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

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

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

创建并连接到新VPS

要开始,您需要设置代理服务器。如果您有一些Linux经验,这肯定更容易做到,但这不是必需的。

转到Amazon Web Services并创建帐户。您必须提供您的借记卡或信用卡信息,但这只是为了防止人们创建重复帐户;您不会为您正在创建的实例收费。免费级别在一年后确实会过期,所以一定要在用完后将其关闭。如果你更愿意使用的话,谷歌云平台有一个F1-MICRO实例一直是免费的。谷歌还提供为期一年的300美元信用额度,你实际上可以用这笔钱来运行一台合适的云服务器。

AWS确实收取一点带宽费用。你可以免费获得1 GB,但超过这一数字则要缴纳每GB 0.09美元的税。实际上,你可能不会仔细看这个,但如果你看到账单上有20美分的费用,请注意这一点。

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

从“Instance”选项卡中,选择“Launch Instance”以打开启动向导。

您可以选择默认的“Amazon Linux 2 AMI”或“Ubuntu Server 18.04 LTS”作为操作系统。单击Next,系统会要求您选择实例类型。选择t2.Micro,这是空闲层实例。您可以在AWS的空闲层下全天候运行此实例。

选择“查看并启动”。在下一页中,选择“Launch”,您将看到下面的对话框。单击“创建新密钥对”,然后单击“下载密钥对”。这是您访问实例的密钥,因此不要丢失-为了安全起见,请将其放在您的Documents文件夹中。下载完成后,点击[启动实例]。

您将返回到实例页面。查找您的实例的IPv4公网IP,这是服务器的地址。如果您愿意,您可以设置一个AWS Elastic IP(重启后不会更改),甚至可以设置一个带有dot.tk的免费域名,如果您不想一直返回此页面查找地址的话。

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

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

保存更改,防火墙将更新。

我们现在将通过SSH连接到服务器来设置代理;如果您使用的是MacOS/Linux,则可以打开您的终端。如果您使用的是Windows,则必须使用SSH客户端,如PuTTY或安装Windows Subsystem for Linux。我们推荐后者,因为它更一致。

您应该做的第一件事是将CD复制到密钥文件所在的Documents文件夹:

cd ~/Documents/

如果您使用的是Windows Subsystem for Linux,则您的C盘位于/mnt/c/,并且您必须向下CD至Documents文件夹:

cd /mnt/c/Users/username/Documents/

使用-i文件标志告诉SSH您希望使用密钥文件进行连接。该文件的扩展名为.pem,因此您应该将其包括在内:

ssh -i keyfile.pem ec2-user@0.0.0.0

将“0.0.0.0”替换为您的IP地址。如果您使用的是Ubuntu服务器而不是AWS Linux,请以用户“ubuntu”身份连接。

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

配置SSLH

您希望从包管理器安装sslh。对于AWS Linux,这将是YUM,对于Ubuntu,您可以使用apt-get。您可能需要在AWS Linux上添加Epel存储库:

sudo yum install epel-releasesudo yum install sslh

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

nano /etc/default/sslh

将RUN=1参数更改为“yes”:

在最后一行守护程序下面,键入以下内容:

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地址,请搜索“What is my IP address?”(我的IP地址是什么?)。在谷歌上-是的,说真的。

此配置使SSLH代理监听端口25565上的所有网络设备。如果您的“我的世界”客户端使用的是不同的端口号,或者您玩的是不同的游戏,请将其替换为不同的端口号。通常,使用sslh,您可以匹配不同的协议并将它们路由到不同的位置。不过,出于我们的目的,我们只是希望匹配所有可能的流量,并将其转发到YOUR_IP_ADDRESS:25565。

按Ctrl+X,然后按Y保存文件。键入以下命令以启用sslh:

sudo systemctl enable sslhsudo systemctl start sslh

如果您的系统上没有systemctl命令,您可能需要改用service命令。

sslh现在应该正在运行。确保您的家庭路由器正在端口转发,并将25565流量发送到您的计算机。您可能希望为您的计算机提供静态IP地址,这样就不会更改此地址。

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

相关文章