0x00 概述
最近在看lua_waf,看看怎么搞个web界面出来,于是有了这篇笔记。
上图是大佬分享的waf日志处理流程,不过我这篇文章讲的就简单多了,如下, 纯属搞着玩儿:

ngx_lua_waf简介
ngx_lua_waf,是一个轻量级、高性能的WAF模块。
- 防止sql注入,本地包含,部分溢出,fuzzing测试,XSS, SSRF等web攻击
- 防止svn/备份之类文件泄漏
- 防止ApacheBench之类压力测试工具的攻击
- 屏蔽常见的扫描黑客工具,扫描器
- 屏蔽异常的网络请求
- 屏蔽图片附件类目录php执行权限
- 防止webshell上传
详情(安装方法)见:https://github.com/loveshell/ngx_lua_waf
Fluentd简介
Fluentd,是一个开源收集事件和日志系统,它目前提供150+扩展插件让你存储大数据用于日志搜索,数据分析和存储。这里我们用fluentd搜集lua_waf日志。
文档中心:http://docs.fluentd.org/v0.12/articles/quickstart
0x01 Fluentd安装
lua_waf安装略,网上有很多教程,直接开始fluentd部署。
1.通过rpm安装,执行如下命令(如果有报错,按实际报错提示处理即可):1
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
2.安装好之后便可以启动:
1 | $ /etc/init.d/td-agent start |
3.配置,如何取日志,如何进行处理分析都在这里进行配置(td-agent.conf):
1 | $ sudo vi /etc/td-agent/td-agent.conf |
4.必要的插件,我们这里是要将取得的日志送到mysql做分析以及页面展示,所以需要下载fluent-plugin-mysql(fluentd默认没有mysql插件)。
1 | gem地址:https://rubygems.org/gems/fluent-plugin-mysql/versions/0.1.5 |
安装命令:
1 | yum install mysql-devel(依赖包) |
ngx_lua_waf日志格式
init.lua代码片段:
1 | #ngx_lua_waf拦截日志格式,能够与fluentd正则匹配。 |
fluentd配置
td-agent.conf片段:
1 | #将/usr/local/nginx/logs/hack/ngx_lua_waf_sec.log日志实时同步到mysql |
0x02 mysql接收waf日志
下面这张表存放waf的拦截日志,比较简单。接收上面td-agent传过来的数据。
1 | use pscan; |
0x03 页面展示

源码(php+mysql+Bootstrap)见github,代码质量为初学者水平,见谅。