当前位置: 首页 > news >正文

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 集成、日志分析、脚本等)即将上线!

前端写的很屁,勿喷。

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

相关文章:

  • [reinforcement learning] 是什么 | 应用场景 | Andrew Barto and Richard Sutton
  • ros2_01
  • Qt QML - qmldir使用方法详解
  • Leetcode——137 260找出只出现一次的数
  • 【密码学——基础理论与应用】李子臣编著 第六章 祖冲之序列密码 课后习题
  • Trae 下安装 Pylance 插件(仅作为实验,版权由微软所有)
  • 【lerobot】3-开源SO-100 主从臂的舵机位置校正、遥控操作(ubuntu系统)
  • 基于图扩散小波的连接组分析:定位结构-功能映射中的扩散源
  • docker部署GPUStack【Nvidia版本】
  • 【Hot100】239. 滑动窗口最大值
  • Express中间件(Middleware)详解:从零开始掌握(4)
  • 高级java每日一道面试题-2025年4月07日-微服务篇[Nacos篇]-如何监控Nacos的运行状态?
  • 深入探究AI编程能力:ChatGPT及其大规模模型的实现原理
  • 纯PHP编写的聊天室无需数据库,上传虚拟空间就可使用
  • 【PostgreSQL教程】PostgreSQL 特别篇之 语言接口连接PHP
  • [LeetCode 45] 跳跃游戏2 (Ⅱ)
  • Python高级爬虫之JS逆向+安卓逆向1.4节:数据运算
  • Solidity私有函数和私有变量区别,私有变量可以被访问吗
  • 在轨道交通控制系统中如何实现μs级任务同步
  • KiCad 9.0:如何在 PCB 上暴露铜皮(开窗)
  • 白宫慌了!将设工作组紧急处理对中国加征关税危机
  • 由“环滁皆山”到“环滁皆景”,滁州如何勾勒“文旅复兴”
  • 2025“上海之夏”向全球邀约,首批城市定制活动集中亮相
  • 工作坊|早期左翼文学的多重张力与历史回响
  • 巡视杭州市工作动员会召开,市长姚高员表态
  • 许志强评《伐木》|伯恩哈德的文人共和国