php用正则表达抓取网页中文章( 管理ModSecurity日志的开源项目-FLEWAF-WAF)
优采云 发布时间: 2022-04-13 22:34php用正则表达抓取网页中文章(
管理ModSecurity日志的开源项目-FLEWAF-WAF)
之前介绍过ModSecurity,一个优秀的开源WAF。它是一个入侵检测和防御引擎。它最初是 Apache 的一个模块。现在它可以被编译并作为一个单独的模块添加到 Nginx 服务中。
这个WAF虽然很不错,但是用起来没那么好用。之前我也组织过文章介绍它的原理和规则。但是,还有一个问题,就是它的日志分析。之前介绍过原理和规则的时候,也介绍过它的日志规则,但是在使用过程中,纯文本记录的方式对于入侵分析来说太不友好了
所以今天给大家介绍一个管理ModSecurity日志的开源项目WAF-FLE
WAF-FLE 是专门用于处理 ModSecurity 日志和事件的控制台。管理员可以通过WAF-FLE查看和搜索ModSecurity记录的日志。
WAF-FLE是一个用PHP编写的开源项目,需要LNMP/LAMP环境搭建
环境要求:
php-geoipMySQL5.1+
安装环境就不赘述了,只说一个GeoIP库的安装。这里GeoIP库是用来展示入侵IP信息的,所以需要这个库。安装非常简单。其实就是下载一个dat数据库,从
下载后解压dat文件。
环境准备好后,从github下载WAF-FLE:
在 waf-fle 的 extra 目录中,存放了数据库 sql 文件和 Apache 配置文件。如果你使用的是 Apache,可以直接把这个配置复制到 apache 配置目录下。如果使用Nginx,参考如下配置
修改config.php的时候,因为我没有安装apc的缓存扩展,这个扩展很老了,所以直接设置APC_ON=false关闭缓存
完成以上操作后,即可通过域名访问进入安装界面。
这里检查php扩展的时候,如果你不是Apache,就会有问题,就是在setup.php的499行,它使用apache_getenv来检查Apache是否在运行。,所以打开 setup.php 文件的第 499 行并注释掉这部分代码。
然后点击运行创建数据库
这里创建数据库的时候还有一个问题。在setup.php代码第28行,执行创建函数的时候,引用了一个$databaseSchema,在这里修改定义了一个位置,但是我放的是我的位置,所以这里需要。根据自己的情况修改
修改完成后,通过页面继续进行数据库创建操作。创建完成如下:
安装完成后,默认用户名和密码为admin/admin。之后,在 config.php 中配置 $SETUP=false。关闭安装后,重新访问
使用默认用户密码登录后,需要修改用户名和密码。
设置新密码后,您将被重定向到主界面。
目前没有数据,现在开始访问日志数据,点击菜单栏中的管理,添加传感器
保存后,创建一个传感器来接收日志
创建后,在这个传感器上,开始配置事件*敏*感*词*
这里我们选择使用mlog2waffle接收日志,然后选择service deamon查询日志。这是一个实时查询。WAF-FLE控制器URL是配置waf-fle的控制器地址,mlog2waffle通过put请求向这个接口发送数据。地址,下面是配置ModSecurity日志的配置路径,配置完成后点击下一步
系统会给出提示配置,需要根据给定的配置配置这些配置文件,这里可以按照提示配置操作,需要的mlog2waffle配置文件和启动脚本在extra目录下
配置完成后,启动mlog2waffle
mlog2waffle 通过 put 方法向 waf-fle 发送日志,但是默认情况下 Nginx 不允许 put 请求,所以启动会报错。需要通过 nginx 中的 dav 方法允许 put 请求
在启动mlog2waffle的过程中,遇到了很多问题,记录如下:
这里,通过PUT方法发送检测请求。这里的trick是PUT请求发送时没有URI,但是当Nginx检测到PUT请求没有URI时,会报409,认为有资源冲突
所以,无论你做什么,这里的测试都不会通过。有两种方法可以处理它。一种是直接关闭测试,mlog2waffle可以正常启动。另一种方法是修改测试方法,带上uri。mlog2waffle 是 perl 脚本,非常简单
这里需要手动替换,通过$_SERVER获取客户端IP,需要手动编写getallheaders()方法,如下:
另外,在index.php中,第65行的位置原来是通过apache_setenv()得到的sensor的名字,复制到Apache的“REMOTE_USER”中。此处未使用 Apache,因此只需将其注释掉即可。
修改完这些,就可以通过脚本启动mlog2waffle了
启动后,通过waf的访问日志,可以看到mlog2waffle已经开始通过put方法将日志解析成event并传递给waf-fle
在mlog2waffle的readIndex方法中,由于需要读取和解析日志索引文件,所以有一个正则匹配,如图:
这里需要修改和匹配自己记录的日志格式。完全匹配后可以正确读取日志,解析后将解析后的内容通过send_event方法通过PUT方法传递给waf-fle进行显示。
waf-fle接收到的文件是一个index.php,它通过正则解析所有步骤。有兴趣的可以看源码。至此,waf-fle就部署好了,可以看到效果了。
waf-fle虽然是老牌开源项目,但是对于modsecurity日志分析来说已经足够了