博客新站规划(二)——(nginx+lua+ngx_lua_waf实现waf功能)

导读 WAF的实现其实可以用一句话去概况,就是解析HTTP请求(协议解析模块),规则检测(规则模块),做不同的防御动作(动作模块),并将防御过程(日志模块)记录下来。那么如何用nginx+lua+ngx_lua_waf实现waf功能呢?
安装基础编译环境
yum install pcre-devel openssl-devel gd-devel geoip-devel gcc wget -y
下载安装所需组件
下载解压安装luajit 2.0.5(解压后直接make 然后make install)
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz

make  
make install

下载解压ngx_devel_kit
wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz


下载解压lua-nginx-module(nginx的lua模块)
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.14rc3.tar.gz

下载解压nginx
wget http://nginx.org/download/nginx-1.14.1.tar.gz

下载解压waf功能(ngx_lua_waf)
wget https://github.com/loveshell/ngx_lua_waf/archive/v0.7.2.tar.gz
编译安装nginx

进入nginx源码文件夹(编译安装nginx)

./configure /
--prefix=/web-boke/nginx /
--error-log-path=/var/log/nginx/error.log /
--http-log-path=/var/log/nginx/access.log /
--with-http_ssl_module /
--with-http_v2_module /
--with-http_realip_module /
--with-http_addition_module /
--with-http_image_filter_module=dynamic /
--with-http_geoip_module=dynamic /
--with-http_sub_module /
--with-http_dav_module /
--with-http_flv_module /
--with-http_mp4_module /
--with-http_gunzip_module /
--with-http_gzip_static_module /
--with-http_random_index_module /
--with-http_secure_link_module /
--with-http_degradation_module /
--with-http_slice_module /
--with-http_stub_status_module /
--with-pcre /
--with-pcre-jit /
--with-stream=dynamic /
--with-stream_ssl_module /
--with-debug /
--add-module=/root/ngx_devel_kit-0.3.0 /
--add-module=/root/lua-nginx-module-0.10.14rc3 /
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" ;

make
make install
调试nginx实现waf
第一:将waf功能模块,解压后重命名为waf(并移动到nginx的配置目录下)
mv waf/ /web-boke/nginx/conf

第二:修改nginx的配置文件使其加载waf功能模块,并加载博客的nginx配置文件
vim /web-boke/nginx/conf/nginx.conf

#在http里面添加如下
	lua_package_path "/web-boke/nginx/conf/waf/?.lua";
	lua_shared_dict limit 10m;
	init_by_lua_file  /web-boke/nginx/conf/waf/init.lua; 
	access_by_lua_file /web-boke/nginx/conf/waf/waf.lua;

	include /web-boke/nginx-boke/boke-ssl.conf;

第三:修改waf模块的规则配置路径

vim /web-boke/nginx/conf/waf/config.lua

RulePath = "/web-boke/nginx/conf/waf/wafconf/"

第四:导出环境变量(重要)
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH 

第五:启动nginx
/web-boke/nginx/sbin/nginx -t	#测试nginx的配置文件是否正确
/web-boke/nginx/sbin/nginx -V	#查看nginx编译了那些模块
/web-boke/nginx/sbin/nginx -s reload	#当waf规则更改后,需要reload一下nginx
/web-boke/nginx/sbin/nginx	#启动nginx

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/120839.html

(0)
上一篇 2021年8月28日
下一篇 2021年8月28日

相关推荐

发表回复

登录后才能评论