关于Coraza
Coraza是一款功能强大的企业级OWASP
Web应用程序防火墙框架,该工具基于Golang开发,不仅支持Modsecurity的Seclang语言,而且能够100%兼容OWASP核心规则集。
该工具完全开源,任何开发人员都可以根据自己的需求轻松完成自定义开发。
Coraza v2工具特性
1、内部API重构,公共API未做改动;
2、支持插件的全面审计引擎重构;
3、新增了很多插件接口;
4、完全兼容Modsecurity的Seclang语言;
5、删除了部分功能,并转换成了插件的形式,例如XML、GeoIP和PCRE正则表达式;
6、优化调试日志;
7、更新错误日志功能;
8、更好的性能;
工具要求
1、Linux发型版操作系统(推荐Debian或CentOS,当前版本暂不支持Windows);
2、Golang编译器v1.16+环境;
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/corazawaf/coraza.git
运行测试
下列命令可以直接运行Go测试:
go test ./...
go test -race ./...
使用pre-commit:
pip install pre-commit
pre-commit run --all-files
我们还可以直接通过下列命令来安装pre-commit Git钩子:
pre-commit install
你的第一个Coraza Web应用防火墙项目
package main
import(
"fmt"
"github.com/corazawaf/coraza/v2"
"github.com/corazawaf/coraza/v2/seclang"
)
func main() {
// 首先,我们初始化WAF以及Seclang解析器
waf := coraza.NewWaf()
parser, _ := seclang.NewParser(waf)
// 解析我们的规则
if err := parser.FromString(`SecRule REMOTE_ADDR "@rx .*" "id:1,phase:1,deny,status:403"`); err != nil {
fmt.Println(err)
}
// 接下来,创建一个事务,并分配相关变量
tx := waf.NewTransaction()
defer func(){
tx.ProcessLogging()
tx.Clean()
}()
tx.ProcessConnection("127.0.0.1", 8080, "127.0.0.1", 12345)
// 最后是请求Header处理阶段,该阶段可能会返回一个中断
if it := tx.ProcessRequestHeaders(); it != nil {
fmt.Printf("Transaction was interrupted with status %d\n", it.Status)
}
}
疑难解决
依赖问题:
go get: github.com/jptosso/coraza-waf/v2@v2.0.0-rc.3: parsing go.mod:
module declares its path as: github.com/corazawaf/coraza/v2
but was required as: github.com/jptosso/coraza-waf/v2
如果遇到问题,可以尝试使用下列命令修复:
go get -u github.com/corazawaf/coraza/v2@v2.0.0-rc.3
网络安全工程师企业级学习路线
这时候你当然需要一份系统性的学习路线
如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。
一些我收集的网络安全自学入门书籍
一些我白嫖到的不错的视频教程:
上述资料【扫下方二维码】就可以领取了,无偿分享