OpenSource - 开源WAF_SamWaf

文章目录

  • Pre
  • SafeLine VS SamWaf
  • 开发初衷
  • 软件介绍
    • 架构
    • 界面
    • 主要功能
  • 使用说明
    • 下载最新版本
    • 快速启动
      • Windows
      • Linux
      • Docker
    • 启动访问
    • 升级指南
      • 自动升级
      • 手动升级
    • 在线文档
  • 代码相关
    • 代码托管
    • 介绍和编译
    • 已测试支持的平台
    • 测试效果
  • 安全策略
  • 问题反馈
  • 许可证书
  • 贡献代码

在这里插入图片描述


Pre

Nginx - 集成ModSecurity实现WAF功能 用ModSecurity,能折腾成啥样都得靠自己 .


SafeLine VS SamWaf

长亭的号称开源和免费WAF:SafeLine,中文名叫"雷池" . SafeLine(雷池)虽然它声称是开源的,但实际上并未提供源代码

SamWaf 最近开源了代码,也为开发者提供了一条多的选择


开发初衷

在这里插入图片描述

  • 【轻量】早期在使用过一些产品基于 nginx,apache,iis 做插件进行防护,但是插件形式耦合度太高了。
  • 【私有化】 后期基本上都是有云防护,而私有化部署针对一般的中大企业能承受,普通小企业公司,小工作室费用有点太高了。
  • 【隐私加密】 网站防护过程中不希望本地数据上云做处理,想做一款涉及的本地信息进行加密,管理端的网络通信进行加密。
  • 【DIY】在这么多年网站维护开发过程中有些特定的功能想加入自己的想法,无法实现。
  • 【感知】如果站长没有用过类似的 waf ,单纯从自己的日志或者是 nginx 、apache 、IIS 等查看信息不方便,不知道到底网站有谁在访问,都请求了什么?

总之,在网站或 API 防护上做一款趁手的兵器,来抵御一些异常情况,确保网站和应用的正常运行。

软件介绍

SamWaf网站防火墙是一款适用于小公司、工作室和个人网站的开源轻量级网站防火墙,完全私有化部署,数据加密且仅保存本地,一键启动,支持Linux,Windows 64位

架构

在这里插入图片描述

界面

在这里插入图片描述

添加主机

在这里插入图片描述

攻击日志

在这里插入图片描述

CC

在这里插入图片描述

IP黑名单

在这里插入图片描述

IP白名单

在这里插入图片描述

LDP

在这里插入图片描述

添加规则脚本日志

在这里插入图片描述

选择日志

在这里插入图片描述

日志详情

在这里插入图片描述

手动规则

在这里插入图片描述

URL黑名单

在这里插入图片描述

URL白名单

在这里插入图片描述


主要功能

  • 代码完全开源
  • 支持私有化部署
  • 轻量化不依赖三方服务
  • 完全独立引擎,防护功能不依赖IIS,Nginx
  • 自定义防护规则,支持脚本和界面编辑
  • 支持白名单访问
  • 支持IP黑名单
  • 支持URL白名单
  • 支持限制URL访问
  • 支持指定界面数据隐私输出
  • 支持CC频率访问
  • 支持全局一键配置
  • 支持分网站单独防护策略
  • 日志加密保存
  • 通讯日志加密
  • 信息脱敏保存

使用说明

强烈建议您在测试环境测试充分在上生产,如遇到问题请及时反馈

下载最新版本

gitee: https://gitee.com/samwaf/SamWaf/releases

github: https://github.com/samwafgo/SamWaf/releases

快速启动

Windows

  • 直接启动
SamWaf64.exe
  • 服务形式
//安装
SamWaf64.exe install //启动
SamWaf64.exe start//停止
SamWaf64.exe stop//卸载
SamWaf64.exe uninstall

Linux

  • 直接启动
./SamWafLinux64
  • 服务形式
//安装
./SamWafLinux64 install //启动
./SamWafLinux64 start//停止
./SamWafLinux64 stop//卸载
./SamWafLinux64 uninstall

Docker

docker run -d --name=samwaf-instance \-p 26666:26666 \-p 80:80 \-p 443:443 \-v /path/to/your/conf:/app/conf \-v /path/to/your/data:/app/data \-v /path/to/your/logs:/app/logs \samwaf/samwaf

更多docker启动上面的解释 https://hub.docker.com/r/samwaf/samwaf

启动访问

http://127.0.0.1:26666

默认帐号:admin 默认密码:admin868 (注意首次进入请把默认密码改掉)

升级指南

注意:升级过程会终止服务,请在闲时进行升级。

自动升级

如有新版本页面会弹出升级框进行确认即可发起升级,升级完毕后,页面会自动刷新。

手动升级

  • 对于直接启动方式

关闭应用,下载最新程序替换,再手工启动就可以了。

  • 对于以服务形式
1.先暂停服务windows: SamWaf64.exe stoplinux: ./SamWafLinux64 stop2.替换最新应用文件3.启动
windows: SamWaf64.exe start
linux: ./SamWafLinux64 start

PS:windows服务形式升级时候貌似会触发360、火绒规则导致无法正常替换新文件。此时可以手工替换。
熟悉这方面的朋友可以帮看下正确方式怎么处理。

在线文档

在线文档

代码相关

代码托管

  • gitee
    https://gitee.com/samwaf/SamWaf
  • github
    https://github.com/samwafgo/SamWaf

介绍和编译

How to compile
编译说明

已测试支持的平台

已测试支持的平台

测试效果

测试效果

安全策略

安全策略

问题反馈

当前 SamWaf 还正在不停迭代,欢迎大家反馈问题、提出意见

  • gitee issues
  • github issues
  • 邮件反馈:samwafgo@gmail.com

许可证书

SamWaf 采用 Apache 2.0 license. 详细见 LICENSE .

第三方软件使用声明,见ThirdLicense

贡献代码

感谢以下小伙伴对本仓库的贡献!


在这里插入图片描述

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

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

相关文章

单调队列应用介绍

单调队列应用介绍 定义应用场景实现模板具体示例滑动窗口最大值问题描述问题分析代码实现带限制的子序列和问题描述问题分析代码实现跳跃游戏问题描述问题分析代码实现定义 队列(Queue)是另一种操作受限的线性表,只允许元素从队列的一端进,另一端出,具有先进先出(FIFO)的特…

关于HTML 案例_个人简历展示01

案例效果展示 代码 <!DOCTYPE html> <lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个人简历信息</title> </he…

MySQL 中的 LAST_INSERT_ID()函数详解

在 MySQL 数据库中&#xff0c;LAST_INSERT_ID()是一个非常有用的函数。它可以帮助我们获取最近一次插入操作所生成的自增 ID 值。本文将详细解释 MySQL 中的LAST_INSERT_ID()函数及其用途。 一、函数介绍 LAST_INSERT_ID()是 MySQL 中的一个内置函数&#xff0c;它返回最近一…

通过栈实现字符串中查找是否有指定字符串的存在

题目示例&#xff1a; 分析 由与没有给出字符串的长度&#xff0c;所以只能通过getline一次性处理&#xff0c;而在输入后恰好能倒序处理字符串&#xff0c;以标点符号为分界点&#xff0c;将数字当成字符放到栈里&#xff0c;遇到下一个标点符号时执行查找操作&#xff0c;…

关于Mybatis框架操作时注意的细节,常见的错误!(博主亲生体会的细节!)

目录 1.在对DB进行CRUD时&#xff0c;除了查&#xff0c;其余的操作都要进行事务的提交否则不成功。 2.用sqlSession原生方法时&#xff0c;第一个参数方法名&#xff0c;是xml文件中定义的id名&#xff0c;底层找的是你这个接口所定义的方法名。 3.以包为单位引入映射文件 …

Vue项目开发注意事项

事项一&#xff1a;项目代码放在本地怎么运行起来 1、首先确定项目对应的node和npm版本 node下载地址 Index of /dist/https://nodejs.org/dist/ node 与 npm版本对应关系 Node.js — Node.js Releases 2、node卸载的时候&#xff0c;会自动把对应的npm卸载掉 情况1&…

无环SLAM系统集成后端回环检测模块(loop):SC-A-LOAM以及FAST_LIO_SLAM

最近在研究SLAM目标检测相关知识&#xff0c;看到一篇论文&#xff0c;集成了SC-A-LOAM作为后端回环检测模块&#xff0c;在学习了论文相关内容后决定看一下代码知识&#xff0c;随后将其移植&#xff0c;学习过程中发现我找的论文已经集成了回环检测模块&#xff0c;但是我的另…

【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化

【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化 阿里 MySQL 命名规范MySQL8 DDL的原子化 阿里 MySQL 命名规范 【强制】表名、字段名必须使用小写字母或数字&#xff0c;禁止出现数字开头&#xff0c;禁止两个下划线中间只出现数字。数据库字段名的修改代价…

Java 计算器项目

更多有趣请关注公众号 计算器项目 代码仓库&#xff1a;https://gitee.com/wengxiulin/vs_code 项目图片 项目简介 这是一个用 Java 编写的简单计算器应用程序&#xff0c;具有基本的数学运算功能。该计算器支持加、减、乘、除等运算&#xff0c;并提供用户友好的图形界面…

【STM32】TCP/IP通信协议(2)--LwIP内存管理

五、LWIP内存管理 1.什么是内存管理&#xff1f; &#xff08;1&#xff09;内存管理&#xff0c;是指软件运行时对计算机内存资源的分配的使用的技术&#xff0c;其主要目的是如何高效、快速的分配&#xff0c;并且在适当的时候释放和回收内存资源&#xff08;就比如C语言当…

使用微服务Spring Cloud集成Kafka实现异步通信(消费者)

1、本文架构 本文目标是使用微服务Spring Cloud集成Kafka实现异步通信。其中Kafka Server部署在Ubuntu虚拟机上&#xff0c;微服务部署在Windows 11系统上&#xff0c;Kafka Producer微服务和Kafka Consumer微服务分别注册到Eureka注册中心。Kafka Producer和Kafka Consumer之…

Mybatis框架梳理

Mybatis框架梳理 前言1.ORM2.模块划分2.1 ORM的实现2.2 SQL的映射2.3 插件机制2.4 缓存机制2.5 其他 3. 愿景 前言 如果让我聊一聊mybatis&#xff0c;我该怎么说呢&#xff1f;开发中时时刻刻都在用它&#xff0c;此时此刻&#xff0c;脑海中却只浮现ORM框架这几个字&#xff…

[每周一更]-(第117期):硬盘分区表类型:MBR和GPT区别

文章目录 1. **支持的磁盘容量**2. **分区数量**3. **引导方式**4. **冗余和数据恢复**5. **兼容性**6. **安全性**7. **操作系统支持**8. 对比 国庆假期前补一篇 在一次扫描机械硬盘故障的问题&#xff0c;发现我本机SSD和机械硬盘的分类型不一样&#xff0c;分别是GPT和MBR&a…

Vue3轻松实现前端打印功能

文章目录 1.前言2.安装配置2.1 下载安装2.2 main.js 全局配置3.综合案例3.1 设置打印区域3.2 绑定打印事件3.3 完整代码4.避坑4.1 打印表格无边框4.2 单选框复选框打印不选中4.3 去除页脚页眉4.4 打印內容不自动换行1.前言 vue3 前端打印功能主要通过插件来实现。 市面上常用的…

C语言 | Leetcode C语言题解之第450题删除二叉搜索树中的节点

题目&#xff1a; 题解&#xff1a; struct TreeNode* deleteNode(struct TreeNode* root, int key){struct TreeNode *cur root, *curParent NULL;while (cur && cur->val ! key) {curParent cur;if (cur->val > key) {cur cur->left;} else {cur c…

telnet发送邮件教程:安全配置与操作指南?

telnet发送邮件的详细步骤&#xff1f;怎么用telnet命令发邮件&#xff1f; 尽管现代邮件客户端和服务器提供了丰富的功能和安全性保障&#xff0c;但在某些特定场景下&#xff0c;了解如何使用telnet发送邮件仍然是一项有价值的技能。AokSend将详细介绍如何安全配置和操作tel…

github/git密钥配置与使用

零、前言 因为要在ubuntu上做点东西&#xff0c;发现git clone 的时候必须输账户密码&#xff0c;后来发现密码是token&#xff0c;但是token一大串太烦了&#xff0c;忙了一天发现可以通过配置 公钥 来 替代 http 的 部署方式。 一、生成 ssh 密钥对 我们先测试下能不能 连接…

C语言复习概要(一)

本文 C语言入门详解&#xff1a;从基础概念到分支与循环1. C语言常见概念1.1 程序的基本结构1.2 变量作用域和存储类1.3 输入输出1.4 编译与运行 2. C语言中的数据类型和变量2.1 基本数据类型2.2 变量的声明与初始化2.3 常量与枚举 3. C语言的分支结构3.1 if语句3.2 if-else语句…

0108 Spring Boot启动过程

Spring Boot 的启动过程可以分为以下几个关键步骤&#xff1a; 1. SpringApplication 初始化 Spring Boot 应用的启动是通过调用 SpringApplication.run() 方法完成的。在这个过程中&#xff0c;Spring Boot 会通过 SpringApplication 类对应用进行初始化&#xff0c;包括设置…

国庆节快乐前端(HTML+CSS+JavaScript+BootStrap.min.css)

一、效果展示 二、制作缘由 最近&#xff0c;到了国庆节&#xff0c;自己呆在学校当守校人&#xff0c;太无聊了&#xff0c;顺便做一个小demo帮祖国目前庆生&#xff01;&#xff01;&#xff01; 三、项目目录结构 四、准备工作 (1)新建好对应的文件目录 为了方便&#xff…