七层协议攻防实战:从HTTP慢速攻击到DNS隧道检测

news2025/3/12 17:02:51

一、七层协议攻击类型与特征

攻击类型协议特征
HTTP慢速攻击HTTP低速率发送不完整请求
DNS隧道DNS异常长域名、高频率TXT查询
API滥用攻击HTTP高频调用关键接口(如短信发送)
WebSocket洪水WebSocket海量小消息耗尽服务器资源

二、HTTP协议深度防护

1. 慢速攻击防御(Nginx配置)
http {  
    # 限制请求头和体的读取时间  
    client_header_timeout 10s;  
    client_body_timeout 10s;  

    # 限制请求速率  
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s;  

    server {  
        location / {  
            limit_req zone=api_limit burst=200;  
            # 限制最小传输速率(100字节/秒)  
            client_body_in_file_only on;  
            client_body_temp_path /dev/shm/;  
            client_max_body_size 1m;  
            limit_rate_after 1k;  
            limit_rate 100;  
        }  
    }  
}  
2. 请求特征过滤(OpenResty Lua脚本)
location /api {  
    access_by_lua_block {  
        local headers = ngx.req.get_headers()  
        -- 拦截无User-Agent请求  
        if not headers["User-Agent"] then  
            ngx.exit(ngx.HTTP_FORBIDDEN)  
        end  
        -- 拦截非常规HTTP方法  
        local method = ngx.req.get_method()  
        if not ({GET=true, POST=true})[method] then  
            ngx.exit(ngx.HTTP_NOT_ALLOWED)  
        end  
    }  
}  

三、DNS协议定制防护

1. DNS隧道检测(Python深度学习)
import tensorflow as tf  
import numpy as np  

# 特征:域名长度、熵值、子域名数量  
model = tf.keras.Sequential([  
    tf.keras.layers.Dense(64, activation='relu', input_shape=(3,)),  
    tf.keras.layers.Dense(1, activation='sigmoid')  
])  

def predict_dns_tunnel(domain):  
    features = [  
        len(domain),  
        entropy(domain),  
        domain.count('.')  
    ]  
    return model.predict(np.array([features]))[0] > 0.9  

def entropy(s):  
    p, lns = tf.unique(tf.strings.bytes_split(s))  
    return -tf.reduce_sum(p * tf.math.log(p))  
2. DNS查询限频(Bind配置)
options {  
    rate-limit {  
        responses-per-second 50;  
        window 5;  
        qps-scale 100;  
    };  
};  

zone "example.com" {  
    type master;  
    file "db.example.com";  
    # 限制单个客户端查询频率  
    rate-limit {  
        responses-per-second 10;  
        window 3;  
    };  
};  

四、WebSocket协议防护

1. 消息频率限制(Node.js示例)
const WebSocket = require('ws');  
const wss = new WebSocket.Server({ port: 8080 });  

wss.on('connection', (ws) => {  
    let messageCount = 0;  
    setInterval(() => messageCount = 0, 1000);  // 每秒重置计数  

    ws.on('message', (data) => {  
        if (++messageCount > 100) {  
            ws.close(1008, '消息频率超限');  
            return;  
        }  
        // 正常处理消息  
    });  
});  
2. 协议头校验(Go语言实现)
func handleWebSocket(w http.ResponseWriter, r *http.Request) {  
    // 校验Origin头  
    if r.Header.Get("Origin") != "https://example.com" {  
        http.Error(w, "Invalid Origin", http.StatusForbidden)  
        return  
    }  

    // 校验协议版本  
    if !strings.Contains(r.Header.Get("Sec-WebSocket-Version"), "13") {  
        http.Error(w, "Unsupported Version", http.StatusUpgradeRequired)  
        return  
    }  

    // 升级连接...  
}  

五、防御工具链与监控体系

  1. 应用层防火墙
    • ModSecurity(自定义规则示例):
      SecRule REQUEST_URI "@contains /api/send_sms" \  
        "id:1001,phase:2,deny,log,msg:'SMS API滥用'"  
      
  2. 日志分析平台
    • ELK Stack(检测异常请求模式)
    • Grafana(可视化实时QPS)
  3. 云WAF集成
    • AWS WAF(速率限制规则)
    • Cloudflare Workers(边缘JS挑战)

六、防御效果验证方法

  1. 压力测试工具
    # 模拟HTTP慢速攻击  
    slowhttptest -c 1000 -u https://example.com -r 10  
    # 发送畸形WebSocket帧  
    wsdump.py --fragment 1000 ws://example.com  
    
  2. 防御验证指标
    • 攻击期间CPU占用率 < 70%
    • 正常请求成功率 > 99.9%
    • 攻击IP自动封禁时间 < 5秒

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

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

相关文章

Oracle 字符类型对比

本文以 Oracle12c 为例 1.主要区别对比 类型存储方式最大长度字符集支持适用场景备注​CHAR(M)固定长度空格填充2000 字节&#xff0c;M 代表字节长度默认字符集固定长度编码实际存储长度固定为定义长度&#xff08;如 CHAR(10) 始终占 10 字节&#xff09;​VARCHAR2(M)可变长…

阿里云操作系统控制台实战评测:提升云资源管理与监控效率

文章目录 前言产品介绍操作系统控制台体验阿里云操作系统开通 帮助与总结建议 前言 随着云计算和虚拟化技术的发展&#xff0c;操作系统控制台作为运维管理的核心工具之一&#xff0c;在现代IT环境中发挥着越来越重要的作用。它提供了一种更加直观、高效的方式来管理操作系统&…

Linux本地部署deepseek及SpringBoot集成deepseek

一、ollama安装 本文以linux安装为例(服务器主机ip&#xff1a;192.168.109.210) 1、自动安装(方式一) curl -fsSL https://ollama.com/install.sh | sh 2、手动安装(方式二) (1)下载二进制文件 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linu…

用物理信息神经网络(PINN)解决实际优化问题:全面解析与实践

摘要 本文系统介绍了物理信息神经网络&#xff08;PINN&#xff09;在解决实际优化问题中的创新应用。通过将物理定律与神经网络深度融合&#xff0c;PINN在摆的倒立控制、最短时间路径规划及航天器借力飞行轨道设计等复杂任务中展现出显著优势。实验表明&#xff0c;PINN相比…

RabbitMQ之旅(1)

相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 ​编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…

HTML-网页介绍

一、网页 1.什么是网页&#xff1a; 网站是指在因特网上根据一定的规则&#xff0c;使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”&#xff0c;通常是 HTML 格式的文件&#xff0c;它要通过浏览器来阅读。 网页是构成网站的基本元素&#xf…

【C#学习笔记03】进制转换与反码、补码、原码

1. 进制转换 计算机中的数据通常以二进制形式存储&#xff0c;但在编程和调试过程中&#xff0c;我们经常需要与十进制、八进制和十六进制打交道。因此&#xff0c;掌握进制转换是C语言学习中的重要一环。 1.1 进制的基本概念 二进制&#xff08;Binary&#xff09;&#xff…

python学智能算法(七)|KNN邻近算法

【1】引言 前述学习进程中&#xff0c;已经了解了一些非常经典的智能算法&#xff0c;相关文章包括且不限于&#xff1a; python学智能算法&#xff08;三&#xff09;|模拟退火算法&#xff1a;深层分析_模拟退火 动画演示-CSDN博客 python学智能算法&#xff08;四&#x…

Java数据结构第二十二期:Map与Set的高效应用之道(一)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、Map和Set 1.1. 概念 二、搜索树 2.1. 概念 2.2. 查找操作 2.2. 插入操作 2.3. 删除操作 2.4. 性能分析 三、搜索 3.1. 概念及场景 3.2. 模型 四、Map 4.1. Map的说明 3.2. Map的使用 五…

兴达易控modbusTCP转profinet接防撞雷达测试

modbusTCP转profinet接防撞雷达测试 随着工业自动化程度的不断提高&#xff0c;现场设备之间的通信需求日益增长。ModbusTCP作为一种广泛应用的工业通信协议&#xff0c;因其简单、可靠的特点&#xff0c;被广泛应用于各种自动化设备中。而Profinet作为工业以太网的一种&#…

flutter实践:断点调试踩坑

问题&#xff1a;使用VSCode开发flutter,最近突然开始打断点不生效&#xff0c;程序可以attach,修改有日志输出&#xff0c;但是断点处怎么都停不了&#xff0c;程序异常断点会停。 分析&#xff1a;开始误以为是flutterSDK出了问题折腾了一天&#xff0c;后来又怀疑是lauch.j…

STM32——GPIO介绍

GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。 1、GPIO 基本结构 STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括: 9 组 GPIO 端口…

Photo Works在线图片编辑器:一键修复老照片,轻松焕新记忆

★【概况介绍】 今天突然收到我的朋友电脑出故障了,截图给我,我一看就知道这个是缺少必要的组件引起的故障。结合这个问题,我来谈谈自己的解决思路和方法,希望能够帮助到大家。帮助大家是我最开心的事情。以前只是帮朋友解决问题,没有记录下来,刚刚接触到这个平台,刚好可…

SQLiteStudio:一款免费开源跨平台的SQLite管理工具

目录 1.简介 2.下载与安装 3.实现分析 4.总结 1.简介 SQLiteStudio 是一款专门用于管理 SQLite 数据库的图形化工具&#xff0c;由波兰开发者开发并维护。由于 SQLite 以其轻量级、零配置、嵌入式等特性被广泛应用于各种小型项目、移动应用和桌面应用中&#xff0c;而 SQLi…

Markdown 语法入门指南(VSCode 版)

此博客为一份详细的 Markdown 语法入门指南&#xff0c;专门针对在 VSCode 上使用 Markdown 的零基础用户。这份指南将包括 Markdown 的基础语法、在 VSCode 中的安装与使用方式、常见问题及注意事项。 Markdown 是一种轻量级标记语言&#xff0c;使用纯文本符号来标记格式&am…

PostgreSQL学习笔记:PostgreSQL vs MySQL

PostgreSQL 和 MySQL 都是广泛使用的关系型数据库管理系统&#xff0c;它们有以下一些对比&#xff1a; 一、功能特性 1. 数据类型支持 PostgreSQL&#xff1a;支持丰富的数据类型&#xff0c;包括数组、JSON、JSONB、范围类型、几何类型等。对于复杂数据结构的存储和处理非…

内存检测工具——Qt Creator

前言 检测内存错误的工具&#xff0c;有很多个&#xff0c;我今天粗浅的学了一下可在Qt上使用的工具们&#xff1a; Dr.Memory 工具之前我曾在关注的博主上看到相关的博客&#xff1a;C(Qt)软件调试---内存调试器Dr.Memory&#xff08;21&#xff09;_dr. memory-CSDN博客 今…

2.4 基于Vitest的单元测试基础设施搭建

文章目录 1. 现代单元测试体系解析测试金字塔演进Vitest核心定位2. 基础设施架构设计整体架构图3. 环境配置全流程3.1 基础环境搭建3.2 配置文件`vitest.config.ts`3.3 测试环境初始化4. 测试用例编写规范4.1 基础测试示例4.2 Vue组件测试4.3 异步逻辑测试5. Mock策略深度优化5…

⭐算法OJ⭐链表排序【归并排序】(C++/JavaScript 实现)

文章目录 148. Sort List解题思路归并排序的基本思想归并排序的步骤 实现实现步骤C 实现JavaScript 实现 复杂度总结 148. Sort List Given the head of a linked list, return the list after sorting it in ascending order. 解题思路 链表排序问题可以通过多种方法解决&am…

SegMAN模型详解及代码复现

SegMAN模型概述 模型背景 在深入探讨SegMAN模型之前&#xff0c;我们需要了解其研究背景。在SegMAN出现之前&#xff0c;计算机视觉领域的研究主要集中在以下几个方面&#xff1a; 手工制作方法&#xff0c;如SIFT基于卷积神经网络(CNN)的方法&#xff0c;如STN和PTN对平移、…