zoukankan      html  css  js  c++  java
  • 配置nginx支持ngx_lua_waf

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

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

  • 相关阅读:
    Oracle——oem开启managementserver的时候搜索不到节点的解决方法!!!
    PL/SQL学习笔记(一)
    oracle 数据库的非指令备份方法
    OracleDBConsole[SID]服务简介
    Toad 使用快速入门
    oracle 配置
    sql中exist与in 的区别
    页面之间传递参数的几种方法荟萃
    div+CSS网页布局入门系列教程(来自标准之路)
    XML操作类
  • 原文地址:https://www.cnblogs.com/wshenjin/p/12489013.html
Copyright © 2011-2022 走看看