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


未经本人许可严禁转载此插件/使用其代码
听说有人把这个插件放到淘宝高价出售,感谢您让我明白了什么叫无耻

介绍:
此插件可以 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权限

配置文件
  1. # 每10秒钟限制一个IP能发送MOTD请求数,超过这个数则判定为MOTD压测,加入黑名单(防MOTD压测)
  2. pingPacketIn10SecPerIP: 20

  3. # 每10秒钟限制一个IP的玩家能加入服务器多少次,超过这个数则判定为加入压测,加入黑名单(防假人压测)
  4. joinRequestIn10SecPerIP: 5

  5. # 当一个IP发送过多的MOTD请求后,屏蔽多少秒
  6. banTimeOnOverclockingPing: 20

  7. # 当一个IP请求加入服务器次数过多后,屏蔽多少秒
  8. banTimeOnOverclockingJoin: 30

  9. # 当检测到任何类型的压测时是否通知后台
  10. warningConsole: true

  11. # 当检测到任何类型的压测时是否通知在线的OP
  12. warningOPs: true

  13. # 白名单列表,建议不要手动编辑,而使用添加白名单命令
  14. whitelist: []
复制代码
嗯差不多就这样了……
哦对了还有,插件拦截到压测的时候会将信息储存到 插件配置文件夹下的 logs.txt 中。

下载:
GreatFireWall.jar (23.32 KB, 下载次数: 19527)

更新日志:
  • 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专版


晚安2001
标语的那个不都差不多么?

andylizi
XJue_DaDa 发表于 2015-11-1 09:28
标语的那个不都差不多么?


然而,标语的那个 只能装逼,实际并无卵用……(我测试的时候居然一点也防御不了)

so有了这个我总算可以承认我那个ColorMOTD的防御功能太鸡助了。。

晚安2001
andylizi 发表于 2015-11-1 09:29
然而,标语的那个 只能装逼,实际并无卵用……(我测试的时候居然一点也防御不了) ...

{:10_493:}雾草,这不欺骗我的感情么

晚安2001
andylizi 发表于 2015-11-1 09:29
然而,标语的那个 只能装逼,实际并无卵用……(我测试的时候居然一点也防御不了) ...

http://www.mcbbs.net/forum.php?m ... 140&pid=9297044

能否帮忙翻译配置文件

q1461001427
colormotd的插件表示防御功能并不完善 还是能压测

andylizi
q1461001427 发表于 2015-11-1 09:34
colormotd的插件表示防御功能并不完善 还是能压测

是!所以我发了这个插件!满意了么=w=

李永杏啊
1.7不能用QAQ

andylizi

请具体点。
报错?无法加载?

李永杏啊
andylizi 发表于 2015-11-1 11:57
请具体点。
报错?无法加载?

没有配置文件夹 protectlib是3.4版本

andylizi
李永杏啊 发表于 2015-11-1 11:58
没有配置文件夹 protectlib是3.4版本

插件加载时是否有报错

李永杏啊
andylizi 发表于 2015-11-1 12:04
插件加载时是否有报错

。。没注意

andylizi

……没注意就注意下啊

1521825689
为什么不生成配置文件,我服务器正在被压测急急急!

andylizi
1521825689 发表于 2015-11-1 12:52
为什么不生成配置文件,我服务器正在被压测急急急!

有错误信息吗

whnba
证明我不是伸手党楼主好人

李永杏啊
andylizi 发表于 2015-11-1 12:25
……没注意就注意下啊

太乱了没找到QAQ

andylizi

那就找到咯QAQ

1269019976
1.6.2 Spigot用不了啊

andylizi
1269019976 发表于 2015-11-1 20:18
1.6.2 Spigot用不了啊

错误信息

1269019976

好像是,反正我装到plugin里之后相当于没装

andylizi
1269019976 发表于 2015-11-1 20:58
好像是,反正我装到plugin里之后相当于没装

等等,你安装了ProtocolLib么
如果安装了,那么请检查一下后台,看看插件加载的时候有没有错误信息,否则我咋帮你解决。。

1269019976
andylizi 发表于 2015-11-1 20:59
等等,你安装了ProtocolLib么
如果安装了,那么请检查一下后台,看看插件加载的时候有没有错误信息,否则 ...

protocolLib装了,我去看看后台,下周五我在来回答(⊙_⊙)

w2616071
[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

前置已装

andylizi
w2616071 发表于 2015-11-1 23:07
[23:06:37] [Server thread/ERROR]: Could not load 'plugins/greatfirewall.jar' in folder 'plugins'
org ...

不可能。你确定你下载的文件是完整的,这个错误的意思是找不到主类

w2616071
andylizi 发表于 2015-11-1 23:30
不可能。你确定你下载的文件是完整的,这个错误的意思是找不到主类

我验证下MD5
稍等
……

文件:        greatfirewall.jar
大小:        43, 612 字节
MD5:        F8549B423ABC31A37896D76CD74A25A9
SHA1:        01464256779D60C9142B9A47C6CB35846D8F4D7B
CRC32:        2A13B59D


andylizi
w2616071 发表于 2015-11-1 23:33
我验证下MD5
稍等
……

好吧找到原因了
我手太快把MANIFEST.MF的格式写错了。。少了个空格
感谢反馈,不然其他人全部都没法用这插件了。。。
请重新下载

andylizi
1269019976 发表于 2015-11-1 21:33
protocolLib装了,我去看看后台,下周五我在来回答(⊙_⊙)

找到原因了,请重新下载。

andylizi
andylizi 发表于 2015-11-1 11:57
请具体点。
报错?无法加载?

找到原因了,请在帖子内重新下载(版主这不算三连吧?)

1269019976
andylizi 发表于 2015-11-1 23:45
找到原因了,请重新下载。

谢谢,我服务器有救了,感谢大神

w2616071
andylizi 发表于 2015-11-1 23:44
好吧找到原因了
我手太快把MANIFEST.MF的格式写错了。。少了个空格
感谢反馈,不然其他人全部都没法用这 ...

我就意淫下
这插件可以做进colormotd的功能里
针对测压IP开启防御模式或拉黑

q1024835732
!!!!!太爱你了。总算出了个能优化压测这东西的插件!

andylizi
w2616071 发表于 2015-11-2 01:13
我就意淫下
这插件可以做进colormotd的功能里
针对测压IP开启防御模式或拉黑 ...

colormotd是单独的插件,不需要MOTD的腐竹就没必要安装了

lvhengxin
我就要吐槽插件的名字!!不怕被查水表么。。。
惊得我从椅子滑到了地上

huwei5201314789
貌似1.72用不了吧?
还有,卤煮,这个会不会?http://www.mcbbs.net/forum.php?m ... 441&pid=9303230
也是跟IP有关的= =
现在我服的新玩家都没法注册了,都是靠OP才能注册

andylizi
huwei5201314789 发表于 2015-11-4 21:24
貌似1.72用不了吧?
还有,卤煮,这个会不会?http://www.mcbbs.net/forum.php?mod=redirect&goto=findpost ...

谁告诉你1.7.2用不了了?别看前面的回复

tztwind
感谢楼主分享,等了那么久,终于公开了!

huwei5201314789
andylizi 发表于 2015-11-4 21:25
谁告诉你1.7.2用不了了?别看前面的回复

好吧。先收藏,暂时用不着= =
话说,卤煮,登陆插件会弄吗?

andylizi
huwei5201314789 发表于 2015-11-5 12:00
好吧。先收藏,暂时用不着= =
话说,卤煮,登陆插件会弄吗?

登录插件关这个帖子啥事啊
又管我啥事啊

huwei5201314789
andylizi 发表于 2015-11-5 12:09
登录插件关这个帖子啥事啊
又管我啥事啊

好吧,我只是问下会不会= =
没有别的意思。。。
重装这个插件会影响玩家的密码以及利益,所以才到处问的= =

701020
不错的插件

买棵
如果没有用的话!断你的头!

andylizi
买棵 发表于 2015-11-6 18:18
如果没有用的话!断你的头!

那你还是不要用吧。

qianfan
防测文件放在插件里 那个前端文件也是放插件里吗

andylizi
qianfan 发表于 2015-11-10 14:22
防测文件放在插件里 那个前端文件也是放插件里吗

当然……

小小周尼玛
看样子也没什么需要改的,直接丢进plugin好了{:10_492:}

半径U2
我自己测试了,假人测压还是可以= =

andylizi
半径U2 发表于 2015-11-15 20:21
我自己测试了,假人测压还是可以= =

请问您对"还是可以"的定义是什么

半径U2
andylizi 发表于 2015-11-15 20:26
请问您对"还是可以"的定义是什么

假人可以进入服务器 并且卡服

andylizi
半径U2 发表于 2015-11-15 20:28
假人可以进入服务器 并且卡服

请问这个插件确实成功加载并且生成配置文件了?

第一页 上一页 下一页 最后一页