DoS***是一个永恒的问题,虽然专业厂商的防火墙,负载均衡类的网关设备能比较有效的防御DoS***,但***们更倾向于x86+GNU/Linux的组合,原因很简单:足够的廉价。
在linux内核3.13里终于加入了SYNPROXY的新功能,这个模块是一个基于链接跟踪的netfilter扩展,主要干的工作就是把来自客户端的初始SYN包标记成UNTRACKED然后直接导入iptables的"SYNPROXY"的动作(类似ACCEPT,NFQUEUE和DROP),这时内核会扮演网关设备的角色继续跟客户端进行TCP的常规握手流程,SYNPROXY会等到最终的ACK(三次握手)的cookie被验证合法后才会开始让包真正的进入目标端。
开发者Jesper Dangaard Brouer的数据表明SYNPROXY对于对抗SYN FLOOD DOS***是非常有效的,笔者今天也在Debian和SLES-12-beta2对SYNPROXY进行了DoS测试,大致结果是在使用hping3和metasploit进行测试,开启SYNPROXY后ksoftirq占用会从8%降低到3%以内。