个人学习笔记,谢绝转载!!!
原文:https://www.cnblogs.com/wshenjin/p/12489013.html
ngx_lua_waf 是一个基于 ngx_lua 的 开源的web 应用防火墙,使用简单,高性能和轻量级。
1、安装LuaJIT2.0
LuaJIT是采用C语言写的Lua代码的解释器, 这里推荐使用lujit2.1做lua支持
# wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
# tar xf LuaJIT-2.0.5.tar.gz
# cd LuaJIT-2.0.5
# make && make install
ngx_lua如果是0.9.2以上版本,建议正则过滤函数改为ngx.re.find,匹配效率会提高三倍左右。
2、安装ngx_devel_kit
NDK(nginx development kit)模块是一个拓展nginx服务器核心功能的模块,第三方模块开发可以基于它来快速实现
# wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.0.tar.gz
# tar xf v0.3.0.tar.gz
3、安装nginx_lua_module
# wget https://github.com/openresty/lua-nginx-module/archive/v0.10.13.tar.gz
# tar xf v0.10.13.tar.gz
4、环境变量
# export LUAJIT_LIB=/usr/local/lib
# export LUAJIT_INC=/usr/local/include/luajit-2.0
5、编译安装Nginx
# ./configure \
...略... \
--add-module=/dist/ngx_devel_kit-0.3.0 \
--add-module=/dist/lua-nginx-module-0.10.13 \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB"
如果报错: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
解决方法:ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
6、下载waf
# wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip
# unzip master.zip
# mv ngx_lua_waf-master /usr/local/nginx/conf/waf
7、nginx.conf http字段里添加配置:
lua_package_path "/usr/local/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/nginx/conf/waf/init.lua;
access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;
8、配置详解:
/usr/local/nginx/conf/waf/config.lua
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
--规则存放目录
attacklog = "off"
--是否开启攻击信息记录,需要配置logdir
logdir = "/usr/local/nginx/logs/hack/"
--log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
UrlDeny="on"
--是否拦截url访问
Redirect="on"
--是否拦截后重定向
CookieMatch = "on"
--是否拦截cookie攻击
postMatch = "on"
--是否拦截post攻击
whiteModule = "on"
--是否开启URL白名单
black_fileExt={"php","jsp"}
--填写不允许上传文件后缀类型
ipWhitelist={"127.0.0.1"}
--ip白名单,多个ip用逗号分隔
ipBlocklist={"1.0.0.1"}
--ip黑名单,多个ip用逗号分隔
CCDeny="on"
--是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
CCrate = "100/60"
--设置cc攻击频率,单位为秒.
--默认1分钟同一个IP只能请求同一个地址100次
html=[[Please go away~~]]
--警告内容,可在中括号内自定义
备注:不要乱动双引号,区分大小写
过滤规则在wafconf下,可根据需求自行调整,每条规则需换行,或者用|分割:
- args里面的规则get参数进行过滤的
- url是只在get请求url过滤的规则
- post是只在post请求过滤的规则
- whitelist是白名单,里面的url匹配到不做过滤
- user-agent是对user-agent的过滤规则
默认开启了get和post过滤,需要开启cookie过滤的,编辑waf.lua取消部分--注释即可
参考
https://github.com/loveshell/ngx_lua_waf
https://www.cnblogs.com/Template/p/9668305.html
|
请发表评论