首页/新闻资讯/正文详情

Python实现Dos攻击检测与防御系统实战

发布时间:2026/11/3 22:43:25 来源:云帆数科 栏目:资讯中心
Python实现Dos攻击检测与防御系统实战
1. 什么是Dos攻击及其危害Dos攻击(Denial of Service拒绝服务攻击)是一种常见的网络攻击方式它通过消耗目标系统的资源使其无法正常提供服务。这种攻击不需要攻击者获取系统权限只需要让目标系统无法响应正常请求即可达到目的。Dos攻击通常表现为以下几种形式带宽消耗型通过发送大量数据包占用网络带宽资源耗尽型通过建立大量连接耗尽系统资源(CPU、内存等)协议漏洞型利用协议实现中的缺陷进行攻击在Python中实现Dos攻击检测和防御系统主要需要关注以下几个核心指标网络流量异常检测连接频率监控资源使用率监控请求特征分析实际案例某电商网站在促销活动期间遭遇Dos攻击导致正常用户无法访问。攻击者使用简单的Python脚本发送大量HTTP请求服务器CPU使用率迅速达到100%响应时间从200ms飙升到10秒以上。2. Python实现Dos检测系统2.1 基于流量统计的检测方法使用Python的psutil库可以方便地获取网络流量数据。以下是一个基本的流量监控实现import psutil import time def monitor_traffic(interval1, threshold1000000): 监控网络流量检测异常 :param interval: 监控间隔(秒) :param threshold: 流量阈值(字节/秒) old_value psutil.net_io_counters().bytes_recv while True: new_value psutil.net_io_counters().bytes_recv traffic (new_value - old_value) / interval if traffic threshold: print(f警告检测到异常流量 {traffic/1024:.2f} KB/s) # 触发防御措施 old_value new_value time.sleep(interval)2.2 基于连接频率的检测方法对于Web应用可以使用Python的socket库来监控连接频率from collections import defaultdict import socket import time class ConnectionMonitor: def __init__(self, threshold50): self.connections defaultdict(int) self.threshold threshold # 每秒最大允许连接数 def monitor(self): server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((0.0.0.0, 8080)) server_socket.listen(5) while True: client_socket, addr server_socket.accept() ip addr[0] self.connections[ip] 1 if self.connections[ip] self.threshold: print(f检测到可疑IP: {ip}, 连接数: {self.connections[ip]}) # 触发防御措施 # 定期清理计数器 if time.time() % 60 0: self.connections.clear()3. Python实现Dos防御机制3.1 基于IP的限制策略当检测到可疑IP时可以采取以下防御措施import iptc class IPTablesDefender: def __init__(self): self.chain iptc.Chain(iptc.Table(iptc.Table.FILTER), INPUT) def block_ip(self, ip): rule iptc.Rule() rule.src ip rule.target iptc.Target(rule, DROP) self.chain.insert_rule(rule) print(f已屏蔽IP: {ip})3.2 请求速率限制实现使用Python的令牌桶算法实现请求速率限制import time class RateLimiter: def __init__(self, capacity, fill_rate): self.capacity capacity # 桶容量 self.tokens capacity # 当前令牌数 self.fill_rate fill_rate # 每秒填充速率 self.last_time time.time() def consume(self, tokens1): now time.time() elapsed now - self.last_time self.last_time now # 计算新增令牌 self.tokens min(self.capacity, self.tokens elapsed * self.fill_rate) if self.tokens tokens: self.tokens - tokens return True return False4. 完整Dos防御系统实现4.1 系统架构设计一个完整的Dos防御系统通常包含以下组件流量采集模块异常检测模块防御执行模块日志记录模块4.2 核心代码实现import psutil import socket import time from collections import defaultdict import logging class DosDefenseSystem: def __init__(self): self.traffic_threshold 1000000 # 1MB/s self.conn_threshold 50 # 50 connections/s self.ip_connections defaultdict(int) self.blocked_ips set() # 配置日志 logging.basicConfig( filenamedos_defense.log, levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s ) def start_monitoring(self): # 启动流量监控线程 # 启动连接监控线程 # 启动防御执行线程 pass def check_traffic(self): old_value psutil.net_io_counters().bytes_recv while True: time.sleep(1) new_value psutil.net_io_counters().bytes_recv traffic new_value - old_value old_value new_value if traffic self.traffic_threshold: logging.warning(f高流量警报: {traffic/1024:.2f} KB/s) self.trigger_defense(traffic, traffic) def monitor_connections(self): server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((0.0.0.0, 8080)) server_socket.listen(5) while True: client_socket, addr server_socket.accept() ip addr[0] if ip in self.blocked_ips: client_socket.close() continue self.ip_connections[ip] 1 if self.ip_connections[ip] self.conn_threshold: logging.warning(f可疑IP: {ip}, 连接数: {self.ip_connections[ip]}) self.blocked_ips.add(ip) self.trigger_defense(ip, ip) # 定期清理计数器 if time.time() % 60 0: self.ip_connections.clear() def trigger_defense(self, attack_type, value): if attack_type ip: # 执行IP屏蔽 logging.info(f屏蔽IP: {value}) elif attack_type traffic: # 执行流量限制 logging.info(f触发流量限制, 当前流量: {value})5. 实际部署与优化建议5.1 系统部署注意事项性能考虑防御系统本身不应该成为性能瓶颈误报处理设置合理的阈值避免误判正常流量日志分析定期分析日志优化防御策略多层防御结合网络层和应用层防御5.2 高级防御策略对于更复杂的Dos攻击可以考虑以下增强措施行为分析分析请求内容而不仅是频率挑战响应对可疑请求返回验证码CDN集成利用CDN分散流量云服务集成使用云服务商的Dos防护在Python中实现这些高级功能通常需要结合其他工具和服务例如# 示例使用验证码挑战 from captcha.image import ImageCaptcha def generate_challenge(): image ImageCaptcha() text .join(random.choices(ABCDEFGHJKLMNPQRSTUVWXYZ23456789, k6)) data image.generate(text) return text, data我在实际部署这类系统时发现单纯的频率限制往往不够结合请求内容分析和用户行为模式识别能显著提高防御效果。例如可以分析HTTP头的完整性、请求间隔的规律性等特征。

相关推荐

逆向拆解:从结果倒推,把黑盒变白盒的元技能
逆向拆解:从结果倒推,把黑盒变白盒的元技能

第一次认真琢磨reverse-skill这个概念,是在我接手一个没有文档、没有交接的老项目的时候。几万行还在跑的代码,业务方催着改需求,同事一脸茫然,说实话当时心里是慌的。后来我用了三天时间,硬生生把系统从“黑盒”拆成了… · 2026/11/3 22:43:25

Selenium自动化测试:电子忏悔室与赎罪券生成实践
Selenium自动化测试:电子忏悔室与赎罪券生成实践

1. 项目背景与核心思路 这个看似荒诞的项目标题"用Selenium操控教堂:电子忏悔室自动生成赎罪券"实际上是一个极具创意的技术实验。它巧妙地将自动化测试工具Selenium的应用场景扩展到了宗教领域,构建了一个能够模拟人类操作、自动完成电子忏悔… · 2026/11/3 22:42:25

多人同时编辑Excel:共享地址、权限与协作规范实战
多人同时编辑Excel:共享地址、权限与协作规范实战

1. 多人同时编辑Excel,真正的拦路虎不在软件功能每到季度末、项目节点、盘点周期,办公室里最容易出现的一幕就是:五个人分头填同一张表,收上来五个附件,文件名依次是"汇总表.xlsx""汇总表-修改.xlsx&qu… · 2026/11/3 22:42:25

Java抢票程序拆解:GOHOME自动购票工具的实现与边界
Java抢票程序拆解:GOHOME自动购票工具的实现与边界

简介:这份资源面向具备一定 Java 基础的开发者,聚焦春运等购票高峰期的 12306 抢票场景,提供一套可本地运行的自动化购票程序思路与配套说明。程序覆盖自动登录与验证码定位、失败自动重试、线路信息记忆与自动刷新查询、指定车次优先预订、动… · 2026/11/3 23:27:52

CAD夹点编辑技巧:提升设计效率的5种核心模式
CAD夹点编辑技巧:提升设计效率的5种核心模式

1. 项目概述CAD设计中的夹点编辑是一项基础但极其重要的操作技能,它就像设计师手中的"魔术棒",能够快速完成图形的移动、旋转、缩放等常见操作。2026年3月18日的这次学习记录,主要针对第三张练习图的夹点编辑应用进行了系统梳理。不… · 2026/11/3 23:27:52

DeepSeek推理模型提示语实战:从选型到模板固化
DeepSeek推理模型提示语实战:从选型到模板固化

简介:这份PDF资料源自清华大学新闻与传播学院新媒体研究中心团队,面向希望系统掌握DeepSeek的开发者、内容创作者与AI初学者,帮助读者从基础认知走向实际应用。内容围绕DeepSeek-R1开源推理模型展开,涵盖文本生成、语义理解、代码… · 2026/11/3 23:27:52

反正切函数求导全解析:从公式推导到高频错误清单
反正切函数求导全解析:从公式推导到高频错误清单

批改这份习题的时候,一道 (y\arctan(x^2)) 的求导题,五十份卷子里冒出了六种不同的错误答案:有人分母写成了 (1x^2),有人把分子上的 (2x) 整个漏掉,还有人把 arctan 和 arcsin 的公式记串了,写成了带根号的… · 2026/11/3 23:27:52

科研离线项目管理工具的设计与实战应用
科研离线项目管理工具的设计与实战应用

1. 项目概述:一款专为科研场景设计的离线项目管理工具作为一名长期奋战在科研一线的技术老兵,我深知项目管理对研究团队的重要性。今天要介绍的这款绿色版项目管理工具,完美解决了科研人员在无网络环境下的项目管理痛点。它采用经典的C/S架构… · 2026/11/3 23:27:52

智慧物流园区数字化转型解决方案与技术架构
智慧物流园区数字化转型解决方案与技术架构

1. 智慧物流园区解决方案概述69页的智慧物流园区整体解决方案PPT,是一套针对现代物流园区数字化转型的完整技术架构和实施路径。这类方案通常由物流科技公司或系统集成商制作,用于向物流地产开发商、园区运营方展示如何通过物联网、大数据等技术提升园区… · 2026/11/3 23:26:51

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码