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

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

攻击类型协议特征
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.rhkb.cn/news/32998.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手绘板工具:基于python以及pyqt5实现的手绘白板

基于python实现的手绘板工具 包含&#xff1a;钢笔工具&#xff0c;铅笔工具&#xff0c;橡皮擦&#xff0c;颜色选择&#xff0c;导出为图片。 当然图片临摹也必不可少。 # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QWi…

OpenAI智能体初探:使用 OpenAI Responses API 在 PDF 中实现检索增强生成(RAG)

大家好,我是大 F,深耕AI算法十余年,互联网大厂技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 欢迎关注《大模型理论和实战》、《DeepSeek技术解析和实战》,一起探索技术的无限可能! 引子 在信息爆炸的时代,从大量 PDF 文档中快速准确地检索信息…

DexGraspVLA:面向通用灵巧抓取的视觉-语言-动作框架

25年3月来自北大、北大-灵初智能&#xff08;PsiBot&#xff09;联合实验室、香港科技大学广州分校的论文“DexGraspVLA: A Vision-Language-Action Framework Towards General Dexterous Grasping”。 灵巧抓取仍然是机器人技术中一个基本但具有挑战性的问题。通用机器人必须…

XSS笔记

这里写目录标题 靶场环境部署用到的payload方法集锦基本思路&#xff0c;先插再说如下如何绕过**1. 过滤机制分析****2. 为什么 οnmοusemοvealert(/a/) 能绕过&#xff1f;****3. XSS 触发流程****4. 其他可能的绕过方式****5. 结论** html编码绕过参数不合法HTTP_REFERER抓…

vs code配置 c/C++

1、下载VSCode Visual Studio Code - Code Editing. Redefined 安装目录可改 勾选创建桌面快捷方式 安装即可 2、汉化VSCode 点击确定 下载MinGW 由于vsCode 只是一个编辑器&#xff0c;他没有自带编译器&#xff0c;所以需要下载一个编译器"MinGW". https://…

音视频入门基础:RTP专题(18)——FFmpeg源码中,获取RTP的音频信息的实现(上)

由于本文篇幅较长&#xff0c;分为上、下两篇。 一、引言 通过FFmpeg命令可以获取到SDP描述的RTP流的的音频压缩编码格式、音频压缩编码格式的profile、音频采样率、通道数信息&#xff1a; ffmpeg -protocol_whitelist "file,rtp,udp" -i XXX.sdp 而由《音视频入门…

双指针算法介绍+算法练习(2025)

一、介绍双指针算法 双指针&#xff08;或称为双索引&#xff09;算法是一种高效的算法技巧&#xff0c;常用于处理数组或链表等线性数据结构。它通过使用两个指针来遍历数据&#xff0c;从而减少时间复杂度&#xff0c;避免使用嵌套循环。双指针算法在解决诸如查找、排序、去重…

如何安装旧版本的Pytorch

不同的项目所使用的Pytorch版本可能不同&#xff0c;一般而言&#xff0c;高版本的Pytorch可以向下兼容的&#xff0c;但有时可能会需要旧版本的Pytorch。 1、首先进入Pytorch官网&#xff08;PyTorch&#xff09;&#xff0c;下滑找到” install previous versions of PyTorc…

Easysearch 使用 AWS S3 进行快照备份与还原:完整指南及常见错误排查

Easysearch 可以使用 AWS S3 作为远程存储库&#xff0c;进行索引的快照&#xff08;Snapshot&#xff09;备份和恢复。同时&#xff0c;Easysearch 内置了 S3 插件&#xff0c;无需额外安装。以下是完整的配置和操作步骤。 1. 在 AWS S3 上创建存储桶 登录 AWS 控制台&#x…

Nginx + Keepalived 高可用集群

一、NginxKeepalived 原理 1.1.Nginx 负载均衡机制 Nginx 是一款轻量级且高性能的 Web 服务器和反向代理服务器&#xff0c;在负载均衡方面有着卓越的表现。其具备强大的七层流量管理能力&#xff0c;能够基于 URL、Cookie、HTTP 头信息等对请求进行精准路由。例如&#xff0…

面试提问(1)

面试提问 1.你能说一说C/C之间的区别吗&#xff1f;2.你能将一些你对构造函数和析构函数的认识吗&#xff1f;3.讲一下继承和多态4.你了解TCP/IP四层网络模型吗&#xff1f;5.你了解三次握手和四次挥手吗&#xff1f;6.讲一下进程和线程&#xff1f;7.你对二叉树的了解有哪些&a…

Adobe Genuine Service Alert 一直弹窗,老是一直弹窗【解决方法】

在使用Adobe系列软件时&#xff0c;若没有正版授权&#xff0c;则会出现弹窗&#xff0c;该弹窗是由Adobe Genuine Service软件弹出的&#xff0c;且该弹窗无法关闭&#xff0c;下文介绍如何永久关闭该弹窗。 方法一&#xff1a; 首先在任务栏鼠标右键打开任务管理器&#xff…

防汛应急包,快速响应,守护安全

根据中国水利部统计&#xff0c;自1949年以来&#xff0c;我国几乎每年都面临洪水威胁&#xff0c;其中20世纪90年代后洪涝灾害频率显著增加&#xff0c;仅1990-2009年间就发生超4000起较大灾害&#xff0c;直接经济损失近3万亿元&#xff0c;受灾人口达20亿人次。在2020年长江…

一文了解JVM的垃圾回收

Java堆内存结构 java堆内存是垃圾回收器管理的主要区域&#xff0c;也被称为GC堆。 为了方便垃圾回收&#xff0c;堆内存被分为新生代、老年代和永久代。 新创建的对象的内存会在新生代中分配&#xff0c;达到一定存活时长后会移入老年代&#xff0c;而永久代存储的是类的元数…

【人工智能 | 大数据】基于人工智能的大数据分析方法

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

【C语言】编译和链接详解

hi&#xff0c;各位&#xff0c;让我们开启今日份博客~ 小编个人主页点这里~ 目录 一、翻译环境和运行环境1、翻译环境1.1预处理&#xff08;预编译&#xff09;1.2编译1.2.1词法分析1.2.2语法分析1.2.3语义分析 1.3汇编1.4链接 2.运行环境 一、翻译环境和运行环境 在ANSI C…

在Simulink中将Excel数据导入可变负载模块的方法介绍

文章目录 数据准备与格式要求Excel数据格式MATLAB预处理数据导入方法使用From Spreadsheet模块(直接导入Excel)通过MATLAB工作区中转(From Workspace模块)使用1-D Lookup Table模块(非线性负载映射)Signal Builder模块(变载工况导入)可变负载模块配置注意事项与调试在S…

Java 大视界 -- Java 大数据在智慧文旅虚拟导游与个性化推荐中的应用(130)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

【微知】tmux如何在一个会话的1个窗口中水平分割或者垂直分割窗口?(垂直 Ctrl + b, %; 切换Ctrl + b, 方向键; ctrl d关闭)

背景 除了直接创建窗口&#xff0c;还可以分割一个窗口。创建窗口参考兄弟篇&#xff1a;tmux如何在某个会话session中创建多个窗口&#xff1f;如何切换&#xff1f;&#xff08;Ctrlb c创建&#xff1b;Ctrlb 数字 切换&#xff1b;Ctrlb &关闭&#xff09; 命令 垂…

强化学习(赵世钰版)-学习笔记(7.时序差分学习)

本章是课程算法与方法中的第四章&#xff0c;介绍的时序差分学习算法是基于随机近似方法设计的强化学习方法&#xff0c;也是model-free的方法。 时序差分算法是一种近似估计策略状态值的算法&#xff0c;具体的形式如下&#xff1a; 本质上是在当前t时刻&#xff0c;被访问到的…