• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】

教程 【Java服】我在防 DDoS 网络攻击这块的一些个人见解

[MD] # 我在防 DDoS 网络攻击这块的一些个人见解 本帖原文发布在我的blog:[URL]https://producer.mrxiaom.top/post/mc-ddos[/URL] > 运营 Minecraft 服务器,尽可能低成本地防 DDoS 的一次尝试 本文是我在 [QQ空间的说说](https://user.qzone.qq.com/2431208142/311) 的补全。 我并非网络相关从业者,仅业余研究,个别专有名词可能出错,请见谅。 防 DDoS,简单来说就是一句话:`得加钱。` ## 前言 开 Minecraft 服务器的,提供网络服务的,稍微做大了之后,总会得罪同行或者用户,就免不了受到网络攻击。 网络有很强的匿名性,网络攻击也一样。 攻击者可以从「国外」的木马劫持大量用户(俗称僵尸网络),针对一个IP发动攻击,诸如 UDP Flood,TCP SYN Flood 等等,攻击者对僵尸网络中的设备有完全控制权,他们想怎么打就能怎么打,使得你的服务器无法为正常的用户提供服务。又因为攻击来自世界各地的被控制设备,以我们普通用户的视角,从技术上几乎不可能跟踪到攻击者。 攻击者还可以从「国外」的匿名邮箱向网络服务提供者(我)发动挑衅,炫耀自己瘫痪网络服务的所谓「高光时刻」和「展示优越感」。 我两次提及国外,就是因为虽然《中华人民共和国刑法》中有规定「破坏计算机信息系统罪」,但是攻击者的匿名性极高,以我个人开发者的角度考虑,国家没有必要浪费宝贵的网安资源,为了一个无足轻重的互联网服务把攻击者揪出来。也不是在说我国的法律存在漏洞或者执法人员不作为,而是站在互联网的视角,这是相当困难的一件事。即使国家全力帮助,也不一定能揪出来,因为这涉及了跨国的所谓「隐私」网络服务,别国不一定给数据。所以,当资金不足时(如个人业余开设网络服务,常见于 Minecraft 服主),遇到了网络攻击是非常无奈的一件事。 我本来不想说,西方对于「隐私」的自由,变成了犯法者「隐藏自己」的自由。这是很悲哀的。 ## 之前我是怎么做的 综上所述,在相当长一段时间里,我的应对策略就是不管,毕竟我可控的范围只有路由的下游,也就是服务器。网络流量先经过路由再传输到服务器,我编写软件拒绝了流量又怎么样,量大的时候依然占用服务器算力,过了阈值之后路由还是会把应当传输到服务器的流量指向黑洞。 回到了那句话,想要提升防御,得加钱。对于个人来说,购买防御会对月租产生巨大影响,使得防御成为服务器的最大支出,所以,我也没什么办法,你爱打我我让你打个够吧。防御跟不上,但精神不能怂,来「威胁」我,必骂回去。 今年二月左右,服务器被攻击过,攻击者还通过匿名邮件服务 proton.me 发来了「预告」, ![](https://pic.imgdb.cn/item/66ea3cadf21886ccc0197119.png) btw,经过之后群友的确认,对方是冒充成维塔斯的,维塔斯拒不承认这是他。 攻击者并没有达到他承诺的“打到服务商退机”,打了几天就没动静了。 反正没打了,那我也不管什么攻击了。 ## 现在我是怎么做的 2024年9月17日,中秋节,下午13点半左右受到攻击,当时我没看服务器,下午14点左右,在我向群里的人公布服务器被攻击后,我又收到了一封匿名邮件 ![](https://pic.imgdb.cn/item/66ea3e0cf21886ccc01adbf7.png) 看着很像2月的老熟人啊,但是严谨来说,我也只能说和他很像,一样说僵尸网络不算资源(这次还截了在 FinalShell 执行 botnet 命令的图来炫耀,我就懒得放出来了,没啥好看的),一样不勒索纯攻击,很像,不一定是。这次可能是虚了,只打了几个小时,下午四点多就没打了。 看他不回复我就把 proton.me 这个域的邮件全部拒收了,他会一击脱离我也会一击脱离。 事不过三,我开始想怎么能低成本的尽可能防范 DDoS 攻击。 ## 学习Web的策略,不要暴露源站 Web 的什么策略我不知道,毕竟我不是相关从业人员,只是业余搞网络安全的,我只记得有个机制是有源站和节点(负载均衡?),源站是 Web 服务器的核心逻辑,而节点用于分担服务器负担,顺带过滤掉一部分无用流量。 攻击者尽管打,只能打死节点,除了节点服务器和源站管理员,没有人知道源站的IP,源站一直是安全的,不会因为网络攻击而进入流量黑洞。 在这个模式下,攻击者打死节点之后,管理员可以迅速恢复服务的正常访问,只需要再建一个节点就行了,毕竟源站没进黑洞,不需要等解封时间。建节点的成本是很低的,国外最低有 8¥/mon 的(配置太低了,没租过),还支持支付宝和 Paypal 支付,我租的 16¥/mon 的作为备用。尽管打,大不了我这个月多租几个节点(只租一个月),一些节点不公开,只给部分信任的玩家使用。 这个价钱,总比每个月千把块托管费升级 300G 或更多一点的防御好多了吧?对于像是我的服务器一样有点名堂但不是特别火的服务器,是支付不起那么高的托管费的。虽然这个方法不能 100% 扛住,但至少能保证服务不会中断很久。 以上想法我已经基本实现了,未经过测试,理论是可以做到快速恢复正常访问的。 现在源站IP还是暴露的,我在等下一次攻击者来攻击源站,因为现在攻击者没在攻击,玩家还要正常游戏,不能打断玩家。等攻击者来攻击,我再向机房申请换一个 IPv4 地址,测试这套机制的效果。 ## 具体做法 正如你所见,节点服务器的配置非常低,这才能让我们低成本地去租赁它。首先就是要找一个服务商,能够稳定地出租这么低价的云服务器,并且起码要有 25565 端口使用(如果你不在乎这个,其它端口也没关系)。 补充:主要使用的节点请尽可能购买**中国大陆境内**的大带宽云服务器,除非你想让玩家延迟人均 200ms。国外的低成本云服务器用来兜底。 国内便宜的、带独立IP的云服务器不好找,毕竟国内金子带宽,没办法,我也没找到。我现在在用 60¥/mon 的不限流量 25M 上下对等带宽的云服务器凑合着用。 btw,尽量不要买限制流量、流量耗尽时降带宽的云服务器。就我服务器而言,一天下来,上行加下行要跑 200G,付流量费肉疼。 所谓「节点」的实现方法是「反向代理」,这里我使用的反向代理软件是开源的 [hopper-rs](https://github.com/BRA1L0R/hopper-rs),在 x86 架构的 Debian Linux 系统上运行。 首先下载 `hopper-rs` 到 `/opt/hopper` 目录,以下命令在 root 用户下运行 ```shell mkdir /opt/hopper chmod u+x . wget -O hopper.tar.xz [URL]https://github.com/BRA1L0R/hopper-rs/releases/download/v0.6.2/hopper-rs_null_x86_64-unknown-linux-musl.tar.xz[/URL] xz -d hopper.tar.xz tar -xvf hopper.tar chmod u+x hopper ``` 是的,`hopper-rs` 不会自己创建配置文件,所以配置文件得你自己来。 创建 `Config.toml`,将 `<节点端口>` 替换成一个该节点需要开放的服务器端口号 (比如`25565`),将 `<源站IP>` 替换为你自己的服务器IP,后面的端口号先待定,之后要改,反正肯定不是你之前进服的端口。 ```toml listen = "0.0.0.0:<节点端口>" [routing] default = { ip-forwarding = "proxy_protocol", ip = "<源站IP>:25560" } ``` 然后先别急着启动,要修改源站的服务端配置 > 配置请前往[原文](https://producer.mrxiaom.top/post/mc-ddos/#bungeecord)查看 以上配置均为重启服务端生效。 配置完了,在节点服务器 cd 到 `/opt/hopper` 目录,执行命令 `./hopper`,并使用 Minecraft 客户端尝试连接,检查反向代理是否工作正常。确认正常后,以下开始配置系统服务(开机启动)。 首先创建文件 `hopper.service` ``` [Unit] Description=hopper-rs After=network.target [Service] ExecStart=/opt/hopper/hopper WorkingDirectory=/opt/hopper Restart=always [Install] WantedBy=multi-user.target ``` 然后执行以下命令即可 ```shell cp hopper.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl enable hopper systemctl start hopper ``` 最后执行 ```shell systemctl status hopper ``` 查看服务是否正常运行即可。 hopper-rs 的占用很小,主程序加上配置文件的储存占用不到 5MB,运行内存占用目测不到 100MB,比较适合在低配的机器上运行。 ![](https://pic.imgdb.cn/item/66ea4c17f21886ccc030ed1f.png) 而且配置也不算复杂,我只要配置好一次,写个脚本,需要创建节点的时候,购买云服务器后上传执行就完成了。 补充:为了避免被扫出源站,请不要使用与本教程相同的 `25560` 端口,并且应当配置好防火墙, + 将原本的 `25565` 禁止外网访问,如果你不需要在内网直连可以直接删掉 + 将代理端口 (如 `25560`) 设为仅能由节点服务器访问 各个系统有各个系统的配置方法,请通过搜索引擎搜索方法。 ## 尾声 这就是我现阶段针对 DDoS 做出的一些尽可能的挽救措施,不让服务器的可用性被攻击者和流量黑洞牵着走。最坏的情况是攻击者把所有节点都攻陷了,但这时源站依然是没事的,这样你就可以在后台更新服务器玩法,给玩家建立期待,而不是干等着攻击者停止攻击,浪费时间。 ## 彩蛋 题外话,在2月被攻击到7月被攻击的这几个月间隔时间里,3389 端口一直在被刷 RDP 请求,看日志估计是在暴力破解 Administrator 的密码。 我的应对措施是开源的 RDP 自动封禁软件 fail2ban-win。 同时因为 Administrator 太过常用,而且我们服务器后台有良好的用户习惯,根本没人在用 Administrator 这个账户,于是我决定把这个账户弃用,禁止远程控制登录的同时,将密码改到了上百位,并且我没有保存密码。 这还不够,我修改了 fail2win,使得所有试图登录 Administrator 失败的 IP 都有 50% 的几率被添加到防火墙黑名单。正如你所见,我禁用了远程控制登录,登录 Administrator 必失败,这个账户变成了一个捕兽夹,封禁了非常多肉鸡的 IP。[如图所示](https://pic.imgdb.cn/item/66ea4e61f21886ccc033255c.png),图太大了,就只放链接吧。[/MD]
 
内容版权许可
CC BY-NC-SA 署名-非商业性使用-相同方式共享
最后编辑:
我们永远不能活在过去的影子里
 
大佬们,纯小白,有点看不懂了
但我看上面说很多都是国外搞事情,国内有但较少
我屏蔽掉国外的ip,开启正版验证的情况下被搞的概率也很高么
 
大佬们,纯小白,有点看不懂了
但我看上面说很多都是国外搞事情,国内有但较少
我屏蔽掉国外的ip,开启正版验证的情况下被搞的概率也很高么
我遇到的攻击者只是用国外的匿名邮箱服务来和我通信,攻击来源肉鸡是国内的。这种情况不套盾还真没啥好的解决方法。
正版验证开不开都一样,只要是使用 IP 协议的网络服务,都能被搞,只看有没有人来搞你。
 
对于HAProxy
我认为使用FRP是更好的选择(?)
 
windows防止rdp爆破方法:
1、安装火绒等具备网络防御的杀毒管理软件,并配置其防御拦截周期,火绒拦截短时间黑名单为120分钟,破一次基本等一个半小时才能再破一次
2、不定期更新密码,密码尽量设置复杂,最好小谢大写字母数字特殊符号都用上,再不会随便找个密码生成平台生成好后自己改点数字防止被人找
linux防止远程爆破思路大致相似,一方面安装雷池waf社区版或者1p面板这类具有网络防护能力的程序,另一方面设置足够复杂密码并且有良好的使用习惯基本没啥大问题
最后关键一点就是要有备份的习惯,最长每隔一个月时间关服对整个端或者整套系统进行备份,至少机器被攻破了能快速恢复
 
陪一个fail2ban封禁的ip截图,但是我用的是1panel一键部署的Fail2Ban,复制下来放word里面排了个板
感觉linux的22端口更容易被狂扫,于是后面直接把22端口关了,换了个不常用端口
1752845528021.webp
 
我们服务器直接套4层ip转发,目前只有一个人攻击还被那4层盾给拦了

cf:乐
 
如果是勒索的,千万不要给赎金。
给了不仅助长气焰,还不能解决问题。没法保证牠以后再也不打了。
 

在线会员

  • cyjbfryjvf
  • zbldyyds
  • bbs159
  • 妳得惯着她
  • mcmanzi
后退
顶部 底部