Ngx_lua_waf搭建步骤
Ngx_lua_waf是一个web防火墙,主要通过lua实现,安装简单,性能优异,由国人loveshell开发。
ngx_lua_waf是我刚入职趣游时候开发的一个基于ngx_lua的web应用防火墙。
代码很简单,开发初衷主要是使用简单,高性能和轻量级。
现在开源出来,遵从MIT许可协议。其中包含我们的过滤规则。如果大家有什么建议和想法,欢迎和我一起完善。
主页上介绍的安装流程不是很详细,我这里详细记录了一下。
安装openresty平台
OpenResty 是一个基于 NGINX 和 LuaJIT 的 Web 平台,相当于集成了lua的Nginx,比自己编译安装Nginx+Lua要方便很多。步骤如下:
|
安装如果出现问题,可以参考 http://openresty.org/cn/installation.html
默认安装位置在/usr/local/openresty/nginx,修改conf/nginx.conf指定运行nginx worker的用户:
user nginx; |
如果没有nginx用户,在root权限下运行useradd nginx即可添加。
如果是用systemctl管理服务,创建/lib/systemd/system/nginx.service文件,填写如下内容:
[Unit] |
即可使用systemctl命令管理nginx服务:
启动 systemctl start nginx
关闭 systemctl stop nginx
重启 systemctl restart nginx
开启自启动 systemctl enable nginx
部署Ngx_lua_waf
下载安装包到nginx配置目录,重命名为waf:
cd /usr/local/openresty/nginx/conf |
然后修改Nginx.conf,在http下面增加以下waf配置:
http { |
然后配置waf下的config.lua文件,主要是waf规则目录(RulePath)和日志目录(logdir):
RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf" |
logdir目录尤其注意,需要用户自行创建,并且设置nginx用户可写,否则不会生成拦截日志也不会报错。
规则
规则文件在wafconf下面,分为:
args
cookie
post
url
user-agent
whiteurl
文件一行一条规则,基于正则表达式编写,你可以根据你的需要进行修改。
效果
在部署配置完成之后,执行命令systemctl restart nginx重启nginx服务,即可看到WAF效果:
拦截页面内容配置在config.lua的html字段中,你可以自定义更美观的样式。