首页 > 其他分享 >慢速 HTTP 拒绝服务: 分析利用和缓解

慢速 HTTP 拒绝服务: 分析利用和缓解

时间:2024-03-30 20:57:19浏览次数:32  
标签:拒绝服务 HTTP 请求 攻击 服务器 慢速 连接

慢速 HTTP 拒绝服务: 分析、利用和缓解

    慢速 HTTP 攻击Slow HTTP DoS Attack基于这样一个事实,即 HTTP 协议在设计上要求服务器在处理请求之前完全接收请求。如果 HTTP 请求未完成,或者传输速率很低,服务器就会一直占用资源等待其他数据。如果服务器占用过多资源,可能会导致目标主机拒绝服务。因为我们将阻止其他用户通过协议连接或创建会话。对任何一个允许HTTP访问的服务器,攻击者先在客户端上向该服务器建立一个content-length比较大的连接,然后通过该连接以非常低的速度(例如,1秒~10秒发一个字节)向服务器发包,并维持该连接不断开。如果攻击者在客户端上不断建立这样的连接,服务器上可用的连接将慢慢被占满,从而导致服务器拒绝用户正常的访问申请。

    简而言之,攻击者向网络服务器发送合法的 HTTP 请求头。在这些报文头中,正确指定了报文主体的大小。但是,信息主体的发送速度却非常慢。这种速度可以慢到每两分钟一个字节,但还不足以导致客户端-服务器传输超时,从而导致会话关闭。由于信息是正常处理的,目标服务器会尽力遵守规则,因此服务器的速度会随之大大降低。当攻击者同时发起数百甚至数千次 "慢速 HTTP "攻击时,服务器资源几乎在几秒钟内就会被消耗殆尽,导致合法客户端连接无法访问。 这类攻击很容易实施,因为使用最小带宽的单台机器可以在很短的时间内(最多 65539 次)建立数千个连接,产生数千个未完成的 HTTP 请求。

    可怕的是,这些攻击很难与正常流量区分开来。由于它们不需要应用层的大量资源,因此可以从一台计算机启动,这使得它们非常容易启动且难以缓解。传统的速度检测技术无法阻止此类攻击。也许一种方法是更新服务器的可用性,服务器上的可用连接越多(nginx 的 max_clients = worker_processes * worker_connections),攻击压垮该服务器的可能性就越小。不幸的是,在很多情况下,攻击者会简单地扩大攻击规模,试图尽可能多地超载。这些攻击可能就像耗时较长的合法请求,因此很难使用传统的反 DoS 工具进行检测和阻止。我给你留了一个纸条,通过这种攻击的页面:


工作原理
分析 HTTP GET 请求有助于更好地解释慢速 HTTP DoS 攻击如何以及为何可能发生。

一个简单的请求如下所示:
image

特别值得注意的是上述 GET 请求中的 [CRLF]。回车换行(CRLF)是一个不可打印字符,用于表示一行的结束。与文本编辑器类似,HTTP 请求会在行尾包含一个 [CRLF] 字符以开始新行,并包含两个 [CRLF] 字符(即 [CRLF] [CRLF])以指示空行。

HTTP 协议将空行定义为标头的结束。慢速 HTTP DoS 攻击就是利用了这一点,不发送尾部空行来完成报头。

更糟的是,入侵检测系统(IDS)通常检测不到慢速 HTTP DoS 攻击,因为这种攻击不包含恶意代码请求。在 IDS(入侵检测系统)看来,HTTP 请求是合法的,并会将其传递给网络服务器,而不会察觉到攻击。

开发
在对技术进行微调时,一个重要的信息是确定服务器上保持连接状态的最长时间(秒),这将使我们能够优化作为攻击者的资源。

一个 Python 脚本就能完成这项工作():

image

在第一次尝试中,我们的窗口大小是 75 秒,第 8 条调试信息告诉我们服务器关闭了连接,因此这不是我们的值,作为攻击者,我们将浪费 1 秒钟来启动另一个新连接。因此,我们用 74 秒进行了测试,成功地保持了会话的活力。

image

工具https://github.com/shekyan/slowhttptest

docker pull shekyan/slowhttptest

根据这些测试,我们的命令将如下所示:

slowhttptest -c 65539 -H -g -o report.csv -i 10 -r 200 -t GET -u https://targethost.com:443 -x 74 -p 3 -l 1800

-c 65539 // 同时启动的最大连接数
-h // slowloris 模式 - 慢速 http
-g // 生成 CSV 和 HTML 格式的统计数据
-o report.csv // 自定义输出文件的路径和/或名称,如果指定了 -g 则有效
-i 10 // 每次会话发送信息的间隔时间(以秒为单位),这意味着 HTTP 会话打开后,将等待 10 秒发送信息,以此类推。
-r 200 // 连接比率,每次启动 200 个连接,它们是累积的,根据攻击服务器的处理速度,5 秒后我们将有 1000 个实时连接。
-t GET // 在攻击中使用的 HTTP 方法
-u
https://targethost.com:443 // 目标 URL,与在浏览器中输入的格式相同
-x 74 // 会话的最长持续时间,该值从第一次保持存活测试中获得
-3 // 请求探针,用于监控服务器在攻击期间是否正常响应,3 秒被设定为最长等待时间,如果在规定秒数后服务器没有响应,则认为服务器被 DoSed。
-l 1800 // 指定以秒为单位的攻击持续时间(本例中为 30 分钟)

image

请求探针的响应时间超过 3 秒,因此被视为 DoSed。

因此,我们将访问该网站,检查它是否如脚本所示在运行:

image

事实上,我们已经耗尽了服务器的资源,因此它不再接受合法连接,以至于主机注册的 DNS 服务显示路由进展顺利,直到它到达服务器并产生 HTTP 522 错误。522 代码代表连接超时,是在验证网络服务器和 DNS 之间的 TCP 连接是否相互同意时产生的。

更多



今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

image_thumb2_thumb

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

标签:拒绝服务,HTTP,请求,攻击,服务器,慢速,连接
From: https://www.cnblogs.com/wintersun/p/18106009

相关文章

  • JAVA学习-网络编程.Java11标准化的HTTP Client
           Java11引入了标准化的HTTPClient,它提供了一种现代化、灵活且易于使用的方式来进行HTTP通信。下面是关于Java11标准化的HTTPClient的概述以及与其他比较和高级应用的说明:1.概述:       Java11标准化的HTTPClient是一种替代HttpURLConnection的新......
  • 说说 HTTP 常见的请求头有哪些? 作用?
    一、是什么HTTP头字段(HTTPheaderfields),是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分它们定义了一个超文本传输协议事务中的操作参数HTTP头部字段可以自己根据需要定义,因此可能在 Web服务器和浏览器上发现非标准的头字段下面是一个HTTP请求的请求头:GET/hom......
  • HTTPS协议
    目录1.HTTPS是什么?2.加密和解密3.HTTPS的工作过程3.1对称加密3.2非对称加密3.3引入证书4.总结1.HTTPS是什么?HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层,由于HTTP协议内容都是按照文本的方式明文传输的,所以就导致了在传输的过程中会出现一些被篡......
  • 隐藏ASP.NET MVC的版本信息,使其不在HTTP Header中显示
    隐藏ASP.NETMVC的版本信息,使其不在HTTPHeader中显示。一、隐藏:X-AspNetMvc-Version在Global.asax文件的Application_Start方法中添加:1MvcHandler.DisableMvcResponseHeader= true;二、移除Header中的Server在Global.asax文件中添加:12345......
  • 说说HTTP 常见的状态码有哪些,适用场景?
     一、是什么HTTP状态码(英语:HTTPStatusCode),用以表示网页服务器超文本传输协议响应状态的3位数字代码它由RFC2616规范定义的,并得到 RFC2518、RFC2817、RFC2295、RFC2774与 RFC4918等规范扩展简单来讲,http状态码的作用是服务器告诉客户端当前请求响应的状态,通过状态......
  • https加密过程
    1.对称加密与非对称加密在介绍https加密过程前,需要先简单了解下其中用到的加密算法。对称加密算法:用该密钥加密的数据,可以再用该密钥解密。性能高,速度快。常见的对称加密算法有DES,AES。非对称加密算法:生成一对密钥对,分别称为公钥、私钥。用公钥加密的数据只能由私钥解密。用私......
  • Webbrowser打开https网页提示证书错误
    vb.net开发了一个捕快网文采集器 txt文本使用了IE控件Webbrowser在访问https网页时,有些网页出现了证书错误的提示,无法访问,而且没有"继续"的选项试了一下强制默认证书认证全部为<真>的代码有效.ImportsSystem.Security.Cryptography.X509Certificates......
  • https怎么免费申请
    在互联网技术高速发展的今天,越来越多的用户和企业开始关注网络安全问题,尤其是网站的安全。HTTPS(安全超文本传输协议)作为一种安全的网站传输协议,已经成为了互联网行业的标配。然而,对于很多个人和中小企业来说,如何申请免费的HTTPS证书仍然是一个难题。本文将为大家详细介绍如何......
  • CentOs云服务器安装docker+前端部署(仅http)
    安装dockersudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.reposudoyuminstalldocker-cedocker-ce-clicontainerd.io设置开机自启:systemctlenabledocker.service创建docker网络,网络名字自定义dockernetworkcreatebalab......
  • 【计算机网络】http协议的原理与应用,https是如何保证安全传输的
    ✨✨欢迎大家来到景天科技苑✨✨......