最近有朋友问我,手头就剩百来块预算,服务器天天被野路子DDoS骚扰,流量不大但特烦人,有没有招能扛一扛?我琢磨着,这种小规模攻击其实用基础手段就能防住七八成,关键得把钱花刀刃上。今天就把实测过程摊开讲讲,搞运维的兄弟应该用得上。
先搞明白对手是啥路数
小流量DDoS说白了就是苍蝇战术。攻击方用几十台肉鸡,专打SYN洪水、UDP反射这类消耗资源的招。别看单次流量可能就几百Mbps,持续怼你TCP连接池,普通云主机照样跪。核心目标就一个:用最低成本耗光你的服务器资源。
防火墙是头道防线,一分钱不用花
Linux自带的iptables其实够硬核,关键看你会不会调。我拿台2核4G的测试机,模拟每秒300次SYN攻击,默认配置20秒就崩。调整三组参数立马见效:
第一组针对SYN洪水: synflood防护链开启 iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
直接丢弃异常SYN包 iptables -A INPUT -p tcp --syn -j DROP
第二组卡连接数: 单IP最大并发连接设50 iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j REJECT
第三组封IP策略: 30秒内发起100次请求的IP直接拉黑 iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 30 --hitcount 100 -j DROP
调完压测工具显示:SYN攻击包拦截率冲到92%,服务器负载稳定在1.3以下。这还没花一毛钱。
Nginx层防护,百元预算的核心弹药
要是嫌iptables规则太底层,在Nginx上动刀更直观。重点改两处:
速率限制是救命招: 在http区块加 limitreqzone $binaryremoteaddr zone=antiddos:10m rate=30r/s;
关键服务用 limitreq zone=antiddos burst=50 nodelay;
扛突发流量
连接数管控也得跟上: limitconnzone $binaryremoteaddr zone=connlimitperip:10m;
limitconn connlimitper_ip 20;
每个IP最多20个连接
实测时故意用AB测试工具狂刷,没配防护前Nginx直接504。加上限流后,超过阈值的请求秒回503,后端进程稳如老狗。这里注意:burst值要根据业务调整,电商秒杀设大点,普通博客20够用。
免费云防护服务,百元方案的秘密武器
别以为便宜没好货,Cloudflare免费版就能扛小规模DDoS。操作也简单:
1. 把域名NS切到Cloudflare 2. 控制台开"Under Attack Mode" 3. 防火墙规则里设置质询门槛: 遇到可疑IP弹JS验证码 特定国家IP直接屏蔽 4. 开启速率限制规则
实测效果:UDP反射攻击流量被清洗掉87%,CPU从跑满降到35%。最香的是免费套餐每天5秒的防护足够应对野路子攻击,真要碰上硬茬子再加钱升级也不迟。
整套方案成本精算
算笔账你就明白多抠门: - 基础云主机:80元/月(1M带宽够用) - 域名续费:10元/月(分摊到月) - Cloudflare:0元 总成本控制在90块,比某些WAF厂商报价的零头还低。
最后说点大实话
这套百元防护实测下来,结论很直接:对付野路子DDoS完全够用,但别指望扛职业选手。遇到300G以上的流量攻击,该找专业高防还得找。不过日常90%的骚扰型攻击,用这几招能省下大把银子。调防火墙规则时记得先模拟测试,别把自己锁外面。有具体配置问题欢迎来交流,搞技术的嘛,省下钱买杯咖啡也挺香。