SecProxy - 自动化安全协同平台

本人为甲方安全人员,从事甲方工作近6年;针对在甲方平时安全工作的一些重复、复杂、难点的工作,思考如何通过AI、脚本、或者工具实现智能且自动化,于是花平时空闲时间准备将这些能力全部集中到一个平台,于是有了这个东西——SecProxy-安全自动化协同平台

项目概述

SecProxy 是专为甲方安全人员设计的自动化安全协同平台,通过智能化、自动化的安全运营能力降低人工成本与资源消耗,提升安全响应效率。核心功能围绕阿里云 WAF 3.0 深度集成,实现拦截数据可视化、策略自动化管理及安全趋势分析。
 

技术栈

前端

  • 语言/框架:Python(数据处理)、HTML/CSS(页面渲染)
  • 核心技术:响应式布局、网格系统、AJAX 数据交互
  • 架构设计:清晰分层的页面结构,优化用户体验与功能扩展性

后端

  • 语言/框架:Python、Flask(Web 框架)、MySQL(数据库)
  • 核心功能:数据存储与处理、API 接口服务、安全策略逻辑实现
  • 第三方库:Flask-SQLAlchemy(数据库 ORM)、requests(网络请求)

架构设计

前端架构

  • Header:固定顶部,展示平台名称与核心价值
  • Sidebar:左侧固定宽度(1/5),包含功能菜单(如白名单管理、钉钉告警等)
  • Content Area:主内容区根据菜单点击动态加载配置页面或数据报表,核心功能区采用网格布局展示卡片式模块(如攻击趋势、策略管理)
  • Footer:底部单行版权信息

技术实现

  • • 使用原生 HTML/CSS 实现响应式布局,适配多终端
  • • 通过 AJAX 与后端 API 交互,动态渲染数据表格、图表(预留 ECharts 集成接口)

后端架构

API 设计

接口路径

功能描述

方法

响应格式

/api/waf/blocked-ips

获取前一天 WAF 拦截 IP 列表

GET

JSON

/api/whitelist/add

一键添加白名单规则

POST

{"status": "success"}

/api/blacklist/remove

一键解封 IP

POST

{"status": "success"}

/api/attack-trend

获取 IP 攻击趋势数据

GET

JSON 数组

数据库模型(MySQL)

IP 攻击趋势表 (attack_trend)

字段名

类型

描述

id

INT(11)

自增主键

timestamp

DATETIME

攻击时间

ip

VARCHAR(45)

攻击 IP 地址

attack_count

INT(11)

攻击次数

attack_ratio

DECIMAL(5,2)

攻击占比(百分比)

核心功能

阿里云 WAF 3.0 集成

  • 拦截数据可视化
    实时展示前一天 WAF 拦截 IP 详情(数量、分布、高频攻击源),支持按时间范围筛选,生成趋势折线图/柱状图。
  • 自动化策略管理
    • 白名单:通过模板快速添加信任 IP(支持单个/批量导入),数据格式示例:
[  {  "name": "test1",  "tags": ["waf"],  "status": 1,  "origin": "custom",  "conditions": [{"key": "IP", "opValue": "contain", "values": "14.22.5.27"}]  }  
]
    • 黑名单:一键封禁恶意 IP,支持多维度条件(如来源 IP、请求频率),数据格式示例:
[  {  "action": "block",  "id": 20705051,  "name": "IpBlackList",  "remoteAddr": ["116.238.81.166", "183.223.240.178"]  }  
]
  • 一键解封:快速移除封禁策略,支持批量操作与操作日志审计。
  • 智能告警:通过钉钉 Webhook 自动推送拦截事件到指定群组,包含攻击 IP、时间、威胁等级等信息。
  • 安全趋势分析:基于历史数据生成 IP 攻击趋势报告,识别高频攻击时段与恶意 IP 集群,支持导出 CSV/Excel 格式,便于二次分析。

目录结构

aliwaf_sec/  
├── app.py             # Flask 主程序,后端服务入口  
├── config.py          # 配置文件(数据库连接、钉钉 Webhook 地址等)  
├── extensions.py      # 第三方库初始化(如数据库实例 db)  
├── models.py          # 数据库模型定义(表结构)  
├── routes/            # 路由模块(按功能划分)  
│   ├── __init__.py    # 蓝图初始化  
│   ├── waf.py         # WAF 相关 API 路由  
│   ├── user.py        # 用户管理 API 路由  
│   └── report.py      # 报告生成 API 路由  
├── requirements.txt   # 依赖库清单  
└── static/            # 前端静态资源(待扩展,当前暂未启用)  ├── css/  ├── js/  └── images/

部署指南

环境准备

安装 Python 3.8+ 及 pip:

示例(Ubuntu/Debian)

sudo apt-get install python3.8 python3-pip

安装依赖:

pip install -r requirements.txt

在 .env 中修改参数:
  1. 1. 复制.env-template文件为.env;
  2. 2. 完善里面的参数
执行数据库迁移(使用 Flask-SQLAlchemy):
flask db init  
flask db migrate -m "Initial migration"  
flask db upgrade
启动服务

后端服务:

python app.py

联系我们

私或评论

持续优化中:更多功能(如其他云厂商 WAF 集成、日志分析、脚本等)即将上线!

前端写的很屁,勿喷。

同时寻求更多志同道合的朋友一起完善!

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

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

相关文章

CSI-external-provisioner

main() 这段Go代码是一个CSI(容器存储接口)Provisioner(供应器)的实现,用于在Kubernetes集群中动态提供持久卷。代码涉及多个组件和步骤,下面是对关键部分的解释: 初始化和配置 命令行标志和…

react中通过 EventEmitter 在组件间传递状态

要在 Reply 组件中通过 statusChangeEvent 发送状态值,并在 Select 组件中接收这个状态值 status,你可以按照以下步骤实现: //Event.jsimport EventEmitter from events;export const statusChangeEvent new EventEmitter();// 工单状态切换…

1534. 统计好三元组

1534. 统计好三元组 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 arr &#xff0c;以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件&#xff0c;则认为它是一个 好三元组 。 0 < i < j &l…

如何配置AWS EKS自动扩展组:实现高效弹性伸缩

本文详细讲解如何在AWS EKS中配置节点组&#xff08;Node Group&#xff09;和Pod的自动扩展&#xff0c;优化资源利用率并保障应用高可用。 一、准备工作 工具安装 安装并配置AWS CLI 安装eksctl&#xff08;EKS管理工具&#xff09; 安装kubectl&#xff08;Kubernetes命令…

FPGA_UART

1.UART 概述 &#xff08;通用异步收发传输器&#xff09; 1. 基本定义 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;是一种常见的串行通信协议&#xff0c;用于在设备间通过异步串行通信传输数据。它不依赖独立的时钟信号&#xff0c;而是通过预…

openwrt软路由配置4--文件共享

1.安装samba opkg update opkg install luci-app-samba4安装好之后重启设备&#xff0c;系统界面服务下面会多一个network shares 2.创建磁盘分区并挂载到共享目录 openwrt刚刚安装的时候空间都是很小的&#xff0c;共享目录我是打算用来存放一些电影视频之类的大文件。所以我…

Vue ‘v-model‘ directives require the attribute value which is valid as LHS.

1、问题描述 在项目开发中&#xff0c;如果将el-checkbox组件的v-model指令改为使用三元表达式时&#xff0c;会报出【vue/valid-v-model】的错误&#xff0c;如下图所示&#xff1a; 2、分析原因 根据错误提示&#xff0c;是因为v-model指令始终把Vue实例的data视为数据真实…

基于 Qt 的 BMP 图像数据存取至 SQLite 数据库的实现

基于 Qt 的 BMP 图像数据存取至 SQLite 数据库的实现说明 本项目通过 Qt 框架实现了将 BMP 图像文件以二进制形式存入 SQLite 数据库&#xff0c;并可从数据库中读取还原为 BMP 图像文件的功能&#xff0c;适用于需要图像与结构化数据统一管理的场景。 整个流程分为两个主要部…

嵌入式基础(三)基础外设

嵌入式基础&#xff08;三&#xff09;基础外设 1.什么是UART&#xff1f;与USART有什么区别⭐⭐⭐ (1)什么是UART 通用异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter)&#xff0c;通常称作UART。是一种异步全双工串行通信协议&#xff0c;它将要…

人力资源管理方向论文怎么写?

目录 一、人力资源管理方向论文选题 二、人力资源管理方向论文参考资料 随着经济的蓬勃发展&#xff0c;企业日益意识到引才、善用人才、留住人才对于业务发展的至关重要性。人力资源管理逐渐成为企业管理中的核心职能&#xff0c;其角色日益凸显。近年来&#xff0c;“人力资…

机器学习 从入门到精通 day_05

1. 线性回归 前面介绍了很多分类算法&#xff0c;分类的目标变量是标称型数据&#xff0c;回归是对连续型的数据做出预测。 标称型数据&#xff08;Nominal Data&#xff09;是统计学和数据分析中的一种数据类型&#xff0c;它用于分类或标记不同的类别或组别,数据点之间并没有…

神经子图同构计数

摘要 本文研究了一个新的图学习问题&#xff1a;学习计算子图同构。与其他传统的图学习问题&#xff0c;如节点分类和链接预测不同&#xff0c;子图同构计数是NP完全的&#xff0c;需要更多的全局推理来监督整个图。为了使其可扩展为大规模的图形和模式&#xff0c;我们提出了一…

开源模型应用落地-模型上下文协议(MCP)-第三方MCP Server实战指南(五)

一、前言 在AI技术高速发展的2025年,如何让大语言模型(LLM)更灵活地调用外部工具与数据,成为开发者关注的焦点。​模型上下文协议(MCP)​作为AI与外部资源的“万能接口”,通过标准化交互框架解决了传统集成中的碎片化问题。而第三方MCP Server的引入,进一步降低了开发门…

【2025年认证杯数学中国数学建模网络挑战赛】C题 数据预处理与问题一二求解

目录 【2025年认证杯数学建模挑战赛】C题数据预处理与问题一求解三、数据预处理及分析3.1 数据可视化3.2 滑动窗口相关系数统计与动态置信区间耦合分析模型3.3 耦合关系分析结果 四、问题一代码数据预处理问题一 【2025年认证杯数学建模挑战赛】C题 数据预处理与问题一求解 三…

AI Agent开发大全第二十八课-MCP实现本地命令调用怎么做的?

开篇 MCP很强大,Client端一旦实现了稳定的连接和执行流程后任Server端随意改动都可兼容,这就是热插拨功能。 如果我们仅仅满足于MCP查点网上资料、读点图片即文字型的功能肯定是不能充分发挥MCP的强大之处的,正应了Google以及Anthropic最近的研究报告上说的:不要再在chat…

AJAX原理与XMLHttpRequest

目录 一、XMLHttpRequest使用步骤 基本语法 步骤 1&#xff1a;创建 XHR 对象 步骤 2&#xff1a;调用 open() 方法 步骤 3&#xff1a;监听 loadend 事件 步骤 4&#xff1a;调用 send() 方法 二、完整示例 1. GET 请求&#xff08;带查询参数&#xff09; 2. POST 请…

python写个0~12个月宝宝喂养规划表

下载字体&#xff1a;https://github.com/adobe-fonts/source-han-sans/releases 下载fpdf2 pip uninstall fpdf pip install fpdf2运行代码 ​from fpdf import FPDF from fpdf.enums import XPos, YPos# 创建 PDF 类 class BabyFeedingPDF(FPDF):def header(self):self.s…

集中趋势描述

一、集中趋势的定义与核心目标 集中趋势指数据向其中心值聚集的倾向,反映数据的典型水平或分布中心。其核心是通过统计指标(如众数、中位数、均值)概括数据的核心特征,帮助快速理解数据分布的核心位置。 核心作用:简化复杂数据、指导业务决策(如确定用户平均消费水平)、…

【NLP】Attention机制

1.模型对比 RNN(马尔科夫链式编码) 通过递归计算逐个处理 token,当前编码结果 h t h_t ht​仅依赖前一步的隐藏状态 h t − 1 h_{t-1} ht−1​和当前输入 x t x_t xt​局限性:序列建模需严格串行,无法并行;长距离依赖易丢失(梯度消失/爆炸)例:双向 LSTM 需正向+反向两…

基于OpenCV与PyTorch的智能相册分类器全栈实现教程

引言&#xff1a;为什么需要智能相册分类器&#xff1f; 在数字影像爆炸的时代&#xff0c;每个人的相册都存储着数千张未整理的照片。手动分类不仅耗时&#xff0c;还容易遗漏重要瞬间。本文将手把手教你构建一个基于深度学习的智能相册分类系统&#xff0c;实现&#xff1a;…