我的 MC 离线服被黑了——从顶号到炸服的完整日志复盘 昨晚和朋友打雪仗打到一半服务器被人端了。整个过程不到六分钟干净利落。我把控制台日志全贴出来顺便聊聊离线服到底有哪些坑。先说结论我开了online-modefalse离线模式没装任何登录验证插件用的默认 25565 端口。这三个条件凑在一起等于把服务器的大门钥匙挂在了门上。如果你也有离线服看到这里可以先去改配置回来再慢慢看。事情经过一开始很正常7 月 6 号晚上十一点我和两个朋友在服务器里瞎玩打雪仗聊天没什么特别的。日志里能看出来当时的状态很悠闲[23:03:57] [Server thread/INFO]: [Not Secure] ii7777 来咱俩打雪仗 [23:04:24] [Server thread/INFO]: [Not Secure] potter 笑死我了回去给你看个好玩的注意到[Not Secure]这个标记没有——这就是离线服的特征。正版服这里不会有这个因为经过了 Mojang 的 session 验证。离线服跳过了这一步所以服务端自己都知道连接不安全。然后来了两个不速之客23:04:57突然冒出来两个陌生 ID 进服[23:04:57] ScreenConnect[/194.110.115.24:59170] logged in with entity id 78420 [23:05:43] LaffyOnTop[/194.110.115.52:51322] logged in with entity id 79105两个 IP 都是194.110.115.x查了一下是比利时 M247 机房的地址。M247 是个廉价 VPS 厂商IP 段经常出现在各种代理链路里扫服的人特别喜欢用。他们一进来就开始触moved too quickly[23:05:00] [Server thread/WARN]: ScreenConnect moved too quickly! -5.713,6.382,-6.112 [23:05:50] [Server thread/WARN]: LaffyOnTop moved too quickly! -0.505,0.347,-10.811这个警告说明他们开了飞行或者加速外挂服务端检测到玩家位移速度异常。正常人不可能一秒移动 10 个方块以上。当时我以为就是两个外挂玩家进来捣乱的没当回事。现在回头看他们其实是在用高速飞行快速扫描地图、查看 Tab 列表上的玩家判断谁有 OP 权限。最关键的一分钟23:06:28一切开始失控。[23:06:28] [Server thread/INFO]: ii7777 lost connection: You logged in from another location [23:06:29] [Server thread/INFO]: ii7777[/194.110.115.24:57052] logged in with entity id 79658 [23:06:31] [Server thread/INFO]: [ii7777: Made LaffyOnTop a server operator]这段日志翻译一下我朋友ii7777他是有 OP 的突然被踢了原因写的是你在另一个地方登录了一秒钟后一个新的ii7777从攻击者的 IP 地址登录了再过两秒这个假的ii7777直接给了LaffyOnTopOP 权限三秒钟服务器易主。原理很简单但第一次亲眼看到还是觉得不可思议离线服验证身份的方式就是看你客户端报上来的玩家名。你叫什么名字服务器就认你是谁。攻击者只需要在启动器里把 ID 改成ii7777重连一下服务器就会踢掉原来的ii7777然后把所有权限——包括 OP——全部交给这个新连接。没有密码没有 token 校验没有任何二次确认。这就是离线模式最大的问题。正版服走 Mojang 的 session server 做了一次令牌校验你的游戏客户端持有一个跟你账号绑定的 access token服务端会去向 Mojang 验证这个 token 是否合法。离线模式跳过了这一步等于把认证环节直接砍掉了。接下来就是单方面的屠杀拿到权限之后攻击者开始干活了。先把我朋友potter的 OP 撤了把原管理员ii76ii的 OP 也下了同时给他们自己的号ScreenConnect上了 OP[23:08:02] [ii7777: Made potter no longer a server operator] [23:08:16] [ii7777: Made ScreenConnect a server operator] [23:08:18] [ii7777: Made ii76ii no longer a server operator]这套操作很有章法——先拿权再巩固把我们原来的管理员全部清理掉防止有人通过控制台或者 Rcon 把权限夺回来。然后在公屏打了一些种族歧视的内容就不贴了。中间还伴随着大量的 TNT 和苦力怕爆炸[23:07:34] Villager died, message: Villager blew up [23:07:51] potter blew up最后直接把服务器干崩了大概 23:09 的时候攻击者开始用/fill指令大规模填充方块。这个指令在 OP 手里基本等于地图编辑器的批量操作——指定一个区域瞬间填满方块。[23:09:30] [ii7777: Successfully filled 4692 block(s)] [23:09:34] [ii7777: Successfully filled 26804 block(s)]两次 fill一共塞了三万多个方块。如果填的是 TNT 或者一些会触发连锁更新的方块服务端在处理这些方块状态变化的时候会面临极其巨大的计算量。日志里紧接着就出现了经典的告警[23:09:38] Cant keep up! Is the server overloaded? Running 3081ms or 61 ticks behindMC 服务端正常情况下每个 tick游戏循环应该在 50ms 内跑完。这条日志说服务端已经落后了 61 个 tick也就是超过 3 秒没跟上正常节奏了。然后情况继续恶化Netty 网络层开始丢包[23:10:33] [Netty Epoll IO #0/WARN]: Failed to deliver packet, sending fallback clientbound/minecraft:system_chat最终23:10:39主线程卡死了整整 60 秒。Minecraft 的 Watchdog 线程检测到主线程长时间无响应直接判定崩溃强制关机[23:10:39] [Server Watchdog/ERROR]: A single server tick took 60.00 seconds (should be max 0.05) [23:10:39] [Server Watchdog/ERROR]: Considering it to be crashed, server will forcibly shutdown.从攻击者进来到服务器彻底死掉总共六分钟。这帮人怎么找到我的事后复盘了一下我觉得攻击流程大概是这样的用 Masscan 或者 Shodan 扫全网25565端口找出所有在跑 MC 服务器的 IP用 VPN 连上去看 log 里有没有[Not Secure]标记有就是离线服进服之后开外挂到处飞看 Tab 列表和聊天前缀找出 OP 玩家的 ID改名顶号继承 OP给自己人上 OP写入ops.json当后门炸图或者卡服第 1 步完全是自动化的他们根本不需要知道你的服务器存在。你现在去 Shodan 搜minecraft server能出来几十万个结果全都是开着 25565 端口的裸服务器。我后来做了什么服务器被炸之后我花了点时间做了以下几件事改端口。server.properties里的server-port25565改成了一个五位数端口同时在云服务商的安全组里放行。这一步不能防住定向攻击但能过滤掉 99% 的自动扫描。大部分扫服脚本只扫 25565改个端口就等于从搜索结果里消失了。开白名单。white-listtrue然后手动把朋友加进去。开启白名单之后非白名单玩家连 TCP 握手都过不了根本进不来更别说侦察你的服务器了。这一步直接堵死了整个攻击链的前两个环节。装了 AuthMe。这个是离线服最关键的防线。装了之后每个玩家第一次进来要/register 密码之后每次登录要/login 密码。没通过验证的玩家会被锁定在一个观察模式里——看得见这个世界但不能动、不能交互、不能执行任何指令。即使有人知道你的 ID 并成功顶号登录他不知道密码的话就是一个完全无法操作的观察者OP 权限形同虚设。这三步做完之后之前那种改名顶号就能拿到最高权限的攻击方式在我这个服务器上已经不可能成功了。每一步单独拿出来都有明确的作用措施防住什么改端口自动化端口扫描白名单陌生人进服侦察AuthMe改名顶号劫持权限三条加在一起基本覆盖了离线服所有已知的入侵路径。另外还建议做的两件事定时备份。写个 crontab 脚本每小时把世界存档和ops.json打包备份到别的地方。万一真的出事恢复起来很快。装反作弊。Matrix、GrimAC 这些插件可以检测飞行、加速之类的异常行为自动封号。如果当时装了反作弊攻击者一开始开外挂侦察的时候就已经被踢了后面的故事根本不会发生。写在最后其实这些安全措施没有什么是新知识AuthMe 的 wiki 里都写了各种服主群里也反复有人提。但总有那种侥幸心理——“我的服务器又不大谁会专门来搞我”。问题就在于他们不是专门来搞你的。他们是批量扫你的服务器只是被扫到的其中一个。对攻击者来说入侵你的服和入侵一千个别的服没有任何区别全脚本跑的。离线模式本身没有问题正版验证关了就是关了你省去了正版校验的开销朋友也不用买号就能玩。但关掉正版验证的同时你得自己补上身份认证这一环。不然就是裸奔。如果你也在跑离线服现在就去检查这三个配置。真的。基于 2026-07-06 服务器控制台日志还原。所有 IP、ID 均来自真实日志记录。