定海 - 利用Coraza引擎开发一个防火墙

1. 介绍:

        Coraza有大量的内置安全规则,包括 OWASP Top 10,同时将错误警报降至最低。CRS保护免受许多常见攻击类别的攻击,包括SQL注入(SQLi)、跨站点脚本(XSS)、PHP和Java代码注入、HTTPoxy、Shellshock、脚本/扫描器/机器人检测以及元数据和错误泄漏。 对于个人开发者和工作室可以快速搭建出自己的防火墙,作为基础的防护.

2. 定海-实现WAF内核

拉取Coraza核心内置规则集

       

wget https://raw.githubusercontent.com/corazawaf/coraza/v3/dev/coraza.conf-recommended -O coraza.conf
git clone https://github.com/coreruleset/coreruleset

可以将拉取的规则集的相对路径存入etcd中

内核服务每次启动时,从etcd中获取到相关策略,从策略中读取策略应用的规则组,在加载规则,完成内核中初始化的WAF实列, 

接入的网站在访问时,根据etcd中保存的此网站应用的策略,在map集合中读取对应的waf实列,检测访问的流量,检测完无任何问题后,通过反向代理,回源至真正的后端地址.

	targetURL, err := url.Parse(fmt.Sprintf("http://%s", realAddr))
			if err != nil {
				http.Error(rw, err.Error(), http.StatusInternalServerError)
				return
			}
			req.Body = io.NopCloser(strings.NewReader(string(requestBody))) /* 重置请求体 */
			proxy := httputil.NewSingleHostReverseProxy(targetURL)
			proxy.ServeHTTP(rw, req)

3.利用etcd实现热更新策略,规则组,规则

此处仅简单介绍一下实现思路:

内核服务启动后,利用etcd监听策略/规则组/规则相关的键 , 当用户在上层服务修改策略/规则组/规则时,根据map之间的映射关系 , 重新加载影响到的策略 , 更新策略信息完成之后, 根据策略ID,更新waf实列. 这样可以做到用户在上层服务更新规则 , 不必重新启动内核,即可更新底层的WAF实列. 

项目开源地址: YFGo/dinghai_waf: 定海

目标: 支持用户自定义规则 , 目前仅支持coraza内置的防护规则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值