为什么Nginx和Lighttpd不受Slowloris的影响?

我正在调查Slowloris的漏洞,我想我明白这种攻击是如何以及为什么会起作用的。

我不明白的是为什么Lighttpd和NginX不受影响(根据上面链接的同一篇文章)。 他们做了什么如此不同?

    Apache有一个“最大客户”的理论,

    这是它可以处理的同时连接的数量。 IE浏览器如果一个Apache服务器的“最大客户”限制为100,每个请求需要1秒完成,它最多可以处理每秒100个请求。

    像SlowLoris这样的应用程序将使用连接来泛滥服务器,在我们的例子中,如果SlowLoris每秒发送200个连接,并且Apache每秒只能处理100个连接,那么连接队列将继续变大,并且耗尽机器上的所有内存饶恕。 这与Anonymous的LOIC工作方式类似。

    NGINX和Lighttpd(其中包括)没有最大的连接,他们使用工作线程,理论上,他们可以处理的连接数量没有限制。
    如果你监视你的Apache连接,你会发现大多数活动连接是从客户端发送或接收数据。 在NGINX / Lighttpd中,他们只是忽略这些请求,让它们在后台运行,而不是占用系统资源,只需要处理连接(parsing响应,从后端服务器读取数据等)

    我今天下午实际上回答了一个类似的问题,所以那里的信息也可能对你有意思。 减lessApache请求排队

    Nginx实际上很容易受到slowloris攻击。 稀缺资源是同时工作者连接的最大数量。 这个数字可以计算为worker_connections * worker_processes ,在默认的nginxconfiguration下等于512。 因此,使用goloris等工具取消未保护的nginx是相当容易的。

    瓦利亚拉的评论应该被接受为答案。

    大多数nginx服务器使用默认的configuration,因此容易遭受slowloris攻击。 我已经使用slowloris拿走了我的朋友的nginx网站,只用我的笔记本电脑,通常花了不到5分钟(我的朋友们挑战我这样做)。

    正如valyala所说,在技术上,nginx并不容易受到slowloris的影响,但是默认configuration限制了最大连接数,所以当连接数超过这个数时,nginx就会抛出新的请求,从而导致拒绝服务。

    从slowloris保护nginx的已知方法包括限制来自同一个IP的连接数量,并增加worker_connectionsconfiguration。 攻击仍然有效,但会变得更困难(可能需要超过5分钟?D)