网络安全实入门| 剖析HTTP慢速攻击(Slowloris)与Nginx防护配置

news/2025/2/26 4:59:54
一、HTTP慢速攻击的核心原理

HTTP慢速攻击(如Slowloris)是一种应用层拒绝服务攻击(DoS),其核心在于合法但缓慢地占用服务器资源,导致正常请求无法被处理。攻击者通过以下方式实现目标:

  1. 协议漏洞利用:利用HTTP协议对请求完整性的依赖,例如不发送完整的请求头(如缺少\r\n\r\n结尾标识),使服务器持续等待数据。

  2. 连接资源耗尽:通过建立大量半开连接(如设置Keep-Alive),占用服务器的并发连接上限(如Nginx的worker_connections限制),导致新请求被阻塞。

  3. 低带宽消耗:每个连接仅以极低速率发送少量数据(如每10秒发送1字节),绕过传统流量型DDoS防御机制。

二、HTTP慢速攻击的三大类型及特点
  1. Slow Headers(Slowloris)

    • 攻击方式:持续发送未完成的HTTP头部(如缺少\r\n\r\n),占用服务器连接池。

    • 关键特征:利用Web服务器必须接收完整头部才能处理请求的机制。

    • 示例:攻击工具slowhttptest-H模式可模拟此类攻击。

  2. Slow Body(HTTP POST攻击)

    • 攻击方式:声明一个超大的Content-Length(如100MB),随后以极慢速度发送数据体(如每10秒发送1字节)。

    • 防御难点:服务器需为每个连接分配内存缓冲区,长时间占用内存资源。

  3. Slow Read攻击

    • 攻击方式:通过调整TCP窗口大小(如设置为512字节),强制服务器将大文件拆分为多个小包发送,客户端以极低速率接收,导致响应数据长期滞留服务器内存。

三、Nginx防护配置的关键点

针对上述攻击,Nginx可通过以下配置增强防护:

  1. 超时时间控制

    • client_header_timeout:设置接收完整HTTP头部的超时时间(如10秒),超时则断开连接。

    • client_body_timeout:限制请求体的传输时间(如20秒),防止Slow Body攻击。

  2. 连接与请求限制

    • 连接数限制:使用limit_conn_zonelimit_conn模块,限制单个IP的并发连接数(如每个IP最多5个连接)。

    • 请求速率限制:通过limit_req_zonelimit_req限制请求频率(如每秒10次),结合burst缓冲队列处理突发流量。

  3. 缓冲区优化

    • client_header_buffer_sizelarge_client_header_buffers:限制请求头大小(如1KB),防止超大头部耗尽内存。

    • client_max_body_size:限制请求体大小(如2MB),拒绝异常大文件上传。

  4. 临时文件与内存管理

    • client_body_in_file_only clean:将请求体写入临时文件而非内存,减少内存占用。

    • client_body_temp_path:指定临时文件存储路径,避免磁盘I/O瓶颈。

四、综合防御策略
  1. 多层防护架构

    • 结合反向代理(如Nginx)与负载均衡器分散压力,同时部署Web应用防火墙(WAF)识别异常连接模式。

  2. 自动化监控与黑名单

    • 监控连接数和请求速率,自动封禁异常IP(如连续发送未完成头部的IP)。

  3. 协议层加固

    • 禁用不必要的HTTP方法(如TRACE),升级至支持异步I/O的Web服务器(如Nginx的epoll模型)。

🔥 下期预告:从防护到溯源:HTTP慢速攻击的深度对抗


http://www.niftyadmin.cn/n/5867987.html

相关文章

计算机视觉算法实战——文档扫描与 OCR(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ 一、领域简介✨✨ 文档扫描与 OCR(Optical Character Recognition) 是计算机视觉的核心应用之一,旨在将物…

【行业解决方案篇五】【DeepSeek智慧城市:交通流量预测系统】

一、为什么红绿灯总和你作对? 早高峰的十字路口,左转车道排了200米,直行车道却空荡荡——这不是交管局的阴谋,而是传统交通管理系统就像用"算盘预测股票",根本处理不了21世纪的海量数据。DeepSeek的交通流量预测系统,则像是给城市装上了"预知未来的望远镜…

vue3 Props的使用

Props是什么? 官方地址:Props | Vue.js 在 Vue 中,props 是父组件向子组件传递数据的一种机制。 props 是子组件中定义的自定义属性,父组件通过这些属性向子组件传递数据。 它们是单向数据流的一部分,意味着数据只能…

【NLP 23、预训练语言模型】

人类发明后悔,来证明拥有的珍贵 —— 25.1.15 Bert的优势:① 预训练思想 ② Transformer模型结构 一、传统方法 VS 预训练方式 Pre-train: ① 收集海量无标注文本数据 ② 进行模型预训练,并在任务模型中使用 Fine-tune&#xff1a…

DeepSeek开源周Day1:FlashMLA引爆AI推理性能革命!

项目地址:GitHub - deepseek-ai/FlashMLA 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天! ​ 一、开源周震撼启幕 继上周预告后,DeepSeek于北京时间今晨9点准时开源「FlashMLA」,打响开源周五连…

BUUCTF--[极客大挑战 2019]RCE ME

目录 URL编码取反绕过 异或绕过 异或的代码 flag 借助蚁剑中的插件进行绕过 利用动态链接库 编写恶意c语言代码 进行编译 然后再写一个php文件 将这两个文件上传到/var/tmp下 运行payload 直接看代码 <?php error_reporting(0); if(isset($_GET[code])){$code$_G…

计算机毕业设计SpringBoot+Vue.js母婴商城(源码+LW文档+PPT+讲解+开题报告)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Linux故障排查和性能优化面试题及参考答案

目录 如何查看 Linux 系统中的 CPU、内存、磁盘等资源使用情况? 什么是 Linux 中的负载(Load Average)?如何解读它? 如何通过 top 和 htop 命令监控系统性能? 如何使用 mpstat 命令来查看 CPU 的利用情况? 如何分析系统 CPU 瓶颈? 如何分析 CPU 瓶颈?如何优化 CP…