MCG的插件模式是一个Bukkit/Spigot服务端插件。它可以在服务器运行过程中对服务器进行持续的保护,减少漏网之鱼。
请注意,插件模式的安全是相对的。可能存在极少数恶意插件能够突破MCG的行为管控。不要运行存在已知恶意插件的服务端,哪怕您已经安装了MCG!
在运行来源未知服务端前,我们强烈推荐先使用MCG的控制台模式进行扫描,并提供一个虚拟化(Sandboxie等)的环境!
插件模式的优点是:
- 权限管控:管控插件非恶意但可能不被希望具有的行为,例如联网的用户统计。
- 额外保险:减少被MCG的控制台模式漏过(很不幸,但是这种事情可能发生)的恶意插件产生的影响。
- 行为分析:监控插件的具体行为。例如找出某个特定的文件是被哪个插件读取了,或者是哪个插件造成了服务器卡顿。
- 调试功能:提供了CryptMonitor、Dumper等实用小程序。
插件模式特别适合:
- 不得不使用非正规来源(例如聊天群组中传播)的插件的普通服主。
- 希望进一步了解自己安装的插件的具体行为的服主。
- 希望获得进一步的安全保障的服主。
- 对自己制作的服务端的安全性特别负责的服务端整合包制作者。
MCG作者在此授权所有服务端整合包制作者在不对MCG加以修改的情况下,将MCG用于任意商业或非商业整合包。
快速开始MCG会在所有插件加载()之后、启动(注册事件)之前读取配置并注册SecMan。
MCG会在服务端彻底启动后(即所有插件都已经加载完成)开始异步的插件扫描。
MCG会在服务端完成第一个Tick(创世Tick)后开始事件监视器的启动。
配置:事件监视器- inject: true
- op: true
- lag: true
- gm: true
- mute: false
复制代码
inject:是否启用事件监视器模块。开启模块后,您方可使用Inject模块的功能。
op:检查是否存在这样的事件:某个不是OP的玩家在经过某个插件的处理后获得了OP权限。封禁这个玩家并指出涉事插件。
lag:检查是否存在这样的事件:某个插件在主线程上执行了耗时过长的操作。指出涉事插件。
gm:检查是否存在这样的事件:某个插件切换了服务器核心的游戏模式。指出涉事插件。
mute:在控制台中隐藏“Unable to pass event to plugin XXX”等字样。相当于半个ConsoleSpamFix,但是不会掩盖printStackTrace。
配置:行为管控总开关
enable:是否启用行为管控模块。开启模块后,您方可使用SecMan模块的功能。
basic:是否禁用高级功能组(平台库管控与反射管控)。
配置:文件行为管控- watchlist:
- - "code.yml"
- blocklist:
- - "desktop"
- readonly:
- - "readonly"
复制代码
字符串列表。如果目标文件路径转换为纯小写后包含列表中的任意一个字符串,则会视为命中规则。
watchlist:监控列表。如果目标文件路径命中监控列表中的任意一个规则,则会在控制台中输出追踪。追踪信息包含插件文件、类路径与具体的行为。
blocklist:阻止列表。如果目标文件路径命中阻止列表中的任意一个规则,则会阻止插件对该文件的访问。
readonly:只读列表。如果目标文件路径命中只读列表中的任意一个规则,则会阻止插件对该文件的写入或执行。
watchlist具有最高优先级,其次是blocklist,最后是readonly。
例如,如果插件尝试读取一个同时被三个列表命中的文件,那么MCG会在控制台中输出追踪信息,并阻止插件对该文件的访问。
配置:系统命令管控- allowexec:
- - "ping"
- verbosex: true
复制代码
allowexec:允许执行的系统命令列表。如果插件尝试执行的命令转换为纯小写后以列表中的任意一个字符串开头
,则会允许插件执行该命令。
verbosex:如果有插件尝试执行不在allowexec列表中的命令,是否在控制台中输出追踪信息。
配置:网络行为管控- allow:
- - "minecraft.net"
- - "127.0.0.1"
- verbosen: true
复制代码
allow:允许访问的网络地址列表。如果插件尝试访问的地址与列表中的任意一个字符串相等,则会允许插件访问该地址。
不包含子域名和/或协议。例如,如果您允许访问"minecraft.net",则插件不能访问"www.minecraft.net",但是可以访问"ftp://minecraft.net:253/a/b"。
verbosen:如果有插件尝试访问不在allow列表中的地址,是否在控制台中输出追踪信息。
配置:反射管控- limit:
- - "org.bukkit."
- - "net.minecraft."
- verboser: true
复制代码
limit:允许反射的类路径列表。如果插件尝试反射的包或类路径以列表中的任意一个字符串开头,MCG会允许插件反射该包或类。
特别的,因为包不以.结尾,因此“org.bukkit.”会允许反射org.bukkit包下的所有类,但是不会允许反射org.bukkit包本身。
verboser:如果有插件尝试反射不在limit列表中的包或类,是否在控制台中输出追踪信息。
配置:平台库管控- exempt:
- - "AuthMe"
- verbosei: true
复制代码
exempt:允许使用平台库的插件列表。只有存在于列表中的插件才能使用平台库。列表中允许存在未安装的插件。如果有插件同名,MCG会都允许使用平台库。
verbosei:如果有插件尝试使用平台库,但是不在exempt列表中,是否在控制台中输出追踪信息。
配置:插件扫描本项目不允许配置。MCG将按照标准模式扫描全部插件,并且在服务器聊天中向所有人展示扫描出的异常结果。
如果有误判,请联系作者。
配置:高级功能- dumper: false
- noagt: false
- show: false
复制代码
dump:启用后,您将在服务端根目录的mcg_dump文件夹中找到所有被动态加载的类的dump。用于分析动态加载的恶意类。
noagt:启用后,MCG将破坏JavaAgent的实现类,阻止当前JVM中的所有JavaAgent。
show:启用后,MCG将破坏AES Cipher的实现类,阻止当前JVM中的AES加解密流程并直接输出密钥。用于分析潜在的加密后的恶意类。
在启用这些功能前,请自行确认具有足够的知识与能力。这些功能高度危险,作者不会提供任何技术支持。
这些功能也有可能导致您的机器损坏或数据丢失。请务必在虚拟化环境中使用这些功能。