本帖最后由 1582952890 于 2017-9-16 21:29 编辑

未经本人许可严禁转载此插件/使用其代码
听说有人把这个插件放到淘宝高价出售,感谢您让我明白了什么叫无耻
介绍:
此插件可以 90% 抵御假人压测和 ?% 抵御MOTD压测。
不知道具体能抵御多少的MOTD压测,因为测试的时候无论我怎么打都没反应,不管装不装这个插件都一样。。难道是1.8已经修复了这个漏洞?
不过假人压测还是没问题滴~图:安装了GFW并且配置为默认的情况下。
在开始压测时CPU瞬间飙到100%,然后被插件拦截,之后又恢复正常。
如果不装这个插件,那CPU就保持在90%~100%,基本上算炸了。
原理:
使用ProtocolLib检测MOTD请求包和玩家进入服务器数据包,如果超出设置的频率就将此IP加入黑名单,指定的时间后解除。
教程&命令&配置文件:
其实这个拦截什么的都是全自动的,不需要人来管。
命令
以上命令全部需要OP权限
配置文件复制代码嗯差不多就这样了……
哦对了还有,插件拦截到压测的时候会将信息储存到 插件配置文件夹下的 logs.txt 中。
下载:
GreatFireWall.jar
(23.32 KB, 下载次数: 19527)
更新日志:
注意!此插件需要前置ProtocolLib否则无法加载
[ProtocolLib 3.4.0] 适用于 1.7 服务器
[ProtocolLib 3.6.5] 适用于 1.8 服务器
[ProtocolLib 4.0.2] 适用于 1.8,1.9,1.10 服务器
不要在BC上用,以后(可能)会研发BC专版

未经本人许可严禁转载此插件/使用其代码
听说有人把这个插件放到淘宝高价出售,感谢您让我明白了什么叫无耻
介绍:
此插件可以 90% 抵御假人压测和 ?% 抵御MOTD压测。
不知道具体能抵御多少的MOTD压测,因为测试的时候无论我怎么打都没反应,不管装不装这个插件都一样。。难道是1.8已经修复了这个漏洞?
不过假人压测还是没问题滴~图:安装了GFW并且配置为默认的情况下。

在开始压测时CPU瞬间飙到100%,然后被插件拦截,之后又恢复正常。
如果不装这个插件,那CPU就保持在90%~100%,基本上算炸了。
原理:
使用ProtocolLib检测MOTD请求包和玩家进入服务器数据包,如果超出设置的频率就将此IP加入黑名单,指定的时间后解除。
教程&命令&配置文件:
其实这个拦截什么的都是全自动的,不需要人来管。
命令
/firewall reload 重载配置文件
/firewall list 查看屏蔽黑名单列表中的IP
/firewall remove [IP] 从黑名单中移除指定的IP地址
/firewall clear 清空屏蔽黑名单
/firewall whitelist <add/remove/clear> [IP] 白名单管理,子命令相信无需解释用途
以上命令全部需要OP权限
配置文件
- # 每10秒钟限制一个IP能发送MOTD请求数,超过这个数则判定为MOTD压测,加入黑名单(防MOTD压测)
- pingPacketIn10SecPerIP: 20
- # 每10秒钟限制一个IP的玩家能加入服务器多少次,超过这个数则判定为加入压测,加入黑名单(防假人压测)
- joinRequestIn10SecPerIP: 5
- # 当一个IP发送过多的MOTD请求后,屏蔽多少秒
- banTimeOnOverclockingPing: 20
- # 当一个IP请求加入服务器次数过多后,屏蔽多少秒
- banTimeOnOverclockingJoin: 30
- # 当检测到任何类型的压测时是否通知后台
- warningConsole: true
- # 当检测到任何类型的压测时是否通知在线的OP
- warningOPs: true
- # 白名单列表,建议不要手动编辑,而使用添加白名单命令
- whitelist: []
哦对了还有,插件拦截到压测的时候会将信息储存到 插件配置文件夹下的 logs.txt 中。
下载:

更新日志:
- 1.0 忘记时间
忘记内容 - 2.0 忘记时间
忘记内容(逃 - 3.0 2016/4/15
增加白名单
优化了防御机制
现在实际上会消耗更少资源,理论上可以防御更多的压测器
其实应该还有更多改进的,但是由于这版本去年就做好了,一直没发布(懒癌晚期),所以忘记了...(别打我 - 4.0 2016/4/16
把类翻了个遍,能优化的地方都优化到了。移除了enablePing选项因为某某原因。 - 4.1 2016/4/20
降级到ProtocolLib3.4.0 - 5.0 2016/8/13
修复某严重bug——惊喜的发现3.0的“消耗更少资源,理论上可以防御更多的压测器”实际上是“消耗更少资源,可以拦截更少的压测器”
所以现在应该没法通过只进行一次握手的办法绕过了。。希望如此。
优化。
注意!此插件需要前置ProtocolLib否则无法加载
[ProtocolLib 3.4.0] 适用于 1.7 服务器
[ProtocolLib 3.6.5] 适用于 1.8 服务器
[ProtocolLib 4.0.2] 适用于 1.8,1.9,1.10 服务器
不要在BC上用,以后(可能)会研发BC专版
标语的那个不都差不多么?
XJue_DaDa 发表于 2015-11-1 09:28
标语的那个不都差不多么?
然而,标语的那个 只能装逼,实际并无卵用……(我测试的时候居然一点也防御不了)
so有了这个我总算可以承认我那个ColorMOTD的防御功能太鸡助了。。
andylizi 发表于 2015-11-1 09:29
然而,标语的那个 只能装逼,实际并无卵用……(我测试的时候居然一点也防御不了) ...
{:10_493:}雾草,这不欺骗我的感情么
andylizi 发表于 2015-11-1 09:29
然而,标语的那个 只能装逼,实际并无卵用……(我测试的时候居然一点也防御不了) ...
http://www.mcbbs.net/forum.php?m ... 140&pid=9297044
能否帮忙翻译配置文件
colormotd的插件表示防御功能并不完善 还是能压测
q1461001427 发表于 2015-11-1 09:34
colormotd的插件表示防御功能并不完善 还是能压测
是!所以我发了这个插件!满意了么=w=
1.7不能用QAQ
andylizi 发表于 2015-11-1 11:57
请具体点。
报错?无法加载?
没有配置文件夹 protectlib是3.4版本
李永杏啊 发表于 2015-11-1 11:58
没有配置文件夹 protectlib是3.4版本
插件加载时是否有报错
andylizi 发表于 2015-11-1 12:04
插件加载时是否有报错
。。没注意
李永杏啊 发表于 2015-11-1 12:10
。。没注意
……没注意就注意下啊
为什么不生成配置文件,我服务器正在被压测急急急!
1521825689 发表于 2015-11-1 12:52
为什么不生成配置文件,我服务器正在被压测急急急!
有错误信息吗
证明我不是伸手党楼主好人
andylizi 发表于 2015-11-1 12:25
……没注意就注意下啊
太乱了没找到QAQ
李永杏啊 发表于 2015-11-1 14:24
太乱了没找到QAQ
那就找到咯QAQ
1.6.2 Spigot用不了啊
好像是,反正我装到plugin里之后相当于没装
1269019976 发表于 2015-11-1 20:58
好像是,反正我装到plugin里之后相当于没装
等等,你安装了ProtocolLib么
如果安装了,那么请检查一下后台,看看插件加载的时候有没有错误信息,否则我咋帮你解决。。
andylizi 发表于 2015-11-1 20:59
等等,你安装了ProtocolLib么
如果安装了,那么请检查一下后台,看看插件加载的时候有没有错误信息,否则 ...
protocolLib装了,我去看看后台,下周五我在来回答(⊙_⊙)
[23:06:37] [Server thread/ERROR]: Could not load 'plugins/greatfirewall.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `net.andylizi.firewall.Main'
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:66) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:336) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:258) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.java:369) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.java:152) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:458) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
Caused by: java.lang.ClassNotFoundException: net.andylizi.firewall.Main
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_79]
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.Class.forName0(Native Method) ~[?:1.7.0_79]
at java.lang.Class.forName(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
... 7 more
Caused by: java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.Manifest.read(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.Manifest.<init>(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.JarFile.getManifestFromReference(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.JarFile.getManifest(Unknown Source) ~[?:1.7.0_79]
at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader.defineClass(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader.access$100(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_79]
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.Class.forName0(Native Method) ~[?:1.7.0_79]
at java.lang.Class.forName(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
... 7 more
前置已装
org.bukkit.plugin.InvalidPluginException: Cannot find main class `net.andylizi.firewall.Main'
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:66) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:336) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:258) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.java:369) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.java:152) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:458) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
Caused by: java.lang.ClassNotFoundException: net.andylizi.firewall.Main
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_79]
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.Class.forName0(Native Method) ~[?:1.7.0_79]
at java.lang.Class.forName(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
... 7 more
Caused by: java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.Manifest.read(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.Manifest.<init>(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.JarFile.getManifestFromReference(Unknown Source) ~[?:1.7.0_79]
at java.util.jar.JarFile.getManifest(Unknown Source) ~[?:1.7.0_79]
at sun.misc.URLClassPath$JarLoader$2.getManifest(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader.defineClass(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader.access$100(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.net.URLClassLoader$1.run(Unknown Source) ~[?:1.7.0_79]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_79]
at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.7.0_79]
at java.lang.Class.forName0(Native Method) ~[?:1.7.0_79]
at java.lang.Class.forName(Unknown Source) ~[?:1.7.0_79]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[Spigot-1.7.10.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
... 7 more
前置已装
w2616071 发表于 2015-11-1 23:07
[23:06:37] [Server thread/ERROR]: Could not load 'plugins/greatfirewall.jar' in folder 'plugins'
org ...
不可能。你确定你下载的文件是完整的,这个错误的意思是找不到主类
andylizi 发表于 2015-11-1 23:30
不可能。你确定你下载的文件是完整的,这个错误的意思是找不到主类
我验证下MD5
稍等
……
文件: greatfirewall.jar
大小: 43, 612 字节
MD5: F8549B423ABC31A37896D76CD74A25A9
SHA1: 01464256779D60C9142B9A47C6CB35846D8F4D7B
CRC32: 2A13B59D
w2616071 发表于 2015-11-1 23:33
我验证下MD5
稍等
……
好吧找到原因了
我手太快把MANIFEST.MF的格式写错了。。少了个空格
感谢反馈,不然其他人全部都没法用这插件了。。。
请重新下载
1269019976 发表于 2015-11-1 21:33
protocolLib装了,我去看看后台,下周五我在来回答(⊙_⊙)
找到原因了,请重新下载。
andylizi 发表于 2015-11-1 11:57
请具体点。
报错?无法加载?
找到原因了,请在帖子内重新下载(版主这不算三连吧?)
andylizi 发表于 2015-11-1 23:45
找到原因了,请重新下载。
谢谢,我服务器有救了,感谢大神
andylizi 发表于 2015-11-1 23:44
好吧找到原因了
我手太快把MANIFEST.MF的格式写错了。。少了个空格
感谢反馈,不然其他人全部都没法用这 ...
我就意淫下
这插件可以做进colormotd的功能里
针对测压IP开启防御模式或拉黑
!!!!!太爱你了。总算出了个能优化压测这东西的插件!
w2616071 发表于 2015-11-2 01:13
我就意淫下
这插件可以做进colormotd的功能里
针对测压IP开启防御模式或拉黑 ...
colormotd是单独的插件,不需要MOTD的腐竹就没必要安装了
我就要吐槽插件的名字!!不怕被查水表么。。。
惊得我从椅子滑到了地上
惊得我从椅子滑到了地上
貌似1.72用不了吧?
还有,卤煮,这个会不会?http://www.mcbbs.net/forum.php?m ... 441&pid=9303230
也是跟IP有关的= =
现在我服的新玩家都没法注册了,都是靠OP才能注册
还有,卤煮,这个会不会?http://www.mcbbs.net/forum.php?m ... 441&pid=9303230
也是跟IP有关的= =
现在我服的新玩家都没法注册了,都是靠OP才能注册
huwei5201314789 发表于 2015-11-4 21:24
貌似1.72用不了吧?
还有,卤煮,这个会不会?http://www.mcbbs.net/forum.php?mod=redirect&goto=findpost ...
谁告诉你1.7.2用不了了?别看前面的回复
感谢楼主分享,等了那么久,终于公开了!
andylizi 发表于 2015-11-5 12:09
登录插件关这个帖子啥事啊
又管我啥事啊
好吧,我只是问下会不会= =
没有别的意思。。。
重装这个插件会影响玩家的密码以及利益,所以才到处问的= =
不错的插件
如果没有用的话!断你的头!

买棵 发表于 2015-11-6 18:18
如果没有用的话!断你的头!
那你还是不要用吧。

qianfan 发表于 2015-11-10 14:22
防测文件放在插件里 那个前端文件也是放插件里吗
当然……
看样子也没什么需要改的,直接丢进plugin好了{:10_492:}
我自己测试了,假人测压还是可以= =
半径U2 发表于 2015-11-15 20:21
我自己测试了,假人测压还是可以= =
请问您对"还是可以"的定义是什么
andylizi 发表于 2015-11-15 20:26
请问您对"还是可以"的定义是什么
假人可以进入服务器 并且卡服
半径U2 发表于 2015-11-15 20:28
假人可以进入服务器 并且卡服
请问这个插件确实成功加载并且生成配置文件了?