ngx_lua_waf是一个基于ngx_lua的web应用防火墙,使用简单,高性能和轻量级。
防止svn/备份之类文件泄漏
防止ApacheBench之类压力测试工具的攻击
屏蔽常见的扫描黑客工具,扫描器
屏蔽异常的网络请求
屏蔽图片附件类目录php执行权限
防止webshell上传
ngx_lua_waf推荐使用Luajit做lua支持,而Luajit需要ngx_devel_kit模块与lua-nginx-module模块。进入/usr/local/src目录准备以上文件。
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar zxvf v0.3.0.tar.gz
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.10.tar.gz
tar zxvf v0.10.10.tar.gz
wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz
tar xf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
make && sudo make install
cd /usr/local/src/nginx-1.13.3
#这个很有可能不一样
export LUAJIT_LIB=/usr/local/lib
#这个很有可能不一样
export LUAJIT_INC=/usr/local/include/luajit-2.0
nginx -V
./configure(Nginx-V已有的模块)--add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.10 --with-ld-opt=-Wl,-rpath,$LUAJIT_LIB
# 注意不要make install
make
#重命名nginx旧版本二进制文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
#拷贝一份新编译的二进制文件
cp objs/nginx /usr/local/nginx/sbin/
#升级
make upgrade
#确认
nginx -V
#重新加载Nginx
nginx -s reload
从https://github.com/loveshell/ngx_lua_waf下载Luajit。
nginx安装路径假设为/usr/local/nginx/,把ngx_lua_waf下载到conf目录下,解压命名为waf。
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;
配置config.lua里的waf规则目录(一般在waf/conf/目录下),绝对路径如有变动,需对应修改:
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
然后重启nginx即可
service nginx restart
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
--规则存放目录
attacklog = "on"n
--是否开启攻击信息记录,需要配置logdir
logdir = "/home/wwwlogs/"
--log存储目录,需要nginx用户的可写权限。该目录LNMP默认建立,放在这个目录即可
--日志文件名称格式如下:虚拟主机名_sec.log
--是否拦截url访问
--是否拦截后重定向
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用逗号分隔
--是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
CCrate = "100/60"
--设置cc攻击频率,单位为秒.
--默认1分钟同一个IP只能请求同一个地址100次
html=[[Please go away~~]]
--警告内容,可在中括号内自定义
备注:不要乱动双引号,区分大小写
curl https://www.youfencun.com/index.php?id=../etc/passwd
返回网站防火墙Html源码即表示配置成功,也可通过网页访问,返回如下图所示: