c4rt1y

nginx+nginx_lua_waf安装部署

0x01 介绍

在centos7下部署nginx_lua_waf,nginx_lua_waf具有使用简单、高性能、轻量级的优势,能够有效的防范sql注入、文件包含、XSS、fuzzing等web攻击,屏蔽异常的网络请求,防止webshell上传,相比于安全狗等商业版WAF,能够根据实际需求调整过滤规则,编辑符合企业自身业务需求的过滤规则。

0x02 环境搭建

#增加第三方资源
yum install epel-release -y
#安装编译环境
yum install gcc gcc-c++ -y
#安装ssl,否则会报错
yum -y install openssl openssl-devel  

#下载LuaJIT-2.0.4
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz --no-check-certificate
#解压LuaJIT-2.0.4
tar zxf LuaJIT-2.0.4.tar.gz
#安装lua环境
cd LuaJIT-2.0.4 && make && sudo make install
#设置软连接,否则在nginx报错
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
#设置环境变量(加入到最下面)
vi /etc/profile
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0

#环境变量执行
source /etc/profile

#下载ngx_devel_kit
wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz --no-check-certificate
#解压ngx_devel_kit
tar zxf v0.2.19.tar.gz  

#下载lua-nginx-module
wget https://github.com/openresty/lua-nginx-module/archive/v0.9.16.tar.gz --no-check-certificate
#解压lua-nginx-module
tar zxf v0.9.16.tar.gz


#下载pcre
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz --no-check-certificate
#解压pcre
tar zxf pcre-8.39.tar.gz 
#配置编译参数
./config
#编译安装
make && make install 


#下载nginx
wget http://nginx.org/download/nginx-1.9.4.tar.gz --no-check-certificate
#解压nginx
tar zxf nginx-1.9.4.tar.gz  
#配置编译参数
cd nginx && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module --add-module=/root/lua-nginx-module-0.9.16/ --add-module=/root/ngx_devel_kit-0.2.19/ --with-pcre=/root/pcre-8.39
#编译安装
make && make install
#查看nginx是否正常
/usr/local/nginx/sbin/nginx -t
#运行nginx
/usr/local/nginx/sbin/nginx
#访问nginx首页
curl 10.10.10.20


#如果没有安装git,首先安装git
yum install git -y
#下载nginx_lua_waf
git clone https://github.com/loveshell/ngx_lua_waf /usr/local/nginx/conf/waf
#修改nginx.conf配置文件,在http头的最开始加入如下这段
vi /usr/local/nginx/conf/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;


#查看nginx是否正常
/usr/local/nginx/sbin/nginx -t
#重启nginx
/usr/local/nginx/sbin/nginx -s reload

#假设访问不存在链接进行恶意攻击,出现拦截
curl 10.10.10.20/?s=../../etc/passwd

nginx_lua_waf

0x04 waf比较

开源的waf
https://github.com/loveshell/ngx_lua_waf
https://github.com/xsec-lab/x-waf
https://github.com/lanzsec/tengine_waf

未开源的waf
安全狗
云锁
360网站卫士
加速乐

列举就不一一讲解了,这里主要提下,研究了下开源的nginx下lua的waf,最终的内容还是关于正则表达式的内容,比如如下

nginx_lua_upload

关于绕过的方法无数,这里的一个匹配仅仅如此而已,那么删除form-data直接就过了。不断的优化正则表达式,和利用人工智能,应该是未来的一个趋势,想起最近,某人和我说的,突破容易,防护难。路漫漫,其修远兮。

0x05 waf资料来源

http://blog.oldboyedu.com/nginx-waf/
https://mp.weixin.qq.com/s?__biz=MjM5NDM1OTM0Mg==&mid=2651050493&idx=1&sn=1d81ff6aff52fa93f329522021bf93e0&scene=0#wechat_redirect
https://mp.weixin.qq.com/s?__biz=MzI5MDQ2NjExOQ==&mid=2247484651&idx=1&sn=2fd58ef842d3652fc0933084fc2bf0c7&chksm=ec1e34c3db69bdd5caa73a00437a844738205046d469e928f6d5acbd6c0beab66c9c8800b3bc#rd
http://www.mottoin.com/94365.html
http://www.mottoin.com/87521.html
https://www.leavesongs.com/OTHERLAN/diy-my-nginx-lua-waf.html
http://blog.chinaunix.net/uid-1728743-id-3546152.html
https://m.aliyun.com/yunqi/ziliao/29145
http://www.cnblogs.com/youlechang123/p/5319085.html
https://github.com/loveshell/ngx_lua_waf
GoTop