freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

信息安全建设之基于开源搭建WAF网关
2022-01-06 20:25:53
所属地 北京

前言

Web防火墙是常见的安全组件,用来防御各类常见的web应用层攻击,包括cc、sql注入、xss注入等等。在信息安全闭环的过程中,是一个必不可少的组件,其重要和基础理论就略过了。简单说一下开源WAF系统的组成,管理后台主要是用vue和golang实现的,包括用户管理、ldap和邮件支持等基础组件,主要还是靠管理后台管理对应的WAF规则和一些基本的封禁措施。WAF网关主要是基于openresty实现,参考了apisix的一些框架,从而实现了对web应用请求的过滤。管理后台和WAF网关支持docker部署的方式。

安装

  • 管理后台的安装比较简单,只要满足vue和golang的环境即可进行安装,其中一些细节内容都记录在doc里面,但是需要理解逻辑层面的东西,才可以配置WAF规则。地址: https://github.com/jixindatech/shenshu
  • 网关安装也比较简单,最好是用luarocks进行安装,需要满足一些依赖才可以,集成了hyperscan检测。事件日志支持rsyslog, kafka方式。
  • 事件存储基于elaticsearch,需要提前安装对应的mapping.json。

基础配置

  • 登陆管理后台,管理员用户admin,密码在配置文件里面配置。其它的一些配置可以参考doc里面的说明。
  • 网关配置主要涉及到配置数据和事件日志,配置数据是通过redis下发,定时拉取redis的配置数据,实际数据的更新是增量更新,不会全部更新,事件日志支持rsyslog和kafka,主要是配置好redis, rsyslog,kafka的地址即可。

WAF配置

  • 站点配置之前,需要先配置Upstream才可以,这样站点就会知道如何代理流量到后端。另外,除了IP管理有全局之外,其它的所有配置都会跟站点关联。站点就可以配置完成。
  • IP管理, IP管理分为站点配置和全局,在站点操作栏里就可以管理该站点下的IP。在IP管理菜单里面,可以在下拉选项里面配置全局IP, 在下面的tab页面可以选择配置allow或deny的IP。
  • CC 管理主要是配置站点下的策略。选择CC配置菜单,下拉选择域名(站点名称),即可新增该站点的CC策略。目前只支持单位时间内的访问次数判断,超过就会返回400,策略比较简单。
  • 规则配置,主要分为两类,一类是批规则Batch,一类是Specific规则,主要是对应网关的处理,batch规则应用于hyperscan进行匹配,specific规则属于遍历类,主要还是根据性能要求,区分选择哪一类规则。规则由规则组进行管理,规则组跟站点相互独立,站点可以配置其对应的规则组。新建Batch规则组,选择对应的菜单项,点击新增即可。增加规则组时,注意设置的匹配动作,优先级依次递减,同时解码支持三种,状态根据需求选择开关,处于关状态的规则组,即使关联了站点也不会生效。点击规则管理,就可以管理该规则组下面的规则了。匹配内容需要支持hyperscan, 动作默认只有拒绝。规则组内的规则的动作,只有规则组的动作才是最高优先级。这样就完成了一个batch规则的添加,其它的可以按照操作选项的内容进行操作了。
  • Specific规则组跟Batch规则组的配置一致,唯一不一样地方就是其下的规则内容。规则匹配稍微复杂些,需要指定哪些字段通过什么样的方式匹配什么样的内容,也会有优先级,同时动作有允许这个选项。这样对于某些请求可以直接通过,而不需要进行过滤,比如静态文件等等。
  • 可以看到匹配的字段会比较多一些。规则配置完之后,就可以对规则组站点进行关联。需要管理哪种类型的规则,点击就可以了。在选定规则组之后,设置规则组就可以完成规则组合站点的关联。需要注意的一点是:站点下面的多个的规则组里面的请求类型是 或 的关系,动作是优先级最高的决定的。这样就完成了站点的规则配置。
  • 实际的过滤过程,全局IP->站点IP->Specific规则->batch规则, 其中specific规则是优先级串行匹配,一旦有允许动作的规则会跳过后面的匹配,直接代理到后端

日志

  • 在日志列表菜单下,选择对应的选项就可以看到对应的日志,其中需要选择时间,默认是一周,另外站点名称不是域名是站点的名称,站点才是实际的域名,这样就可以查看对应的日志了。

报表

在Dashboard首页即可查看所有的统计信息,分别统计了规则和cc的事件,可以根据时间和站点名称统计对应的信息。其中规则的统计信息是根据规则组进行统计的。

建议

  • 规则组可以起有意义的名字,在报表里面显示比较清晰。
  • 静态文件和不需要过滤的请求,直接使用specific规则的允许跳过过滤。

结语

如果有任何建议,可以加入QQ群: 254210748  参与讨论,也欢迎issue和star。

# waf # WEB防火墙 # WAF开发 # WAF产品
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录