我一直想知道 csf 防火墙是否计算最后 CT_INTERVAL 秒的连接数,然后将它们与 CT_LIMIT 值进行比较,或者它仅计算当前(此刻)的连接数,然后将它们与 CT_LIMIT 进行比较?
因为如果是后者,攻击者可以很容易地猜出 CT_INTERVAL,然后在 CT_INTERVAL-1 秒内淹没您的服务器,并且在防火墙检查连接时不发送任何连接。实际上,我相信这种情况最近发生在我们身上,我们不得不手动阻止违规 IP。
提前致谢!
答案1
由于没人回答,我下载了 csf 防火墙源代码,并检查了 CT_LIMIT 参数的使用方式。显然,连接信息是从 /proc/net/tcp|udp|etc.. 读取的,其中仅包含与服务器的当前连接。
因此,攻击者可以通过在防火墙验证当前活动连接时暂停来轻松绕过 cfs 防火墙 DOS 保护。
一个临时的解决方法是将 CT_INTERVAL 设置为 10 秒(这是最小值),从而强制防火墙每 10 秒检查一次当前连接。这将使攻击者更难猜测他必须暂停攻击的确切时间。