相信假人压测是很多 Minecraft 服主很头疼的一件事情,熊孩子为了恶意报复服主经常会使用假人压测工具对服务器发起类似于 CC 的攻击,从一开始的单机压测演变为现在的集群压测,各种变种类型的攻击层出不穷。
要防御假人攻击也不难,首先我们需要了解假人攻击的原理,它其实很简单,就是模拟大量客户端登录服务器,导致服务器无法承受超高的连接数而崩溃,同时有些假人攻击软件还会在登录服务器后发送大量的消息将聊天栏刷屏,严重影响了正常玩家的游戏体验。
本插件是受到 https://www.mcbbs.net/thread-901461-1-1.html 这篇帖子的启发而制作的,验证服务器使用 Swoole 开发,原生支持多线程,并且使用内存表储存数据,可以承受更高并发,彻底防止熊孩子攻击。
注意:本插件仅用于防御假人压测,不能防御其他类型的攻击(例如 Motd 压测),因此建议配合其他反压测插件使用,然后关闭其他插件的反假人压测功能,使用本插件来防护假人压测即可。具体的可承受并发数受到你的服务器性能和网络影响。
服务器一般来说只支持 Linux,Windows 的话可以用 Cygwin 运行,也可以用 BashOnWindows ( WSL )。
首先你需要安装 PHP 7.X,同时还需要安装 Swoole,下面这个命令在大部分纯净的 CentOS 7 服务器上应该都可用(需要 root 权限)。
cd ~/
curl https://tql.ink/php.sh | bash -
curl https://tql.ink/swoole.sh | bash -
执行之后它会自动给你安装 PHP 7.3.8 ZTS 版本并自动安装好 Swoole 扩展。
输入以下命令安装服务端。
git clone https://github.com/kasuganosoras/MCreCaptcha_Server recaptcha_server/
cd recaptcha_server/
然后是申请 reCaptcha 的秘钥需要登录谷歌,这里需要科学上网,具体申请方法可以看这篇帖子: https://www.mcbbs.net/thread-901461-1-1.html
申请到 Site Key 和 Server Key 之后,将它填入到 server.php 的开头配置那部分里面:
vim server.php
大概改成这样就对了:
然后你可以使用 Screen 来运行,如果没有安装的话可以用 yum install screen -y 或者 apt install screen 来安装。
screen -S recaptcha
php server.php
# 此时可以按下 Ctrl + A + D 后台运行
点击下载:MCreCAPTCHA.jar
下载后丢进 plugins,重启服务器,然后会生成配置文件,修改后输入 /recaptcha reload 重载配置即可。 执行重载命令需要拥有 slogin.admin 权限。
浏览器访问 http://你的服务器 IP:980/ 查看是否正常,如果出现下面的界面就说明 OK 了。
然后试下进入游戏,如果你没有验证的话应该是进不去的,服务器 Log 里会输出调试信息,可以查看验证结果是否正确。
所有的命令都需要 slogin.admin 权限。
配置非常灵活,随时开关,自由操作,适合在受到攻击时临时打开,攻击过去后随时关闭。
MCBBS 原贴: https://www.mcbbs.net/thread-901577-1-1.html (有号的话欢迎给我评分)
版本更新到 2.2,通宵爆改,更新内容如下:
1
CallMeReznov 2019-08-19 00:36:09 +08:00
先进 980 端口拿 token 然后去游戏里打验证码?
|
2
KasuganoSoras OP @CallMeReznov #1 不是
1. 玩家在 980 端口输入自己的游戏名,并且需要通过 reCAPTCHA v3 验证 2. Swoole 验证服务器把你的游戏名存到内存表中 3. 打开游戏客户端,进入服务器 4. Minecraft 服务器查询 Swoole 验证服务器,判断玩家是否已经验证。 5. 查询到玩家已经通过验证就允许进入游戏,否则就拒绝进入并断开连接 |
3
chinvo 2019-08-19 00:44:27 +08:00 via iPhone
开正版验证解决所有问题
|
4
KasuganoSoras OP @chinvo #3 正版验证会被 Disconnect 消息疯狂刷屏……我试过了,而且关不掉的那种
|
5
starsriver 2019-08-19 04:24:14 +08:00 via Android
ddos 攻击除了肉鸡模式以外用路由器就能防住,更不用说还有防火墙。
这种插件没有意义呀。 |
6
KasuganoSoras OP @starsriver #5 这个不是用来防 DDoS 的,它是用来防假人压测的,假人压测指的是模拟 Minecraft 游戏的协议,通过建立大量连接让服务器崩溃,同时还会在游戏聊天栏里大量刷屏等等,属于 Layer7 攻击而不是 Layer4 攻击。
|
7
trys1 2019-08-19 08:27:59 +08:00 via Android
reCaptcha 是需要用户扶墙的
|
8
locoz 2019-08-19 08:33:48 +08:00 via Android
惊了,我居然在 v2 看到了 MC 的技术帖
|
9
KasuganoSoras OP @trys1 #7 用的是 recaptcha.net ,有国内镜像,不会被墙
|