HTTP慢连接攻击的原理和防范措施

news/2024/5/18 20:21:02

随着互联网的快速发展,网络安全问题日益凸显,网络攻击事件频繁发生。其中,HTTP慢速攻击作为一种隐蔽且高效的攻击方式,近年来逐渐出现的越来越多。

为了防范这些网络攻击,我们需要先了解这些攻击情况,这样才能方便我们对症下药,选择合适的安全解决方案。作为当前常见的网络攻击方式,慢速连接攻击导致很多企业用户的网站业务或主机服务器深受其害,下面德迅云安全就从安全角度详细介绍HTTP慢速攻击的情况,并探讨一些对应的防护措施。

一、什么是HTTP慢速连接攻击?

HTTP慢速攻击(Slowloris Attack)是一种利用HTTP协议特性进行的攻击方式。攻击者通过发送大量的半开连接请求到目标服务器,每个连接请求只发送少量的数据,并长时间保持连接不断开。这样,攻击者可以逐渐占满服务器的连接资源,导致服务器无法处理正常的请求,从而造成拒绝服务(DoS)或分布式拒绝服务(DDoS)的效果。

由于这种攻击方式发送的请求都是合法的,因此很难被传统的防火墙或入侵检测系统所识别。同时,慢速攻击还可以与其他攻击方式相结合,形成更为复杂的攻击链,进一步提高攻击的成功率和隐蔽性。

二、HTTP慢速攻击的特点

1、隐蔽性高:慢速攻击利用的是HTTP协议的合法特性,因此很难被传统的安全设备所识别。

2、占用资源少:每个慢速连接只发送少量的数据,因此攻击者可以使用较少的资源发起大量的攻击。

3、攻击效果显著:通过占用服务器的连接资源,慢速攻击可以迅速导致服务器性能下降,甚至崩溃。

三、HTTP慢速连接攻击原理

HTTP慢速连接攻击是CC攻击的变种,对任何一个允许HTTP访问的服务器,攻击者先在客户端上向该服务器建立一个content-length比较大的连接,然后通过该连接以非常低的速度(例如,1秒~10秒发一个字节)向服务器发包,并维持该连接不断开。

由于 HTTP 请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用了这种慢速连接发 HTTP 请求,并维持该连接不断开,就会导致占用一个HTTP连接会话。

如果攻击者在客户端上不断建立这样的连接,服务器上可用的连接和服务器正常资源将慢慢被占满,从而导致服务器拒绝用户正常的访问请求,也就产生了拒绝服务攻击的效果。

四、HTTP慢速连接攻击种类

HTTP慢速连接攻击主要分为三种:Slow read攻击、Slow headers攻击、Slow body攻击。

1、Slow read攻击

攻击者建立连接后发送完整的请求给服务器端,然后一直保持这个连接,以很低的速度读取Response或者让服务器误以为客户端很忙,如很长一段时间客户端不读取任何数据,通过发送Zero Window到服务器,直到连接快超时前才读取一个字节,这样方式以消耗服务器的连接和内存资源。

2、Slow headers攻击

Web应用在处理HTTP请求之前都要先接受完所有的HTTP头部,Web 服务器在没接收到 2 个连续的 \r\n 时,会认为客户端没有发送完头部,而持续的等客户端发送数据。

攻击者就是利用了这点,对服务器发起一个HTTP请求,一直不停的发送HTTP头部,但是HTTP头字段不发送结束符,之后发送其他字段,而服务器在处理之前需要先接收完所有的HTTP头部,导致连接一直被占用,这样就消耗了服务器的连接和内存资源;

3、Slow body攻击

攻击者发送一个 HTTP POST 请求,并将总报文长度(Content-Length)设置为一个很大数值,表示要发送大量数据,服务器就会保持连接准备接收数据。

但是在随后的数据发送中,每次却只发送很小的报文(比如10-100s发一个字节),这样导致服务器端一直等待攻击者发送数据,以此消耗服务器的资源。

五、HTTP慢速攻击的防御措施

上述我们了解到了关于HTTP慢连接攻击的三种攻击方式,我们可以举个简单的例子再加强理解,比如一个餐馆,通常用餐的步骤是:点菜、用餐、付款。HTTP慢连接攻击,攻击者就像是看这个餐馆不顺眼的人,他雇佣了许多看似正常的客人进来用餐,但是做出一些不是正常用户会出的事情,结果就会发生了许多不正常的情况。

Slow read攻击就像吃完饭不离开一直霸占座位的客人,导致新的顾客无法进来就餐;

Slow headers攻击就像那种点餐犹豫不决的人,不停的说又一直说不清自己要点什么菜;

Slow body攻击就好比顾客结账,但却是从口袋一个一个摸硬币出来付款。

上面三种类型,共同特点就是:慢!想方设法地让自己的动作慢下来,在看似正常的点餐流程里面,他们总能想尽办法来拖延时间,占用资源并且长时间不释放,导致正常客人在后面排队等待,无法正常就餐。如果餐馆想正常营业,就只能通过阻止这些捣乱的顾客,清理这些点餐慢、付款慢的顾客,限定进餐时长等来解决,同理,防御这类慢连接攻击也是同样的道理。下面就来了解下HTTP慢连接攻击可以有哪些防护措施。

针对HTTP慢速攻击,我们可以采取以下防御措施:

1、限制连接数

在服务器端设置最大连接数限制,防止攻击者通过大量半开连接占满服务器资源。

2、设定超时时间

对web服务器的HTTP头部传输的最大许可时间进行限制,为每个连接设置合理的超时时间,当连接在一定时间内没有活动时,自动关闭该连接。

3、针对HTTP慢速攻击的特点,对每秒钟HTTP并发连接数进行检查,若发现如POST报文的报文头都没有结束标识等异常,断开此IP地址与HTTP服务器的连接。

4、使用安全设备

部署专业的网络安全设备,像德迅云安全的安全加速SCDN,可以进行慢连接攻击防御,对如Slow Headers攻击,可以通过检测请求头超时时间、最大包数量阈值进行有效防护,提高服务器的安全防护能力。

六、总结

HTTP慢速攻击作为一种隐蔽且高效的攻击方式,对服务器的安全和稳定性构成了严重威胁。通过大概了解了关于HTTP慢速连接攻击的相关情况,我们是可以从多个方面入手,包括限制连接数、设定超时时间、使用安全加速SCDN方案来防护处理攻击情况,确保网络环境的安全稳定。


http://www.mrgr.cn/p/33277731

相关文章

Redis篇:缓存击穿及解决方案

1.何为缓存击穿 缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了(有可能是正好过期了),无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种: 互斥锁 逻…

【深度学习】yolo-World,数据标注,zeroshot,目标检测

仓库:https://github.com/AILab-CVC/YOLO-World 下载权重: 仓库下载和环境设置 下载仓库:使用以下命令从 GitHub 上克隆仓库: git clone --recursive https://github.com/AILab-CVC/YOLO-World.git创建并激活环境&#xff1a…

Xinlinx FPGA内的存储器BRAM全解

目录 一、总体概述1.7系列FPGA的BRAM特点2.资源情况 二、BRAM分类1.单端口RAM2.简单双端口RAM3.真双端口RAM 三、BRAM的读写1、Primitives Output Registers读操作注意事项2.三种写数据模式(1)Write_First(2)Read_First&#xff0…

贪吃蛇的简单实现(c语言)

前言:学完了C语言的基础语法,和一点数据结构的知识,拿贪吃蛇来练练手,并熟悉以前的知识。写完之后,有一种成就感,为以后的学习饱满激情。 注意这里的讲解是由部分到整体的思路。 目录 控制台不能是终端&am…

UE4网络图片加载库(带内存缓存和磁盘缓存)

UE4网络图片加载库,带内存缓存和磁盘缓存,支持自定义缓存大小,支持蓝图和C++代码调用 1、调用示例 2、对外暴露函数 3、源代码-网络模块 KeImageNet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM…

BERT-CRF 微调中文 NER 模型

文章目录 数据集模型定义数据集预处理BIO 标签转换自定义Dataset拆分训练、测试集 训练验证、测试指标计算推理其它相关参数CRF 模块 数据集 CLUE-NER数据集:https://github.com/CLUEbenchmark/CLUENER2020/blob/master/pytorch_version/README.md 模型定义 imp…

vulfocus靶场couchdb 权限绕过 (CVE-2017-12635)

Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台&…

WDS+MDT网络启动自动部署windows(七)添加驱动

简介: 以前的ghost,是封装万能驱动。 现在安装原版ISO,是手动安装驱动。 那么WDS+MDT,怎么装驱动更方便呢? 本来是轻接触,lite touch,通过设置rules,bootstrap,可以达到只选择一下任务序列即可。 那么也要自动安装驱动。 WDS也可以注入驱动,但是是在使用原版安装镜像…

【嵌入式AI部署神经网络】STM32CubeIDE上部署神经网络之指纹识别(Pytorch)——篇一|环境搭建与模型初步部署篇

前言:本篇主要讲解搭建所需环境,以及基于pytorch框架在stm32cubeide上部署神经网络,部署神经网络到STM32单片机,本篇实现初步部署模型,没有加入训练集与验证集,将在第二篇加入。篇二详细讲解STM32CubeIDE上…

4.19作业

1、总结二进制信号量和计数型信号量的区别,以及他们的使用场景。 二进制信号量:信号量的数值只能是0和1,用于共享资源的访问 计数型信号量:信号量的值都是大于或者等于2,实现生产者和消费者模型 2、使用技术型信号量…

手撕netty源码(一)- NioEventLoopGroup

文章目录 前言一、NIO 与 netty二、NioEventLoopGroup 对象的创建过程2.1 创建流程图 前言 本文是手撕netty源码系列的开篇文章,会先介绍一下netty对NIO关键代码的封装位置,主要介绍 NioEventLoopGroup 对象的创建过程,看看new一个对象可以做…

快速新建springboot项目

一、初始化 1.打开IDEA,在Spring initializer这里按照下图项目进行配置。注意:如果jdk是1.8建议将Server URL这里替换为图中的阿里云服务器,否则容易找不到对应的java8,然后点击next 2.在这里提前配置一些需要使用的依赖&#xf…

软考 系统架构设计师系列知识点之大数据设计理论与实践(13)

接前一篇文章:软考 系统架构设计师系列知识点之大数据设计理论与实践(12) 所属章节: 第19章. 大数据架构设计理论与实践 第4节 Kappa架构 19.4.2 Kappa架构介绍 Kappa架构由Jay Kreps提出(Lambda由Storm之父Nayhan M…

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

C语言 字符类型

下面 我们来说字符类型 我们来看这个 保险单 金额 和 总额 都可以用数字类型 而性别则需要字符型 字符数据的存储 – ASCI码 字符类型 char 就是专为存储字符(如字母&#xff0c;标点和数字)而设计的类型。 使用单引号包含单个字符或转义字符去表示一个 char 类型的常量。 …

【QT学习】9.绘图,三种贴图,贴图的转换,不规则贴图(透明泡泡)

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统&#xff0c;可以使用相同的 API 在屏幕和绘图设备上进行绘制&#xff0c;它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作&#xff0c;其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

ZYNQ--PL读写PS端DDR数据

PL 和PS的高效交互是zynq 7000 soc开发的重中之重&#xff0c;我们常常需要将PL端的大量数 据实时送到PS端处理&#xff0c;或者将PS端处理结果实时送到PL端处理&#xff0c;常规我们会想到使用DMA 的方式来进行&#xff0c;但是各种协议非常麻烦&#xff0c;灵活性也比较差&am…

CDN、边缘计算与云计算:构建现代网络的核心技术

在数字化时代&#xff0c;数据的快速传输和处理是保持竞争力的关键。内容分发网络&#xff08;CDN&#xff09;、边缘计算和云计算共同构成了现代互联网基础架构的核心&#xff0c;使内容快速、安全地到达用户手中。本文将探讨这三种技术的功能、相互关系以及未来的发展趋势。 …

网络 (基础概念, OSI 七层模型, TCP/IP 五层模型)

网络互连 网络互连: 将多台计算机连接在一起, 完成数据共享 数据共享的本质是网络数据传输, 即计算机之间通过网络来传输数, 也叫做网络通信 根据网络互连的规模不同, 将网络划分为局域网和广域网 注意: 局域网和广域网是相对的概念 局域网LAN 又称内网, 局域网和局域网之间在没…

【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程

上篇&#xff0c;我们已学习&#xff1a;【快速入门 LVGL】-- 4、显示中文 工程中添加了两个按钮作示范。运行效果如图&#xff1a; 本篇&#xff1a;把Gui Guider设计好的界面&#xff0c;移植到STM32工程。 特别地&#xff1a; 在使用Gui Guider进行界面设计时&#xff0c;应…