HTTP攻击,该怎么防护

一般网络世界里为人们所熟知的DDoS攻击,多数是通过对带宽或网络计算资源的持续、大量消耗,最终导致目标网络与业务的瘫痪;这类DDOS攻击,工作在OSI模型的网络层与传输层,利用协议特点构造恶意的请求载荷来达成目标资源耗尽的。

图片


不过除了这类在网络传输层大做文章的DDoS攻击外,还有一类应用层DDoS攻击。应用层DDoS攻击,通过向应用程序发送大量恶意请求实现攻击效果,以每秒请求数 (QPS) 来衡量攻击量级与规模;这类攻击也称为 7 层 DDoS 攻击,可针对和破坏特定的网络应用程序,而非整个网络。

此外,由于应用层流量更贴近业务逻辑,在应用层发起DDoS攻击可以同时对目标网络与目标服务器的稳定性造成威胁,并且往往只需较小的成本,就可实现大的破坏效果,这样的不对称性自然更受攻击者们的关注与青睐。

HTTP DDoS(CC)攻击攻击类型:

(1) HTTP floods
这种攻击主要分为两种形式。第一种是HTTP GET request floods,攻击者通过构造HTTP GET请求报文,向目标服务器发送针对特定资源的大量请求。在客户端执行一条HTTP请求的成本很低,但是目标服务器做出对应的响应成本却可能很高。比如加载一个网页,服务端通常需要加载多个文件、查询数据库等才能做出响应;例如在Web业务的防护中,对于有SSR(Server-side rendering)功能页面的HTTP floods攻击,其量级与频率更加突出明显,也更容易对业务造成影响与危害。第二种是HTTP POST request floods,与GET request floods的显著区别是,POST请求往往需要携带表单参数或请求体信息,而这通常意味着服务端需要对请求内容进行相关解析处理,并将数据进行持久化(通常需要进行DB操作)。发送POST请求一般仅需较小的计算与带宽成本,而服务端进行处理操作的过程往往消耗更高。可以说这种攻击形式下,形成这种请求响应间资源消耗差异的空间或可能性更大,更容易实现让服务器过载从而拒绝服务的目标。

图片


(2) Large Payload POST requests通过POST方法发送容量大、结构复杂的请求体到目标服务器,使得目标服务器在解析这些请求内容的过程发生过载(CPU或内存);一般而言,攻击者通过构造特定的序列化请求体,如xml、json等,在服务端执行反序列化操作时引起服务过载。

(3) Asymmetric requests这种类型的攻击,利用的就是请求与响应的非对称性,请求的目标路径会执行高消耗操作而发起攻击请求轻而易举。通常来说,这类攻击需要对目标服务有一定的熟悉与了解,明确攻击目标哪些地方存在这种非对称性利用的可能及利用方式。比如通过从数据库服务器下载大型文件或大量执行数据库的查询等接口,就容易被这种类型攻击所利用。

(4) Low&Slow attack(Slowloris/Slow Post/Read attack)这种类型的攻击更多是面向连接层面,以基于线程的Web服务器为目标,通过慢速请求来捆绑每个服务器线程,从而消耗服务器的线程&连接资源,这类攻击中主要可分为Slowloris、Slow Post/Read 几种攻击方式。

HTTP DDoS攻击攻击特点:

(1) 攻击门槛、成本低相较于4层DDoS攻击,发起HTTP DDoS攻击往往无需构造复杂的攻击报文,仅需较少的带宽就能实现强大的攻击效果。(2) 攻击目标更精细攻击的目标可以精细到服务接口粒度,例如直播页面等,而不需要瘫痪目标的网络也能让业务出现拒绝服务。
(3) 破坏范围广,危害程度高虽然HTTP DDoS攻击的首要目标是瘫痪目标服务,但并不意味着对目标网络的可用性没有威胁。当HTTP floods量级到一定程度时,也存在瘫痪请求接入层网络的可能性。
(4) 攻击源分布广,隐匿性强实际的HTTP DDoS攻击中,攻击者常常利用规模庞大的肉鸡/代理IP,而HTTP DDoS攻击报文中往往不具备或具备难以察觉的恶意特征。对这些攻击源进行封禁处置效果有限甚至有误报风险,攻击者却可以随时更换新一批攻击源。
(5) 请求特征容易伪装,防护难度大不同于Web注入攻击场景,HTTP DDoS的攻击请求的报文特征常常处在一个难以判定好坏的区间,有时部分的异常特征不足以支撑执行拦截决策。攻击者可通过模拟、重放正常请求来发起攻击,即便在请求报文中某些特征被防护方捕获并针对性处置,攻击者也能感知到并作出调整。

图片


HTTP DDoS攻击,通常不会使用畸形报文,也无需使用伪装技巧。这类攻击往往通过使用大量的肉鸡+IP代理池发起,所以简单的封禁策略往往难以起到预期效果,这也是HTTP DDoS难以防护的原因。

德迅云安全多年的网络安防经验,建议可以从以下着手:

  1. 与网络安全团队配合,做好网络安全方面的检查,对承载业务的情况提前做好云监测,可以帮助客户全面掌握业务系统风险态势;
  • 部署安全方案,提高自身防护能力。HTTP DDoS攻击发生时往往来势汹汹,事先并没有任何征兆。这就意味着事中、事后的处置策略对当前攻击通常只能起到应急补救的效果。因此,对于存在攻击风险的网站业务,预先进行安全防护就显得更为重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2809237.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

.NET Core使用NPOI导出复杂,美观的Excel详解

前言: 这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦。客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做数据导出Excel文档&#xf…

C语言《数据结构与算法》安排教学计划课设

背景: 10、安排教学计划 (1) 问题描述。 学校每学期开设的课程是有先后顺序的,如计算机专业:开设《数据结构》课程之前,必须先开设《C语言程序设计》和《离散数学》课程,这种课程开设的先后顺序称为先行、后继课程关…

python学习26

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

2-23 switch、JVM内存模型、垃圾回收机制、this、static、变量的分类

文章目录 switch 实现成绩评级JVM内存模型概念栈的特点堆的特点 垃圾回收机制通用的分代垃圾回收机制三种清理算法垃圾回收过程垃圾回收常见的两种检测引用算法内存泄露常见原因 this的用法创建对象的四步 static 静态特点 变量的分类和作用域import switch 实现成绩评级 switc…

【Redis学习笔记03】Java客户端

1. 初识Jedis Jedis的官网地址&#xff1a;https://github.com/redis/jedis 1.1 快速入门 使用步骤&#xff1a; 注意&#xff1a;如果是云服务器用户使用redis需要先配置防火墙&#xff01; 引入maven依赖 <dependencies><!-- 引入Jedis依赖 --><dependency&g…

每日五道java面试题之spring篇(六)

目录&#xff1a; 第一题 ApplicationContext通常的实现是什么&#xff1f;第二题 什么是Spring的依赖注入&#xff1f;第三题 依赖注入的基本原则第四题 依赖注入有什么优势&#xff1f;第五题 有哪些不同类型的依赖注入实现方式&#xff1f; 第一题 ApplicationContext通常的…

应用配置管理

一、Pod 配置管理 可变配置用 ConfigMap&#xff1b; 敏感信息用 Secret&#xff1b; 身份认证用 ServiceAccount 这几个独立的资源来实现的&#xff1b; 资源配置用 Resources&#xff1b; 安全管控用 SecurityContext&#xff1b; 前置校验用 InitContainers 这几个在 …

吴恩达deeplearning.ai:sigmoid函数的替代方案以及激活函数的选择

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 文章目录 引入——改进下需求预测模型ReLU函数(整流线性单元 rectified linear unit&#xff09;线性激活函数(linear activation function)激活函数的选择实现方式为什么需要激活函数 到现在…

云尚办公-0.3.0

5. controller层 import pers.beiluo.yunshangoffice.model.system.SysRole; import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//RestController&#xff1a;1.该类是控制器&#xff1b;2.方法返回值会被写进响应报文的报文体&#xff0c;而…

深入理解指针2

各位小伙伴们&#xff0c;我们继续来学习指针&#xff0c;指针和结构体以及动态内存管理对后面的数据结构学习有非常大的帮助&#xff0c;所有我们一定要把这些知识点学会。OK,正式进入学习之旅吧 1.数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时&#xff0c;有这…

Java 面向对象进阶 18 JDK8、9开始新增的方法;接口的应用;适配器设计模式;内部类(黑马)

一、JDK8开始新增的方法 默认方法不是抽象方法&#xff0c;所以不强制被重写&#xff1a; 但是如果被重写&#xff0c;就要去掉default关键字&#xff1a; public可以省略&#xff0c;但是default不可以省略&#xff1a; public是灰色的&#xff0c;代表可以省略 但是default是…

Go编译到linux运行出现 cannot execute binary file

1.初学Go就在windows上写了个"Hello,World!",在windown上编译了一下&#xff0c;生成了可执行文件。运行无问题 go build text.go .\text.exe Hello,World!2.但是按照网上的教程进行生成linux的可执行文件时出现报错 set CGO_ENABLED0 set GOOSlinux set GOARCHam…

Linux之安装Nginx、前后端分离项目部署

目录 一、安装Nginx 1.1先一键安装4个依赖 1.2下载并解压安装包 1.3安装nginx&#xff0c;一般我们在nginx都是要安装ssl证书的 1.4 启动nginx服务 1.5开放80端口 1.6配置nginx自启动 1.7修改/etc/rc.d/rc/local的权限 二、多个tomcat负载加后端部署 2.1创建多个tomca…

使用Node.js和Vue.js构建全栈Web应用

随着互联网的迅速发展&#xff0c;Web应用程序的开发变得越来越复杂和多样化。为了满足用户不断变化的需求&#xff0c;全栈开发已成为一个备受关注的话题。在本篇博客中&#xff0c;我将介绍如何使用Node.js和Vue.js来构建全栈Web应用。 Node.js是一个基于Chrome V8引擎的Jav…

【基于Ubuntu20.04的Autoware.universe安装过程】方案一:虚拟机 | 详细记录 | Vmware | 全过程图文 by.Akaxi

目录 一、Autoware.universe背景 二、虚拟机配置 三、Ubuntu20.04安装 四、GPU显卡安装 五、ROS2-Galactic安装 六、ROS2-dev-tools安装 七、rmw-implementation安装 八、pacmod安装 九、autoware-core安装 十、autoware universe dependencies安装 十一、安装pre-c…

SQLServer sp_help使用方法

给大家介绍一个在SQLServer中非常实用的一个存储过程&#xff0c;在SQL Server中&#xff0c;sp_help 存储过程用于显示有关数据库对象&#xff08;如表、视图或存储过程&#xff09;的信息。它提供有关指定对象的结构和属性的详细信息。使用 sp_help 的语法如下&#xff1a; …

机器学习.线性回归

斯塔1和2是权重项&#xff0c;斯塔0是偏置项&#xff0c;在训练过程中为了使得训练结果更加精确而做的微调&#xff0c;不是一个大范围的因素&#xff0c;核心影响因素是权重项 为了完成矩阵的运算&#xff0c;在斯塔0后面乘x0&#xff0c;使得满足矩阵的转换&#xff0c;所以在…

一. demo

1. 舞台-场景-控件 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.Stage;import java.util.Arrays;public class Main e…

【Spring】事务总结

目录 1. 什么是事务&#xff1f; 2. 事务的特性&#xff08;ACID&#xff09;了解么? 3. 详谈 Spring 对事务的支持 3.1. Spring 支持两种方式的事务管理 1).编程式事务管理 2)声明式事务管理 3.2. Spring 事务管理接口介绍 3.2.1. PlatformTransactionManager:事务管理…

leetcode-hot100-双指针

剪枝&#xff0c;减少不必要的计算 283. 移动零 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出: [0] 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 第一印象&#xff1a;使用一个辅助数组&#xff0c;同时以…