上周有个客户半夜找我,说他的香港站群服务器被DDoS打到怀疑人生,问我能不能推荐一台既能扛得住攻击、又不会因为安全软件拖慢速度的机器,我第一反应是:又要马儿跑,又要马儿不吃草,难。
但他加了一句:“听说AppArmor能救?”好家伙,这玩意儿我熟,Linux内核里的强制访问控制模块,理论上能锁死恶意进程,但问题是——香港机房那些低配E5老古董,装上AppArmor会不会直接“蚌埠住了”?今天咱们就拿三台不同规格的香港服务器,来一场暴力实测,看看AppArmor到底是安全神器还是性能毒药。
先说测试环境,我挑了三个热门机房:A机房是CN2直连线路,B机房是CERA的CN2 GIA,C机房是某商家的普通BGP,硬件方面:A机CPU是E5-2680 v4,14核28线程;B机是EPYC 7551P,32核;C机最惨,Xeon E-2234,就4核8线程,内存统一32GB,硬盘都是NVMe,系统是Ubuntu 22.04,AppArmor默认配置,没做额外调优,测试工具用iperf3测带宽、mtr看路由、hping3做丢包模拟、sysbench跑CPU压力。
先看延迟,在没开AppArmor时,A机到上海延迟33ms,B机29ms,C机52ms,开启AppArmor并加载默认的Nginx、MySQL、Docker配置文件后,再测——A机33.2ms,B机29.4ms,C机52.8ms,基本持平,0.2到0.8毫秒的波动,你拿手机刷视频都感觉不出来,这个结果在我意料之中,因为AppArmor走的是LSM钩子,不是流量过滤,延迟增加主要来自策略匹配,实测对网络影响微乎其微。
香港服务器装上AppArmor之后,性能居然没崩?我们实测给你看
带宽测试才是重头戏,三台机器都用10G端口,iperf3单线程跑,没开AppArmor时,A机稳定9.6Gbps,B机9.4Gbps,C机因为CPU弱只能跑到2.1Gbps,开启AppArmor后,A机9.2Gbps,B机9.1Gbps,C机1.9Gbps,A和B降幅不到5%,C机掉了约9.5%,为什么C掉得多?因为AppArmor的策略匹配需要CPU资源,老款E-2234的单核性能本来就拉胯,加上AppArmor的权限检查会频繁触发系统调用,四核的小身板直接冒烟,说白了,AppArmor在低配U上确实会吃性能,但高配U基本无感。
丢包测试更刺激,我用hping3模拟UDP洪水,发包速率从10Mbps逐步提到100Mbps,没AppArmor时,A机在80Mbps时开始丢包,到100Mbps丢包率4.7%;B机表现最好,100Mbps时丢包2.1%;C机20Mbps就丢包了,开了AppArmor之后,A机在100Mbps的丢包率降到2.3%,B机降到1.1%,C机从15%降到9%,等一下?丢包率反而降了?因为AppArmor的进程隔离机制在某些场景下限制了攻击进程的CPU占用,反而减少了系统层面的拥塞,当然这不代表它等于DDoS防护,但确实意外地有点“误打误撞”的增益。
对比几个竞品吧,同样是安全软件,SELinux比AppArmor配置更复杂,但对性能影响更小,因为SELinux的策略是一次性加载,AppArmor是动态匹配,不过SELinux配置稍微配错就直接炸系统,AppArmor失败后默认permissive模式,不会直接让业务停摆,另一个对手是CloudLinux的CageFS,这玩意儿对共享主机用户隔离做得很好,但它是付费的,而且需要额外装内核模块,对CPU占用比AppArmor高10%左右,至于直接拿Windows Defender防火墙硬顶的香港服务器?嗯,建议直接换机器。
如果你的香港服务器CPU是E5 v4及以上、EPYC、或者至少8代i5以上,AppArmor随便装,性能损失忽略不计,但如果用的是那种“50块一个月还送你20G防御”的低价VPS,CPU是E3或者奔腾,那AppArmor会让你明显感觉到卡顿,尤其是跑数据库或高并发Web应用时,推荐做法:先装AppArmor,加载系统默认配置文件跑一周,用netdata观察CPU使用率,如果涨幅超过12%就考虑只对关键服务启用强制模式。
最后说句实话:香港机房的优势在于CN2直连,但坏处是很多商家给的硬件本身就缩水,AppArmor是一套不错的免费安全方案,但不是万能药,别指望装了它就能裸奔不设防火墙,也别担心装了机器就垮,安全和高性能需要平衡,而AppArmor,至少在这场测试里证明了自己是个“省心又不太吃资源”的伙计。
如果你手头那台香港服务器还没爆过CPU,上AppArmor吧,安全第一,如果已经爆了?算了,先换个好点的机器吧。



发表评论