最近,一个名为“slowloris”的脚本引起了人们的关注。slowloris 的基本概念并不是新的攻击,但鉴于最近的关注,我发现针对我们一些 Apache 网站的攻击略有增加。
目前似乎还没有任何可以 100% 防御此种情况的方法。
我们确定的最佳解决方案(到目前为止)是增加 MaxClients。
这当然只不过增加了对攻击者的计算机的要求,并且实际上并不能 100% 地保护服务器。
另一份报告表明,在 Apache 服务器前使用反向代理(如 Perlbal)可以帮助防止攻击。
使用 mod_evasive 来限制来自一个主机的连接数,并使用 mod_security 来拒绝看起来像是由 slowloris 发出的请求,似乎是迄今为止最好的防御措施。
ServerFault 上有谁经历过这样的攻击吗?如果有,你们采取了哪些措施来防御/预防它?
注意:这个问题针对的是 Apache 服务器,因为据我了解,Windows IIS 服务器不受影响。
答案1
我经历过这样的袭击......在盛夏(6 月 23 日),你应该在乡下喝啤酒:>
我把我的阿帕奇放在后面漆,不仅可以防范 slowloris,还可以大大加快网络请求速度。
另外,iptables
帮助了我:
iptables -I INPUT -p tcp --dport 80 \
-m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP
此规则限制一个主机与端口 80 的连接数为 20 个,这不会影响非恶意用户,但会导致 slowloris 在一个主机上无法使用。
答案2
mod_antiloris, 就那么简单。
答案3
如果您的所有 apache 模块都是线程安全的,则只需切换到事件或工作 MPM 即可击败 slowloris。参考:这里
答案4
您可以尝试使用用户补丁。它根据服务器的负载修改超时,但考虑到它的状态,您可能不想在未经过认真测试的情况下在生产机器上使用它。看一看这里。