使用Web控制端和轻量级客户端构建的开放Web应用防火墙(OpenWAF)
目录
- 1. 简介
- 2. 项目结构
- 3. Web控制端
- 3.1. 功能概述
- 3.2. 审计(攻击)日志查看
- 3.3. 多个WAF的集中监控和操作
- 3.4. 使用socket进行封装
- 3.5. 日志的高效存储和检索(Redis)
- 4. 轻量级客户端
- 4.1. 功能概述
- 4.2. 对Web程序的防护
- 4.3. 网络异常后的自动重连
- 4.4. 执行服务端下发的任务
- 5. 技术实现
- 5.1. Web控制端的技术选型和框架
- 5.2. 轻量级客户端的技术选型和框架
- 5.3. socket封装的具体实现
- 5.4. Redis在日志存储中的应用
- 6. 项目亮点
- 7. 总结
- 8. 示例
- 8.1. 主页面
- 8.2. 查看配置文件
- 8.3. 运行情况
- 8.4. 配置规则
- 8.5. 配置返回头
- 8.6. 日志测试
1. 简介
随着Web应用的发展,安全问题日益突出。为了有效防护Web应用,Web应用防火墙(WAF)应运而生。本项目旨在构建一个开放的Web应用防火墙(OpenWAF),通过Web控制端和轻量级客户端的结合,实现对Web应用的全面防护和管理。
2. 项目结构
本项目由两个主要部分组成:
- Web控制端:用于集中管理和监控多个WAF实例,并提供各种操作功能。
- 轻量级客户端:部署在需要保护的计算机上,提供Web防护功能,并执行来自控制端的指令。
3. Web控制端
3.1. 功能概述
Web控制端是整个系统的核心,它负责集中管理和监控所有的WAF实例,并提供用户友好的操作界面。
3.2. 审计(攻击)日志查看
用户可以通过Web控制端查看所有WAF实例的审计日志,了解所有的攻击行为和防护情况。
3.3. 多个WAF的集中监控和操作
Web控制端提供了丰富的操作功能,包括:
- 查看配置文件:用户可以查看每个WAF实例的配置文件。
- 心跳监测:实时监控每个WAF实例的状态,确保其正常运行。
- 添加备注和删除:用户可以为每个WAF实例添加备注或删除不需要的实例。
- 主动下线:在必要时,用户可以主动将某个WAF实例下线。
- 分发自定义规则:用户可以分发自定义的安全规则到各个WAF实例,并启动这些规则。
- 启动和停止WAF:用户可以远程启动或停止每个WAF实例。
- 自定义WAF返回头内容:用户可以定制WAF返回的HTTP头信息,以满足不同的需求。
3.4. 使用socket进行封装
所有操作均通过socket进行封装,确保数据传输的高效和安全。
3.5. 日志的高效存储和检索(Redis)
系统使用Redis进行日志的存储和检索,极大地提高了性能和响应速度。
4. 轻量级客户端
4.1. 功能概述
轻量级客户端部署在需要保护的计算机上,提供Web防护功能,并执行来自控制端的指令。
4.2. 对Web程序的防护
客户端能够实时监控和防护Web程序,阻止各种攻击行为。
4.3. 网络异常后的自动重连
当网络异常时,客户端能够自动重试连接,确保防护功能的持续有效。
4.4. 执行服务端下发的任务
客户端能够执行来自控制端下发的各种任务,包括更新规则、重启服务等。
5. 技术实现
5.1. Web控制端的技术选型和框架
Web控制端采用现代Web技术构建,包括前端的JavaScript和后端的Golang,确保系统的高性能和易维护性。
5.2. 轻量级客户端的技术选型和框架
轻量级客户端采用Golang构建,保证了其轻量级和高效性。
5.3. socket封装的具体实现
通过Golang的net包实现socket封装,确保数据传输的安全性和高效性。
5.4. Redis在日志存储中的应用
利用Redis的高性能和高并发性,实现日志的快速存储和检索,满足大规模数据处理的需求。
6. 项目亮点
- 高效的日志存储和检索机制:使用Redis实现高效的日志存储和检索,显著提高系统性能。
- 灵活的WAF操作和配置管理:提供丰富的操作功能,方便用户管理和配置WAF实例。
- 轻量级客户端的可靠性和自动化:客户端具备自动重连和执行任务的能力,确保防护功能的稳定性和持续性。
7. 总结
本项目通过Web控制端和轻量级客户端的结合,实现了对Web应用的全面防护和管理。系统采用现代技术,具备高效、灵活、可靠的特点,为Web应用的安全提供了有力保障。未来,将继续优化系统性能,增加更多功能,提升用户体验。
8. 示例
8.1. 主页面
8.2. 查看配置文件
8.3. 运行情况
8.4. 配置规则
8.5. 配置返回头
8.6. 日志测试
相关文章:

使用Web控制端和轻量级客户端构建的开放Web应用防火墙(OpenWAF)
目录 1. 简介2. 项目结构3. Web控制端3.1. 功能概述3.2. 审计(攻击)日志查看3.3. 多个WAF的集中监控和操作3.4. 使用socket进行封装3.5. 日志的高效存储和检索(Redis) 4. 轻量级客户端4.1. 功能概述4.2. 对Web程序的防护4.3. 网络…...
设计模式在FileBrowser中的几个应用
设计模式是代码重构的最终目标,在程序设计中有效的运用这项技术,可以大大提高代码的可读性和可维护性。使整个程序设计结构趋向精致完美。在我维护的FileBrowser模块中可以针对以下方面 应用相应的模式。 1. 使用策略模式来处理文件夹扫描操作 作为网…...

【JavaEE进阶】——Spring AOP
目录 🚩Spring AOP概述 🚩Spring AOP快速⼊⻔ 🎓引入AOP依赖 🎓编写AOP程序 🚩Spring AOP 详解 🎓Spring AOP核⼼概念 🎓通知类型 🎓PointCut 🎓切⾯优先级 Ord…...
Python - conda使用大全
如何使用Conda? 环境 创建环境 conda create -n spider_env python3.10.11查看环境 conda env listconda info -e激活环境 conda activate spider_env退出环境 conda deactivate删除环境 conda env remove -n spider_env包 导出包 说明:导出当前虚拟…...
ASPICE在汽车软件开发中的作用
ASPICE是一个专门为汽车软件开发过程而设计的评估和改进框架。它基于ISO/IEC 15504标准,为汽车供应商提供了一个评估和改进其软件开发流程的方法。ASPICE的目标是确保软件开发过程的一致性和可预测性,从而提高软件的质量和可靠性。 ASPICE的实施对汽车软…...

亚马逊云科技 re:Inforce 2024中国站大会
亚马逊云科技 re:Inforce 2024中国站大会 - 生成式AI时代的全面安全,将于7月25日本周四在北京富力万丽酒店揭幕...
Lottie:动态动画的魔法棒
文章目录 引言官网链接Lottie 的原理基础使用1. 导出动画2. 引入 Lottie 库3. 加载和播放动画 高级使用1. 动画控制2. 交互性3. 自定义动画例子:交互式按钮动画 优缺点优点缺点 结语 引言 Lottie 是 Airbnb 开源的一个动画库,它允许设计师在 Adobe Afte…...
IPython使用技巧整理
IPython 是一个增强的 Python 交互式 shell,它提供了许多便利的功能,比如自动补全、魔术命令、对象内省等。以下是 IPython 的一些使用技巧和示例,结合您提供的列表数据,我将给出一些相关的使用示例。 1. 自动补全(Tab…...

C#数组复习
一、一维数组 using System.Collections; using System.Collections.Generic; using UnityEngine;public class ShuZu : MonoBehaviour {#region 知识点一 基本概念//数组是存储一组相同类型数据的集合//数组分为 一维、二维、交错数组//一般情况 一维数组 就简称为数组#en…...
无人机之在农业上的用途
随着无人机技术的发展,农业现代化也迎来了崭新局面,田间随处可见无人机矫健的身影。当农业遇上科技,变革正悄然进行。农业无人机主要应用于农业、种植业、林业等行业。在使用过程中,其功能和作用并不单一,一般用于种植…...
opengaussdb在oepnEuler上安装
安装前提: 软件环境:openEuler 20.03LTS 个人开发者最低配置2核4G,推荐配置4核8G 数据库版本:openGauss-5.0.2-openEuler-64bit-all.tar.gz 数据库下载地址: https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/In…...

一些和颜色相关网站
1.中国传统色 2.网页颜色选择器 3.渐变色网站 4.多风格色卡生成 5.波浪生成 6.半透明磨砂框 7.色卡组合...
Linux系统编程-文件系统
目录 什么是Linux文件系统 文件系统的职责 存储介质抽象 inode:文件系统的核心 文件分配策略 目录结构 文件系统布局 日志和恢复机制 目录权限 粘滞位(t位): 硬链接和符号链接 硬链接的特点: 创建硬链接: 符号链接的…...

【解决】ubuntu20.04 root用户无法SSH登陆问题
Ubuntu root用户无法登录的问题通常可以通过修改SSH配置文件和系统登录配置来解决。 修改SSH配置文件 sudo vim /etc/ssh/sshd_config 找到 PermitRootLogin 设置,并将其值更改为 yes 以允许root用户通过SSH登录 保存并关闭文件之后,需要重启SSH服务…...

(前缀和) LeetCode 238. 除自身以外数组的乘积
一. 题目描述 原题链接 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&…...

【JVM基础05】——组成-能不能解释一下方法区?
目录 1- 引言:方法区概述1-1 方法区是什么?(What)1-2 为什么用方法区?方法区的作用 (Why) 2- ⭐核心:详解方法区(How)2-1 能不能解释一下方法区?2-2 元空间内存溢出问题2-3 什么是常量池?2-4 运行时常量池 …...

前端:Vue学习-3
前端:Vue学习-3 1. 自定义指令2. 插槽2.1 插槽 - 后备内容(默认值)2.2 插槽 - 具名插槽2.3 插槽 - 作用域插槽 3. Vue - 路由3.1 路由模块封装3.2 声明式导航 router-link 高亮3.3 自定义匹配的类名3.4 声明式导肮 - 跳转传参3.5 Vue路由 - 重…...

npm 安装报错(已解决)+ 运行 “wue-cli-service”不是内部或外部命令,也不是可运行的程序(已解决)
首先先说一下我这个项目是3年前的一个项目了,中间也是经过了多个人的修改惨咋了布置多少个人的思想,这这道我手里直接npm都安装不上,在网上也查询了多种方法,终于是找到问题所在了 问题1: 先是npm i 报错在下面图片&…...

江苏科技大学24计算机考研数据速览,有专硕复试线大幅下降67分!
江苏科技大学(Jiangsu University of Science and Technology),坐落在江苏省镇江市,是江苏省重点建设高校,江苏省人民政府与中国船舶集团有限公司共建高校,国家国防科技工业局与江苏省人民政府共建高校 &am…...

20分钟上手新版Skywalking 9.x APM监控系统
Skywalking https://skywalking.apache.org/ Skywalking是专为微服务、云原生和基于容器的(Kubernetes)架构设计的分布式系统性能监控工具。 Skywalking关键特性 ● 分布式跟踪 ○ 端到端分布式跟踪。服务拓扑分析、以服务为中心的可观察性和API仪表板。…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...