# waf **Repository Path**: vipxiaojie/waf ## Basic Information - **Project Name**: waf - **Description**: nginx + lua + waf - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-07-21 - **Last Updated**: 2021-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 本仓库源地址 https://github.com/unixhot/waf # waf - 使用Nginx+Lua实现自定义WAF(Web application firewall) - 看了两天Lua,练练手,参考https://github.com/loveshell/ngx_lua_waf ###需求产生 由于原生态的Nginx的一些安全防护功能有限,就研究能不能自己编写一个WAF,参考(照抄)Kindle大神的ngx_lua_waf,自己尝试写一个了,使用两天时间,边学Lua,边写。不过不是安全专业,只实现了一些比较简单的功能: ####功能列表: 1. 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。 2. 支持URL白名单,将不需要过滤的URL进行定义。 3. 支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。 4. 支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。 5. 支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。 6. 支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。 7. 支持URL参数过滤,原理同上。 8. 支持日志记录,将所有拒绝的操作,记录到日志中去。 9. 日志记录为JSON格式,便于日志分析,例如使用ELKStack进行攻击日志收集、存储、搜索和展示。 ####WAF实现 WAF一句话描述,就是解析HTTP请求(协议解析模块),规则检测(规则模块),做不同的防御动作(动作模块),并将防御过程(日志模块)记录下来。所以本文中的WAF的实现由五个模块(配置模块、协议解析模块、规则模块、动作模块、错误处理模块)组成。