Nginx安装ngx_lua_waf改版,


ngx_lua_waf改版,增加网段、UA、主机白名单等功能,修复了一些bug,项目地址:https://github.com/whsir/ngx_lua_waf

ngx_lua_waf改版基于ngx_lua_waf二次修改,增加了一些必要的功能,使用起来简单,高性能和轻量级。

主要功能如下:

防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击
防止svn/备份之类文件泄漏
防止ApacheBench之类压力测试工具的攻击
屏蔽常见的扫描黑客工具,扫描器
屏蔽异常的网络请求
屏蔽图片附件类目录php执行权限
防止webshell上传
可以根据ip、网段、server_name、User-Agent做白名单

本文基于Centos7.x系统,关闭selinux,关闭防火墙(或自行设置规则)

想要使用ngx_lua_waf改版,首先要编译Nginx增加lua模块。

配置方法如下

1、安装所需依赖

1 yum install wget gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel

2、下载ngx_devel_kit

1 2 3 cd /usr/local/src wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1rc1.tar.gz tar xf v0.3.1rc1.tar.gz

3、下载lua-nginx-module

1 2 wget https://github.com/openresty/lua-nginx-module/archive/v0.10.14.tar.gz tar xf v0.10.14.tar.gz

4、安装luajit

1 2 3 4 wget https://github.com/openresty/luajit2/archive/v2.1-20190329.tar.gz cd luajit2-2.1-20190329 make make install

5、导入环境变量

1 2 export LUAJIT_LIB=/usr/local/lib export LUAJIT_INC=/usr/local/include/luajit-2.1

6、编译nginx模块

1 2 3 4 5 6 7 8 useradd -s /bin/false -M www cd /usr/local/src wget http://nginx.org/download/nginx-1.14.2.tar.gz tar xf nginx-1.14.2.tar.gz cd nginx-1.14.2 ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --add-module=/usr/local/src/ngx_devel_kit-0.3.1rc1 --add-module=/usr/local/src/lua-nginx-module-0.10.14 --with-ld-opt=-Wl,-rpath,$LUAJIT_LIB make make install

7、设置Nginx启动服务

1 2 3 4 5 6 ln -sv /usr/local/nginx/sbin/nginx /usr/local/sbin/ wget -P /etc/init.d/ http://down.whsir.com/downloads/nginx chmod +x /etc/init.d/nginx chkconfig --add nginx chkconfig nginx on /etc/init.d/nginx start

8、下载ngx_lua_waf改版

1 2 3 4 cd /usr/local/nginx/conf wget https://github.com/whsir/ngx_lua_waf/archive/v1.0.3.tar.gz tar xf v1.0.3.tar.gz mv ngx_lua_waf-1.0.3/ waf

9、在nginx.conf的http字段内添加以下内容

1 2 3 4 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;

10、最后重启nginx(reload也可以的)

1 /etc/init.d/nginx restart

11、验证

访问http://域名或IP地址/index.php?id=../etc/passwd

例如:http://192.168.157.132/index.php?id=../etc/passwd

看到503 Service Temporarily Unavailable则表示配置成功

相关内容