怎么可能实施一个不会成为 DoS 到我们网站的工具的慢速禁令?
问题是在提供 http 响应时故意延迟会使服务器资源保持忙碌(Web 服务器线程和可能的其他子系统)。
怎么可能实施一个不会成为 DoS 到我们网站的工具的慢速禁令?
问题是在提供 http 响应时故意延迟会使服务器资源保持忙碌(Web 服务器线程和可能的其他子系统)。
您可以将slowban 与资源监控结合起来,这样如果被slowbanned 的用户明显试图DoS,他们将被永久禁止。
如果您的 Web 应用程序很复杂并且占用大量资源,那么由于slowloris-attack的问题,它可能是实施 slowban 的错误位置。
相反,您可以通过轻量级代理或网络服务器(如 lighttpd 或 nginx,从缓存和静态内容提供服务并利用防火墙)代理您的应用程序来引入慢速禁令。从那里,您可以调整防火墙中的带宽,保持所需资源相对较低,因为巨魔的连接主要由轻量级代理而不是重型应用程序服务器提供服务。
虽然这本身有一些危险需要考虑(即使可能不安全的应用程序能够在防火墙中插入基于 ip 的规则),但 iptables 和内核在资源上相对容易。
您唯一需要考虑的是您的系统可以容忍的打开连接的数量,以及何时开始杀死最长的打开连接以为新连接腾出空间。明确地准备好您的站点以对抗低带宽攻击。
您可以在客户端而不是服务器端实现慢速禁令,例如:
CSS:
body {
visibility: hidden;
}
JavaScript:
$(document).ready(function() {
window.setTimeout(function() {
$("body").css("visibility", "visible");
}, /* Slowban delay in miliseconds */);
});
这根本不会占用服务器。
为了进一步防止 DoS 攻击,您可以在后端安装反 DoS 软件(例如 CloudFlare)。