{"repo":"YFGo/dinghai_waf","free":true,"listed":false,"github":"https://github.com/YFGo/dinghai_waf","clone":"git clone https://github.com/YFGo/dinghai_waf.git","description":"定海","language":"Go","stars":16,"topics":["coraza-waf","golang","clickhouse","etcd","mysql","redis"],"license":null,"category":"databases-storage","readme_excerpt":"软件介绍: 定海WAF网站防火墙适用于个人开发者,工作室,小公司的开源防火墙.保护网站安全,降低网站漏洞带来的数据泄露等风险.致力于将定海开发为一个更加灵活,性能高效,更加安全的防火墙. 初衷: 1. 便捷: 如果是单纯的从自己的日志或者nginx,apache日志等查看信息不方便 , 不知道自己的网站到底谁在访问,请求了什么. waf在网站或者API防护可以更方便用户查询这些信息,做出及时的处理. 2. DIY: 在开发过程中一些特定的功能加入自己的想法. 技术栈 项目上层服务使用kratos框架进行开发,内核服务使用coraza waf开源引擎,提高内核开发效率. 需要掌握的知识: 1. golang 【置顶】Go语言学习之路/Go语言教程 李文周的博客 2. kratos 简介 Kratos 3. resetful 重新认识RESTful 少个分号 4. grpc Basics tutorial Go gRPC 5. proto3+protobufvalidate Language Guide (proto 3) Protocol Buffers Documentation 6. coraza waf OWASP Coraza - Enterprise-grade open source web application firewall library 7. mysql + gorm GORM 指南 GORM - The fantastic ORM library for Golang, aims to be developer friendly. 8. redis 9. kafka 10. etcd 11. clickhouse 什么是ClickHouse？ ClickHouse Docs 接入方式 CNAME 接入 修改DNS，让域名解析到反向代理服务器。所有流量经过反向代理进行检测，检测无问题之后再回源至真正的Web服务器。 + 优点 - 隐藏真正的后端web服务地址 + 缺点 - 权限过高,容易造成不可预计的风险 项目结构 整体结构 尽可能的保证waf内核的轻量级,避免出现过多的冗余功能,保证waf内核的稳定性. 用户通过上层服务去设置防护配置,利用etcd的watch属性进而修改内置中waf实列的配置. 上层服务结构 目录结构 新建API或grpc协议文件 项目目录下执行 新建服务 项目目录下执行 模块开发常用命令 进入app下某个模块下执行 运行系统配套服务 项目目录下执行 数据库ER图 项目更新日志 v1.0.0 1. 内核具有基础防护功能 , 支持动态更新策略 , 以及各个网站之间的waf实列隔离,简单的实现了反向代理,将请求转发至真正的后端地址支持coraza内置防护策略, 包括：SQL注入（SQLi），跨站点脚本（XSS），PHP和Java代码注入，HTTPoxy，Shellshock，脚本/扫描器/机器人检测&元数据和错误泄漏。可以将攻击事件落地本地磁盘的csv文件. 2. 上层服务,用户配置需要防护的网站,策略,规则组以及自定义规则. 目前内置规则不支持用户自定义. v1.0.1 1. 日志插件和waf内核部通过docker简化部署方式 2. 增加了数据看板, 可以查看各个网站的防护情况 3. 优化平台服务代码结构 , 删除冗余代码 4. 增加白名单功能 , 目前支持URI和IP两种 5. 内核新增配置文件 , 更加灵活 6. 搭建了线上环境配置 , 以及链路追踪 , 服务注册框架 v2.0.0 1. 内核可记录正常","default_branch":null,"files":null,"tree":[],"storefront":"/r/YFGo","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/YFGo/dinghai_waf/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}