锁好代理端和后端
在服务器网络中,每个玩家都应该经由代理端进入。如果某个后端服务器的端口对互联网开放,任何人都可以直接连上去,绕过代理端的所有检测;如果后端使用的是没有 BungeeGuard 的普通 BungeeCord 转发,还能用任意名字进服,包括管理员的名字。
- 把后端服务器绑定到 127.0.0.1 或内网,或者在防火墙中关闭它们的端口,只让代理端能访问。
- Velocity 搭配 1.13+ 后端时,使用 modern 玩家信息转发,并在每个 Paper 后端的配置中填入相同的转发密钥。1.8 到 1.12 的后端使用 bungeeguard 转发模式,并安装 BungeeGuard 插件。
- 在 BungeeCord 上开启
ip_forward并加装 BungeeGuard,这样后端只接受带有你的令牌的连接。 - 代理端保持正版验证开启,除非你运行的是装有登录插件的离线服务器。
保持服务器和插件为最新版本
Paper 和 Velocity 的新构建经常修复漏洞,其中包括只用一个数据包就能让服务器崩溃的漏洞。请更新服务端和代理端,并删除不再使用的插件:每个插件都是以完全权限运行的代码。
只从插件自己的页面下载:Hangar、Modrinth、SpigotMC 或作者的 GitHub。付费插件的泄露版是服务器被植入后门最常见的途径之一。
权限和 op
公开服务器上不要给任何人 op。使用 LuckPerms 之类的权限插件,每个角色只给它需要的权限。
谨慎使用 * 或 essentials.* 这类通配权限。它们往往包含执行控制台命令、发放物品或修改权限的命令,一旦有人盗用了某个管理员账号,几乎就拥有了和控制台相同的权力。
有人离开团队的当天,就收回他的权限。
保护管理员账号
在开启正版验证的服务器上,管理员账号就是微软账号,所以要确保管理员的微软账号使用强密码并开启两步验证。
在离线服务器上,账号只靠登录插件的密码保护。管理员的密码应该足够长、不在别处使用;如果你的登录插件支持两步验证,也要开启。详见密码暴力破解。
时不时查看管理员账号是从哪里进服的。如果出现新的国家或运营商,最好问一下本人。
关掉不用的东西
- RCON 通过网络提供完整的控制台访问。不需要就保持
enable-rcon=false;如果要用,请设置长密码,并在防火墙中只允许你自己的地址。 - 不需要的话就关闭
enable-query。 - 面板、数据库和 SSH 的端口只应对需要的地址开放。
备份
把世界和插件数据的备份放在服务器机器之外,并定期检查能否恢复。备份和服务器在同一块硬盘上,机器坏了或主机账号被人接管时就帮不上忙。
DDoS、机器人和 VPN
DDoS 攻击在流量到达 Minecraft 之前就会塞满网络,所以任何插件都挡不住,只能由主机商或网络防护服务来处理。参见插件在 DDoS 面前能做什么、不能做什么。
机器人攻击、VPN 用户和规避封禁都表现为真实的进服,要在代理端拦截:靠 Kordon 这样的地址检测,对来自干净地址的机器人则靠 Sonar 这样的验证插件。参见如何拦截 VPN和反机器人插件对比。
检查清单
- 后端只能从代理端访问,IP 转发使用密钥或 BungeeGuard。
- 服务端、代理端和插件已更新,不用的插件已删除,没有来自泄露渠道的插件。
- 公开服务器上没有 op,各角色只有必要的权限。
- 管理员账号使用不重复的强密码,并开启两步验证。
- RCON 和 query 已关闭,或只允许你的地址。
- 备份放在机器之外,已测试过恢复。
- DDoS 防护由主机商提供,机器人和 VPN 防护放在代理端。