如何防止 Linux 机器上出现欺骗性 SYN 洪水攻击?

如何防止 Linux 机器上出现欺骗性 SYN 洪水攻击?

我有一台服务器(2 x E2620、32 GB RAM、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 秒,也足以填满任何缓冲区。有什么想法可以加强它对欺骗性 syn 洪水的防御?也许,一些硬核配置或 fw 规则?

答案1

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 也是一个好主意。

相关内容