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

使用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仪表板。…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

Go语言多线程问题

打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...