• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

配置nginx支持ngx_lua_waf

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

个人学习笔记,谢绝转载!!!

原文: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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
安装Nginx+Lua+OpenResty开发环境配置全过程实例发布时间:2022-07-22
下一篇:
Sublime Text3配置Lua运行环境发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap