一、 slowhttp 攻击
slowhttp 攻击的意思是客户端使用非常慢的速度发送数据到服务端,例如每秒发送 1 个字节头部或 body,导致服务端连接长时间占用连接,当这种连接多了之后,服务端资源就会耗尽。
以下就是一个慢攻击测试案例,当 1000 个客户端连接缓慢发送 HTTP 头部到服务端后,服务器已经变成了不可用状态:
前端提示资源无法访问:
如何测试服务是否存在慢攻击漏洞
下载测试工具 slowhttptest:https://github.com/shekyan/slowhttptest,根据文档编译安装。
然后执行:
1 |
slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u https://服务器地址/页面 -x 24 -p 3 |
控制台会每 5 秒打印一次连接状态,可以持续监控,如果隔了几十秒后,连接还一直没有断开,说明服务端是存在漏洞的。
二、 apache 环境下修复
我们的 web 服务器是使用的 apache,根据网上提供的方法,安装 mod_reqtimeout 模块,再添加以下配置:
1 2 3 |
<IfModule reqtimeout_module> RequestReadTimeout header=5-40,MinRate=500 body=20,MinRate=500 </IfModule> |
重启 apache,问题就解决了。再次使用测试工具测试,连接在建立后 5 秒左右会被断开。
评论