如何防止在Linux机器上欺骗SYN洪水?

我有一台服务器(2个E2620,32GB内存,Debian 6 Linux us-fw 2.6.32-5-amd64#1 SMP Mon Feb 25 00:26:11 UTC 2013 x86_64 GNU / Linux,10G Intel以太网卡)。 它里面有一个Nginx代理服务器。 想法是用它作为对付DDoS攻击的前端。 目前,如果面对一个500kpps的SYN欺骗,它几乎没有反应。 我已经尝试了syncookies和各种sysctl参数。 即使半开连接超时为1秒,也可以填满任何缓冲区。 任何想法如何加强对欺骗同期泛滥? 也许,一些铁杆configuration或FW规则?

iptables有各种匹配,以限制主机使用的连接数量。

通过限制允许的连接数量,可以减轻DDoS攻击的影响。

  • 使用hashlimit
 $ iptables -A INPUT -i eth0 -s any/0 -d IP.AD.DR.ESS/32 -p tcp --syn --sport 1024: --dport 80 -m hashlimit --hashlimit-name http-flood --hashlimit-mode srcip --hashlimit-upto 5/s 

这将允许每个新主机每秒打开5个连接。

  • 使用connlimit
 $ iptables -A INPUT -i eth0 -s any/0 -d IP.AD.DR.ESS/32 -p tcp --syn --sport 1024: --dport 80 -m connlimit --connlimit-saddr --connlimit-upto 5 

这将允许每个新主机打开最多5个并行连接。

但请记住,当你在查看源IP地址时,这会对NAT后面的人产生巨大的影响。

你可以尝试玩,找出一个正确的极限值。

启用syncookie也是一个好主意。