AlixSystem - 反作弊登录验证系统
AlixSystem 是一款现代化的安全插件,提供登录系统、自动验证码、反机器人、反VPN和应用层级的反DDoS攻击功能,所有功能均可完全配置,也可按需关闭。它性能卓越,采用原生低层级缓冲区控制,充分利用服务器提供的异步线程,几乎完全独立于主线程运行。
核心特性
- 登录系统:支持通过命令、PIN码或铁砧界面登录。
- 自动验证码:为未注册玩家提供验证码挑战(自 3.6.0 起使用自动检查,但仍可切换为此验证码)。
- 双重身份验证:支持使用任何 TOTP 应用(如 Google Authenticator)进行2FA。
- 反机器人:启用机器人攻击检测算法,并配合快速阻断的防火墙系统。
- 账户限制:限制每个IP允许注册的账户总数。
- 反VPN:阻止使用VPN的未注册玩家登录。
- 反DDoS:主要针对 MCSTORM 或其他利用加入请求的 Netty 崩溃攻击。
- 控制台净化:隐藏失败的登录尝试记录,避免控制台刷屏。
- Velocity 版本:支持 Velocity 代理。
配置文件概览
插件拥有三个主要的可配置文件:config.yml、messages.txt 和 commands.txt。
config.yml 主要分区
- PRE-REGISTER:玩家加入前的连接控制。
- CAPTCHA:验证码相关设置。
- LOGIN:登录与注册流程设置。
- GUI:登录GUI界面设置。
- CHAT:聊天管理设置。
- UTILITIES:通用功能设置。
- TECHNICAL:高级技术性设置。
关键配置选项示例
prevent-first-time-join: true:强烈建议启用,可优化性能并防止未注册玩家的一次性连接(常见于机器人攻击)。max-total-accounts: 1:限制每个IP允许的账户总数,设为0或负数可禁用。captcha: true:为未注册玩家启用验证码。password-hash-type: 3:设置密码哈希类型(推荐使用3,即SHA-256哈希)。auto-save: true:启用重要数据的自动异步保存。
messages.txt
此文件允许您完全自定义和翻译插件发送的所有消息。您可以使用内置命令快速提取和合并翻译。
commands.txt
此文件允许您修改 AlixSystem 提供的所有命令别名。您也可以通过添加特定前缀来阻止某些命令注册。
- 使用
##前缀可完全阻止命令注册。 - 使用
#前缀则仅保留alixsystem:<基础命令>权限。
快速翻译指南
- 启动服务器。
- 执行命令
/alixsystem messages-extract(或简写/as m-e)。 - 前往服务器文件目录,复制
extracted-messages.txt文件的内容。 - 使用翻译工具(如谷歌翻译或 ChatGPT)将内容翻译为目标语言。
- 将翻译后的文本粘贴回
extracted-messages.txt文件并保存。 - 执行命令
/alixsystem messages-merge(或简写/as m-m)。 - 重启服务器,翻译即生效。
与其他插件协同使用
- AlixSystem 会检测是否已有其他插件注册了相同命令(管理员命令和登录命令除外)。如果存在冲突,AlixSystem 将放弃注册该命令。
- 如果您使用其他命令提供插件,Alix 会自动允许其命令被覆盖(管理员和验证命令除外)。如果发现某些插件命令未被注册而 Alix 的命令被注册,请在我们的 Discord 服务器上提交错误报告。
性能与监控
- 插件设计为高性能,几乎完全异步运行。如需测试其对服务器性能的影响,建议使用 spark profiler。
- 插件集成了 bStats 统计,您可以在以下链接查看数据:https://bstats.org/plugin/bukkit/AlixSystem/18945
支持与贡献
- 主要支持渠道为 Alix Development Discord 服务器:https://discord.gg/bWjmA7s3xV
- 更详细的文档(包括权限和配置说明)可在 Spigot 资源页面查看:https://www.spigotmc.org/resources/alixsystem.109144/field?field=documentation
- 如果您喜欢此插件,可以考虑捐赠以支持其持续维护。
- 如果您制作或已制作了本插件的展示视频,可以通过 Spigot 或 Discord(用户 _shadowofheaven_)联系我。
AlixSystem 是一款功能全面的 Minecraft 服务器管理插件,集成了玩家管理、家园传送、聊天控制、登录安全与高效防火墙等多种核心功能,旨在为服务器提供稳定、安全且高性能的运行环境。
权限列表
管理员命令权限
以下命令需要对应的权限节点才能执行
alixsystem(主命令):alixsystem.adminop:alixsystem.opdeop:alixsystem.deopunban:alixsystem.unbanunbanip:alixsystem.unbaniptempban:alixsystem.tempbantempbanip:alixsystem.tempbanipaddwarp/removewarp:alixsystem.admin.warpsetspawn:alixsystem.setspawn
基础命令权限
玩家常用的功能性命令
fly:alixsystem.flyrename:alixsystem.renamespeed:alixsystem.speedheal:alixsystem.healfeed:alixsystem.feedenderchest:alixsystem.enderchestinvsee:alixsystem.invseegamemode:alixsystem.gamemodelist:alixsystem.listnickname:alixsystem.nicknamespawn:alixsystem.spawnwarp:alixsystem.warp
登录相关命令
这些命令通常无需特殊权限即可使用
registerloginchangepasswordaccountcaptcha(该命令在 2.8.7 版本中已被移除,改为聊天输入)
家园命令权限
所有家园相关命令均需权限:alixsystem.home
sethomeremovehomehomehomelist
传送请求命令权限
所有传送请求相关命令均需权限:alixsystem.tpa
tpatpaccepttpadenytpacanceltpaontpaoff
聊天命令权限
chat(chaton/chatoff):alixsystem.admin.chatchatclear:alixsystem.admin.chatclearmute:alixsystem.muteunmute:alixsystem.unmutemsg(无需权限)reply(无需权限)
非命令权限
这些权限节点用于控制特定功能
alixsystem.admin.chat.bypass: 允许绕过聊天关闭 (chatoff) 和聊天延迟限制。alixsystem.maxhomes.<number>: 定义玩家可设置的最大家园数量,请将<number>替换为具体数字。alixsystem.chatcolor: 允许在聊天中使用颜色代码。
配置指南
所有配置选项均在 config.yml 文件中有详细说明。以下是一些常见目标的推荐配置:
反机器人
所有必要的反机器人措施默认均已启用,包括
captcha及其相关配置prevent-first-time-joinanti-vpnping-before-join因其他安全措施的引入已被弃用。
性能优化
AlixSystem 默认即以实现最佳性能为目标进行设计。
禁止封禁玩家创建小号
需要同时进行以下设置
- 将
anti-vpn设置为true - 将
max-total-accounts设置为单个用户允许拥有的最大账号数(任何大于零的数字,例如1)。
打造纯净的生存服务器
- 将
captcha-visual-type设置为map或保持为默认的subtitle。 - 将
chat-delay设置为500或更高以防止刷屏。 - 建议将
check-server-compatibility和debug参数设置为true。
抗 DDoS 防火墙
当有连接尝试建立时,无论服务器内部系统如何工作,都会占用 CPU 和带宽资源。因此,程序完全防止对服务器的影响是不可能的。AlixSystem 通过其防火墙尽最大努力来最小化资源占用。它共有三种防火墙类型:
Netty 防火墙 (主类型)
该类型通过 Netty 注入服务器管道,并根据子类型(在 config.yml 中由 fast-raw-firewall 参数定义)处理连接。这是一个通用类型,也是 Alix 启动时的默认选择。与所有 Netty 连接一样,由于本地系统调用,它在 Linux 上运行更快。
子类型:快速 & 原始
- 如果使用此子类型,连接在被识别为阻止后会立即关闭,用户不会收到任何信息,只会看到“(...) Connection Refused”。
- 这是默认配置,是在现有限制下能达到的最快速度。
子类型:延迟 (已弃用 - 在 3.0.0 版本中移除)
- 此子类型会故意等待玩家发送其名称信息,以便向其发送 IP 已被防火墙阻止的消息,并在玩家收到数据包后关闭连接。
- 这种防火墙速度最慢,因为它使用额外的资源并使连接保持更长时间。
操作系统防火墙 (正在积极开发中,暂不可用)
- 这是三种防火墙中最快的,但只能在 Linux 系统上使用,并且用户需要拥有 ROOT 权限。
- 它使用 IPTables 和 IPSet 来让操作系统快速丢弃连接。这种方式更快,因为连接从一开始就没有被接受,并且查找 IP 是否被阻止的平均时间(假设没有哈希冲突)约为 2-3 纳秒,甚至可能更少。
- 此时主要问题变成了带宽过载,而非服务器 CPU。粗略计算,在 10 MBps 带宽下,它应能处理大约 73.5K 至 78.1K CPS(每秒连接数)。实际数值可能要高得多。