tengine安装lua,ngx_lua_waf

《tengine安装lua,ngx_lua_waf》

下载luajit并安装,改为OpenResty

官网: http://luajit.org/download.html

//centos8 先安装lua环境:
//$dnf --enablerepo=PowerTools install lua-devel 


$ cd /usr/local
//不使用LuaJIT模块,改用更先进的OpenResty模块,LuaJIT已在2017年停止更新!!!
//$ wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
//$ tar -xzvf LuaJIT-2.0.5.tar.gz
//$ cd LuaJIT-2.0.5
//$ make 
//$ make install PREFIX=/usr/local/luajit
//$ ln -s /usr/local/luajit/bin/luajit-2.0.5 /usr/local/bin/luajit
//# luajit -v

//下载OpenResty模块
//官网:https://openresty.org/en/download.html
$ wget https://openresty.org/download/openresty-1.19.3.1.tar.gz
$ tar -xzvf openresty-1.19.3.1.tar.gz
$ cd openresty-1.19.3.1
//自行添加需要的模块!!
$ ./configure --with-http_v2_module --with-http_ssl_module --with-http_realip_module
$ gmake 
$ gmake install
//安装完成后查看是否已引入模块:
$ cd /usr/local/openresty/nginx/sbin
$ ./nginx -V
---------------------------------------
nginx version: openresty/1.19.3.1
...
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1 ...

nginx编译安装支持lua

$ cd "$file_name"
        
//luajit模块需要先安装
$ export LUAJIT_LIB=/usr/local/luajit/lib
$ export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
//$ export LD_LIBRARY_PATH=/usr/local/luajit/lib:$LD_LIBRARY_PATH
$echo "/usr/local/luajit/lib" >> /etc/ld.so.conf
$ ldconfig
        
$ ./configure --prefix=/usr/local/tengine --with-http_v2_module --with-http_ssl_module --with-http_realip_module  --with-http_lua_module  --with-luajit-inc=/usr/local/luajit/include/luajit-2.0 --with-luajit-lib=/usr/local/luajit/lib
$ make && make install

下载ngx_lua_waf

//旧版官网:https://github.com/loveshell/ngx_lua_waf/
//改版官网:https://github.com/whsir/ngx_lua_waf/

假设nginx安装路径为:/usr/local/tengine
把ngx_lua_waf下载到conf目录下,解压命名为waf
即:/usr/local/tengine/conf/waf

//配置 /usr/local/tengine/conf/waf/config.lua
RulePath = "/usr/local/tengine/conf/waf/wafconf/"   //<---修改你服务器的对应位置
attacklog = "off"
logdir = "/usr/local/tengine/logs/hack/"   //<---修改你服务器的对应位置
----------------------------------------------------------------
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白名单
    whiteServername = "off" 
    --是否开启主机(对应nginx里面的server_name)白名单
    black_fileExt={"php","jsp"}
    --填写可上传文件后缀类型
    ipWhitelist={"127.0.0.1","192.168.1.0-192.168.255.255"}}
    --ip白名单,多个ip用逗号分隔
    ipBlocklist={"1.0.0.1","2.0.0.0-2.0.0.255"}
    --ip黑名单,多个ip用逗号分隔
    CCDeny="on"
    --是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
    CCrate = "100/60"
    --设置cc攻击频率,单位为秒.
    --默认1分钟同一个IP只能请求同一个地址100次
    html=[[......]]
    --警告内容,可在中括号内自定义
    备注:不要乱动双引号,区分大小写

Tengine配置

//在nginx.conf的http段添加
lua_package_path "/usr/local/tengine/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file  /usr/local/tengine/conf/waf/init.lua;
access_by_lua_file /usr/local/tengine/conf/waf/waf.lua;

测试:

https://yourhost/abc.php?id=../etc/passwd

点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注