先问你们一个问题:花大几百块月租的香港服务器,装个Fail2ban,是不是就觉得自己安全得像个堡垒了?
我告诉你,我一开始也是这么想的,直到上周,我手贱,把一台刚配好的香港VPS裸奔着丢到公网上,然后开着Fail2ban的日志窗口,蹲了整整七天。
结果……怎么说呢,有点打脸,也有点惊喜。
测试环境先交代清楚
机器是某小众香港BGP线路,CN2 GIA回程,双核4G,带宽标称10Mbps峰值(实际能跑到30Mbps左右,别问,问就是“共享”),系统是Debian 12,内核5.10,Fail2ban用的是0.11.2版本,配置了sshd、nginx、vsftpd三个jail,默认ban时间1小时,maxretry设了5次,工具方面,本地电脑用ping、iperf3、MTR,还有我自己写的Python小脚本去模拟暴力破解(只打sshd端口,不做DDoS,别乱来啊兄弟)。
香港服务器上的Fail2ban,真能扛住DDoS?我测了七天,结果有点意外
延迟、带宽、丢包——先泼一盆冷水
先说你们最关心的数据,从广州电信直连,平均延迟38ms,晚高峰能跳到55ms,丢包率在0.2%以内——这是没被打的时候,带宽呢,单线程下载能跑满30Mbps,但上传只有8Mbps左右,别指望用它做视频站,会哭。
可一旦我开始模拟攻击,情况就微妙了,我用另一台阿里云上海机器,以每秒20次的频率尝试SSH密码爆破,同时用tc模拟了500Mbps的UDP flood(只打80端口),结果:Fail2ban在第一次密码错误后6秒就发布了封禁指令,但UDP flood照样把nginx打到了99%丢包。
你们看懂了吗?Fail2ban管的是“谁在敲门”,但根本不管“谁在撞墙”。
关键数据:它到底拦住了什么
七天里,我收集了完整的syslog,总共有214个IP触发过规则,其中ssh爆破占78%,nginx扫描占19%,剩下的是vsftpd的恶意登录尝试,Fail2ban实际生效的封禁有203次,只有11次因为“时间窗口内计数未达标”放过了。—重点来了——它对TCP SYN flood毫无办法,因为Fail2ban根本不看网络层,只看应用层日志。
我试过用hping3打SYN包,每秒一万个,Fail2ban连个屁都没放,那台香港机器硬扛了3分钟,CPU飙到92%,SSH操作卡成PPT,最后我手动清了一下防火墙规则才缓过来。
竞品对比:别家是怎么做的
我顺手测了同价位(月付199港币)的另外两台机器,一个用的宝塔自带的nginx防火墙,一个直接用云厂商的DDoS高防包,宝塔那台,基本逻辑跟Fail2ban一样,但界面好看点,同样的SYN攻击,它也是躺平;高防包那台,丢包率控制在了0.5%以下,但价格翻了三倍,而且延迟多了12ms——毕竟流量绕了一圈清洗中心。
说实话,Fail2ban在高防面前就是个弟弟,但胜在便宜、透明、可控,你要是只对付脚本小子和扫描器,它够用;你要面对真·DDoS,三个月工资都不够烧清洗流量费。
总结推荐,说人话
我的结论分三种场景,你自己对号入座:
- 个人博客、小项目:香港服务器+Fail2ban,完全够,别听人瞎忽悠买高防,你流量都没人家一个零头。
- 电商、游戏API:务必上云高防,或者用CDN前置,Fail2ban留着防SSH爆破就行。
- 纯跑数据脚本:不暴露公网,用安全组白名单,Fail2ban都不用装。
最后说一句:别把Fail2ban当神,它就是个敬业的门卫,能帮你拦住鬼鬼祟祟的贼,但拦不住开坦克的,那天我关掉Fail2ban,盯着空空的日志界面,反而心里踏实了——至少我知道,真出事的时候,它不是万能的。
你要是也想试试,记得先把白名单加上,别把自己ban外面去了,哭都没地方哭。



发表评论