百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Web 安全之延迟攻击(Delay Attack)详解

off999 2025-10-02 06:24 18 浏览 0 评论

你有没有遇到过这种情况? 一个网站,流量不大、CPU不爆、带宽没满,可就是打不开。 刷新一次,卡10秒;再刷一次,还是卡。 你查监控,一切正常;你问运维,查不出问题。 最后只能重启服务,暂时恢复——但没过两天,又瘫了。

这不是玄学,也不是硬件老化。

这很可能是一场精心策划的**“延迟攻击”(Delay Attack)**——一种不靠“洪流”,而靠“慢性中毒”来摧毁系统的高级网络攻击。

延迟攻不像传统DDoS那样声势浩大,而是像慢性病一样,悄无声息地耗尽你的资源,让你的系统“活不下去”。

“慢”才是最可怕的攻击

我们通常以为,网络攻击就是“快”:

  • 流量越大越好,
  • 速度越猛越强,
  • 一秒打爆才算赢。

但真正的高手,往往反其道而行之——他们用“慢”来攻击

这类攻击统称为 延迟攻击(Delay Attack)低速率攻击(Low-rate Attack),核心思路是:

不追求瞬间爆发,而是通过长时间、低强度的“合法行为”,一点点蚕食系统资源,最终让服务彻底瘫痪。

它不靠“砸门”,而是“赖着不走”。 它不伪造数据,而是“装作很忙”。 它不触发警报,因为一切看起来都“很正常”。

正因如此,这种攻击极难被发现,也极难防御。

最经典的“慢速攻击”:Slowloris 和 R.U.D.Y.

这类攻击的目标很明确:Web服务器的应用层连接池

我们先来理解一个关键机制:

Web服务器(如 Apache、Nginx)为了同时处理多个用户请求,会为每个连接分配一个“线程”或“工作进程”。这个数量是有限的,一旦所有线程都被占用,新的用户就无法连接。

攻击者的策略就是:让每一个连接都“半死不活”,长期霸占一个线程

1. Slowloris:假装“网速很差”的请求者

想象你去餐厅点餐,服务员过来问你要吃什么。

你说:“我要点……”,然后停住。 服务员等你继续说,但你每隔30秒才说一个字:“……红……烧……肉……”

服务员不能走,因为他以为你还在思考。 结果你一个人占着他,其他客人进不来。

这就是 Slowloris 攻击

  1. 攻击者与服务器建立 HTTP 连接;
  2. 开始发送请求头(如 User-AgentAccept),但只发一部分;
  3. 每隔几十秒才发几个字节,永远不发完;
  4. 服务器认为“客户端网络差”,于是保持连接等待;
  5. 成百上千个这样的“慢吞吞”连接,就把所有线程占满了。

特点

  • 流量极小,可能只有几百B/s;
  • 请求完全合法,防火墙看不出异常;
  • 一次攻击,几十台机器就能打瘫一个中型网站。

2. R.U.D.Y.:我“要发大文件”,但“一个字一个字发”

R.U.D.Y.(R-U-Dead-Yet?)更阴险,专挑需要提交数据的页面下手,比如登录、搜索、上传等。

攻击流程如下:

  1. 攻击者发送一个 POST 请求,声明:“我要发5MB数据”(Content-Length: 5000000);
  2. 服务器信以为真,分配缓冲区,准备接收;
  3. 但攻击者每次只发一个字节,间隔几分钟;
  4. 服务器只能干等,连接一直不释放。

这就像你去快递站寄包裹,说有100斤东西要发,结果你每次只拿一粒纽扣出来…… 工作人员只能等着,其他客户全被堵在外面。

3. 慢速读取攻击:我“收到了”,但“我慢慢看”

还有一种反向操作:慢速读取(Slow Reading)

攻击者发一个正常请求,比如“下载一个10MB的日志文件”。 服务器处理完,开始发送数据。

但攻击者故意“读得很慢”——通过TCP协议的“接收窗口”机制,告诉服务器:“我的缓冲区满了,别发了”。

服务器只好暂停发送,但连接不能断,数据还得留在内存里。 如果攻击者发起成千上万个这样的连接,服务器的内存和连接资源就会被慢慢耗尽。

连密码都能被“时间”破解?时序攻击揭秘

你可能更没想到:连加密系统,也可能被“时间”攻破。

这就是密码学中的时序攻击(Timing Attack)——一种典型的“侧信道攻击”。

它是怎么做到的?

假设一个系统用密钥验证你的登录。 代码逻辑可能是:

if user_key == secret_key:
    allow_access()

但计算机执行这个比较时,是从左到右逐位比对的。 如果第一位就错了,很快返回; 如果前9位都对,只错最后一位,就要比对很久。

攻击者通过精确测量响应时间,就能猜出:

  • 哪些密钥位“更接近正确”;
  • 然后不断调整输入,逐步逼近真实密钥。

这就像开保险箱: 你听“咔哒”声的长短,就能判断哪些数字“转得更深”。

虽然每次差异只有微秒级,但通过大量统计分析,攻击者真的能还原出密钥。

防御之道:恒定时间算法

解决方案是:让所有输入的执行时间都一样。 无论密钥对错,都走完所有计算步骤,不提前退出。

这叫“恒定时间编程”(Constant-time Programming),是现代密码库(如 Libsodium)的基本要求。

如何防御这些“慢动作”攻击?

传统防火墙和DDoS设备,靠“流量阈值”报警。 但慢速攻击的流量可能比正常用户还小,根本触发不了警报。

所以,防御必须更精细、更智能。

1. 调整服务器配置:别让连接“赖太久”

  • 设置连接超时: Apache 的 RequestReadTimeout,Nginx 的 client_header_timeout,超过时间就断开。
  • 限制单IP连接数: 防止一个IP开几千个慢连接。
  • 设置最小传输速率: 要求客户端每秒至少收/发一定数据,否则视为异常。

2. 用反向代理做“缓冲层”

把 Nginx 或 CDN 放在前面,作为“第一道防线”。

它先完整接收客户端请求,确认没问题后,再以“高速、短连接”的方式转发给后端服务器。

这样,后端永远只处理“完整请求”,不受慢速连接影响。

3. 部署WAF(Web应用防火墙)

现代WAF不仅能防SQL注入,还能做行为分析

  • 监控连接的数据传输速率;
  • 识别“长时间低速发送”的异常模式;
  • 自动封禁可疑 IP。

为什么这类攻击越来越重要?

因为:

  • 传统 DDoS 越来越容易被识别和清洗
  • CDN 和云防护让“流量压制”成本极高
  • 攻击者开始转向“ smarter, not harder” 的策略

慢速攻击正是这种“以巧破力”的典型代表。

不需要海量僵尸网络, 不需要TB级带宽, 甚至不需要高超的漏洞利用技术。

只需要:理解系统逻辑,然后“装傻”

安全,是一场与“异常行为”的博弈

延迟攻击告诉我们:

最大的威胁,往往不是“异常的流量”,而是“正常的异常行为”。

一个请求,语法正确、路径合法、参数合规, 但它就是“太慢了”。

在网络安全的世界里,“慢”不该被忽视。 它可能是攻击的伪装,也可能是系统崩溃的前兆。

作为开发者、运维、安全人员,我们不仅要关注“发生了什么”,更要关注“它是怎么发生的”—— 时间、节奏、行为模式,这些细节,才是未来防御的关键。

毕竟,真正的攻击,从来不会按常理出牌。

作者注:本文基于实际攻防案例与安全研究整理。技术在变,攻击在进化,防御也必须与时俱进。保持警惕,始于对“异常”的敏感。

相关推荐

Kubernetes 核心概念全景图:Pod、Node、Cluster、Control Plane 等

想真正读懂Kubernetes的底层运作,你必须理解它的“权力架构”。Pod是什么?Node是什么?ControlPlane又是做什么的?它们之间有什么关系?怎么协同工作?本篇带你构建一个...

Helm 实战:用 Helm 部署一个 Nginx 应用

这一篇,我们将动手实战:用Helm从零部署一个Nginx应用,并掌握HelmChart的结构和参数化技巧。一、准备环境在开始之前,你需要确保环境中具备以下工具:已部署的Kubernet...

从零开始:如何在 Linux 上搭建 Nginx + Node.js 高性能 Web 服务

在现代互联网服务架构中,Nginx+Node.js已成为轻量级、高性能网站的首选组合。本文将带你从零开始,一步步搭建一个高并发、高可用的Web服务平台,让新手也能轻松掌握生产级部署思路。一、...

NetBox 最新版 4.4.1 完整安装指南

NetBox最新版4.4.1完整安装指南(修正版)by大牛蛙1.系统准备#关闭SELinux和防火墙(仅测试环境)systemctldisable--nowfirewalldse...

Termux 安装 linux 宝塔面板,搭建 Nginx+PHP+Mysql web 网站环境

Termux安装linux宝塔面板,搭建Nginx+PHP+Mysqlweb服务环境,解决启动故障奶妈级教程1.到宝塔面板官网:https://www.bt.cn/new/download...

OpenEuler系统安装Nginx安装配置_openwrt安装nginx

NginxWEB安装时可以指定很多的模块,默认需要安装Rewrite模块,也即是需要系统有PCRE库,安装Pcre支持Rewrite功能。如下为安装NginxWEB服务器方法:源码的路径,而不是编...

多级缓存架构实战:从OpenResty到Redis,打造毫秒级响应系统

在传统的Web架构中,当用户发起请求时,应用通常会直接查询数据库。这种模式在低并发场景下尚可工作,但当流量激增时,数据库很容易成为性能瓶颈。多级缓存通过在数据路径的不同层级设置缓存,可以显著降低数据库...

如何使用 Nginx 缓存提高网站性能 ?

快速加载的站点提供了更好的用户体验并且可以拥有更高的搜索引擎排名。通过Nginx缓存提高你的网站性能是一个有效的方法。Nginx是一个流行的开源web服务器,也可以作为web服务器反向代...

如何构建企业级Docker Registry Server

很多人问我,虚拟机镜像和docker镜像的区别是什么?其实区别非常明显,我们可以通过阅读Dockerfile文件就可以知道这个镜像都做了哪些操作,能提供什么服务;但通过虚拟机镜像,你能一眼看出来虚拟机...

如何解决局域网SSL证书问题?使用mkcert证书生成工具轻松搞定

“局域网里弹出‘不安全’红锁,老板就在身后盯着演示,那一刻只想原地消失。”别笑,九成前端都经历过。自签证书被Chrome标红,客户以为网站被黑,其实只是缺一张被信任的证。mkcert把这事从半小时缩到...

Docker 安全与权限控制:别让你的容器变成“漏洞盒子”

在享受容器带来的轻量与灵活的同时,我们也必须面对一个现实问题:安全隐患。容器并不是天然安全,错误配置甚至可能让攻击者“越狱”入侵主机!本篇将带你从多个层面强化Docker的安全防护,构建真正可放心...

Kubernetes生产级管理指南(2025版)

在云原生技术持续演进的2025年,Kubernetes已成为企业数字化转型的核心引擎。然而,生产环境中的集群管理仍面临基础设施配置、安全漏洞、运维复杂度攀升等挑战。本文将结合最新行业实践,从基础设施即...

云原生工程师日常使用最多的工具和100条高频命令

在云原生时代,工程师不仅要熟悉容器化、编排和服务网格,还要掌握大量工具和命令来进行日常运维与开发。本文将从工具篇和命令篇两个角度,详细介绍云原生工程师每天都会用到的核心技能。一、云原生工程师常...

用 Jenkins 实现自动化 CI/CD_jenkins api自动执行

场景设定(可替换为你的技术栈)语言:Node.js(示例简单,任何语言思路一致)制品:Docker镜像(推送到DockerHub/Harbor)运行环境:Kubernetes(staging...

5款好用开源云笔记虚拟主机部署项目推荐

在个人数据管理与协同办公场景中,开源云笔记项目凭借可自主部署、数据可控的优势,成为众多用户的首选。以下推荐5款适配虚拟主机部署、功能完善的开源项目,附核心特性与部署要点,助力快速搭建专属云笔记系统。...

取消回复欢迎 发表评论: