1

我正在尝试模拟针对在我的本地主机上运行的 apache 服务器的慢速 http 读取攻击。但看起来,服务器没有抱怨,只是永远等待客户端读取。

这就是我所做的:

  1. 从 http 服务器请求一个大文件(比如 ~1MB)
  2. 在连续读取之前等待 100 秒的循环中读取来自服务器的响应

由于文件很大,而客户端接收缓冲区很小,服务器必须以多个块的形式发送文件。但是,在客户端,我在连续读取之间等待 100 秒。结果,服务器经常轮询客户端,发现客户端的接收窗口大小为零,因为客户端还没有读取接收缓冲区。

但看起来服务器并没有打扰断开连接,而是默默地不断轮询客户端。服务器在客户端窗口大小> 0 时发送数据并再次返回等待客户端。

我想知道在等待客户端读取数据后是否可以设置任何 apache 配置参数以断开与服务器端的连接。

4

2 回答 2

1

也许这对您更有用,(更简单并节省您的时间):http ://ha.ckers.org/slowloris/这是一个发送部分 HTTP 请求的 Perl 脚本,Apache 服务器保持连接打开(现在不可用对于新用户),如果在 Linux 环境中执行,(Linux 不会限制超出硬件能力的线程)您可以有效地阻止所有打开的套接字,进而阻止其他用户访问服务器。它使用最少的带宽,因为它不会用请求“淹没”服务器,它只是慢慢地把套接字作为人质。你可以在这里下载文件:http: //ha.ckers.org/slowloris/slowloris.pl

为了防止这样的攻击(好吧,减轻),请参见此处:https ://serverfault.com/questions/32361/how-to-best-defend-against-a-slowloris-dos-attack-against-an-apache-网络服务器

您还可以使用负载平衡器或循环设置。

于 2012-02-24T06:51:31.223 回答
0

尝试slowhttptest来测试您所描述的慢读攻击。(它也可以用来测试头的缓慢发送。)

于 2015-01-09T08:59:19.883 回答