HTTP慢速攻击详解

今天继续给大家介绍渗透测试相关知识,本文主要内容是HTTP慢速攻击详解。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、HTTP慢速攻击简介

HTTP慢速攻击(slow http attack)是一种Dos攻击方式,由于HTTP底层启动了TCP网络链接,如果对TCP超时时间设置的不合理,那么攻击者就可以在发送HTTP请求时采用缓慢发送的方式,导致占用一个HTTP连接会话,如果大量的发送这种数据包,就会导致服务器的连接资源和内存资源被大量消耗,进而构成Dos攻击。

二、HTTP慢速攻击常见手段

HTTP慢速攻击常采用以下手段:
1、slow headers
对Web服务器而言,在处理HTTP请求前要先接收完所有的HTTP头部,如果Web服务器没有收到两个连续的\r\n时,会认为客户端没有发送完头部,(这是由HTTP协议规定的,HTTP头和HTTP Body之间由两个\r\n)而持续的等待客户端发送数据。攻击者可以利用这一点,发起一个HTTP请求,并且一直不停的发送HTTP头部,消耗服务器的内存资源。
2、slow body
攻击者会构造异常的数据包,将HTTP头部中的Content-Length字段设置为一个很大的数值,使得Web服务器认为客户端要发送很大的数据,但是攻击者在发送数据过程中,每次只发送很小的报文,这样导致服务器一直在等待客户端发送数据,从而消耗服务器的连接资源。
3、slow read
攻击者与服务器之间建立并发送了一个HTTP请求,但是当服务器将响应数据发送给攻击者时,攻击者一直以一个很慢的速度读取响应数据,并且通过发送Zero Window到(TCP的一个机制,利用该机制同步客户端和服务器之间的数据接收进度)服务器,直到快超时时才读取很小的数据,以消耗服务器的连接和内存资源。

三、Nginx服务器针对HTTP慢速攻击配置

针对HTTP慢速攻击,我们主要是优化服务器的相关配置,Nginx服务器相关配置参数如下所示:
1、keepalive_timeout
该参数指定TCP连接的最多保持时间,很多浏览器该参数设置为60,因此我们可以跟随浏览器设置,也可以设置一个更短的时间。在客户端和服务器建立TCP连接后,如果开启keepalive机制,那么客户端和服务器就可以一直发送HTTP数据包,而不必频繁的建立或拆除TCP连接,如果客户端长时间不发送HTTP数据包,那么服务器就会发送FIN TCP数据包,关闭TCP连接。如果该参数设置为0,则表示不开启keepalive机制,每次客户端接收完HTTP响应后,服务器立即发送TCP FIN包,关闭TCP连接。
2、client_body_timeout
该参数是客户端与服务器建立连接后发送request body的超时时间,如果客户端在该参数设置的时间内没有发送任何内容,Nginx服务器将返回408(Request Time Out)。
3、client_header_timeout
该参数是客户端向服务器发送一个完整的request header的超时时间,如果客户端在该时间内没有发送完一个完整的request header,Nginx将返回408(Request Time Out),合理设置此参数可以很好的防御HTTP Slow Header攻击。
4、send_timeout
send_timeout为服务端向客户端传输数据的超时时间,如果设置了该参数,那么服务器就必须在规定的时间内向客户端传输完所有数据,合理设置该参数可以有效预防HTTP Slow Read攻击。
5、client_body_buffer_size
该参数可以设置请求主体缓冲区大小,如果主体超过该参数规定的大小,则完整主体或主体的一部分会被写入临时文件。该设置仅在Nginx启动内存缓冲区时生效。合理的配置该参数可以缓解HTTP Slow Body攻击。
6、client_max_body_size
该参数可以设置Nginx可以处理的最大的请求主体大小,如果客户端的请求超过该参数规定的大小,那么Nginx将会回复413(Request Entity Too Large)错误。该参数的设置可以缓解HTTP Slow Body攻击,但是如果服务器有处理大文件上传的需求,那么该参数的设置需要谨慎。
7、client_body_in_file_only
该参数有三个值,如果设置为off,则会禁止文件写入;如果设置为clean,则会将request body写入临时文件,该文件在处理请求后将会被删除;如果设置为on,则会将请求正文写入文件,该文件在处理请求后将不会被删除。默认情况下该值为off。
8、client_body_in_single_buffer
该参数如果设置为on,那么就会使得Nginx将完整的请求主体存储在单个缓冲区中,并且会优化读取request body中变量时涉及到的I/O操作。该值默认情况下为off。
9、client_body_temp_path
该参数可以设置Nginx存储请求正文时的临时文件位置。
10、client_header_buffer_size
该参数与client_body_buffer_size类似,可以为请求头分配一个缓冲区,如果请求头大小大于指定的缓冲区,则会使用large_client_header_buffers参数指定的更大的缓冲区。
11、large_client_header_buffers
该参数设置了Nginx读取大的客户端请求头的缓冲区大小,仅在缺省缓冲区大小不足时被启用。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值