nginx+ngx_lua支持WAF防护功能

简介: 安装nginx+ngx_lua支持WAF防护功能nginx lua模块淘宝开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力.


安装nginx+ngx_lua支持WAF防护功能


nginx lua模块淘宝开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力.nginx以高并发而知名,lua脚本轻便,两者的搭配堪称完美.

用途:防止sql注入,本地包含,部分溢出,fuzzing测试,xss,***F等web***

防止svn/备份之类文件泄漏

防止ApacheBench之类压力测试工具的***

屏蔽常见的扫描***工具,扫描器

屏蔽异常的网络请求

屏蔽图片附件类目录php执行权限

防止webshell上传

系统:centos 6.4_x64

需要的软件:LuaJIT-2.0.3.tar.gz

tengine-2.1.0.tar.gz (nginx)

ngx_devel_kit-master.zip (ngx_devel_kit)

lua-nginx-module-master.zip (nginx_lua模块)

ngx_lua_waf-master.zip (waf策略 web应用防火墙)

yum -y install gcc gcc-c++ ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel autoconf pcre-devel libtool-libs freetype-devel gd zlib-devel zip unzip wget crontabs iptables file bison cmake patch mlocate flex diffutils automake make readline-devel glibc-devel glibc-static glib2-devel bzip2-devel gettext-devel libcap-devel logrotate ntp libmcrypt-devel GeoIP*


安装LuaJIT 2.0

tar zxf LuaJIT-2.0.0.tar.gz

cd LuaJIT-2.0.0

make && make install

注:lib和include是直接放在/usr/local/lib和usr/local/include


再来设置环境变量(这是给后面nginx编译的时候使用的):

vi /etc/profile

export LUAJIT_LIB=/usr/local/lib

export LUAJIT_INC=/usr/local/include/luajit-2.0

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

source /etc/profile

安装nginx

tar zxvf tengine-2.1.0.tar.gz

cd tengine-2.1.0

./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-pcre=/root/lnmp/pcre-8.20 --with-google_perftools_module --with-http_realip_module --with-poll_module --with-select_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_slice_module --with-http_mp4_module --with-http_gzip_static_module --with-http_concat_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_sysguard_module --with-http_browser_module=shared --with-http_user_agent_module=shared --with-http_upstream_ip_hash_module=shared --with-http_upstream_least_conn_module=shared --with-http_upstream_session_sticky_module=shared --with-http_addition_module=shared --with-http_xslt_module=shared --with-http_image_filter_module=shared --with-http_sub_module=shared --with-http_flv_module=shared --with-http_slice_module=shared --with-http_mp4_module=shared --with-http_concat_module=shared --with-http_random_index_module=shared --with-http_secure_link_module=shared --with-http_sysguard_module=shared --with-http_charset_filter_module=shared --with-http_userid_filter_module=shared --with-http_footer_filter_module=shared --with-http_trim_filter_module=shared --with-http_access_module=shared --with-http_autoindex_module=shared --with-http_map_module=shared --with-http_split_clients_module=shared --with-http_referer_module=shared --with-http_uwsgi_module=shared --with-http_scgi_module=shared --with-http_memcached_module=shared --with-http_limit_conn_module=shared --with-http_limit_req_module=shared --with-http_empty_gif_module=shared

make && make install

报错误请执行error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

然后创建下面文件夹

mkdir -p /data/logs/{client_body,hack}

chown -R www:www /data

chmod -R 755 /data

解压ngxluawaf-master.zip

unzip ngx_lua_waf-master.zip

mv ngx_lua_waf-master/* /usr/local/webserver/nginx/conf/

vi /usr/local/webserver/nginx/conf/config.lua

img_8753e55735cd1b9b6931500f7aba14cf.png

RulePath = waf的路径--规则存放目录


logdir = 日志记录地址--log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限


attacklog = "off" --是否开启***信息记录,需要配置logdir


UrlDeny="on" --是否拦截url访问


Redirect="on" --是否拦截后重定向


CookieMatch = "on" --是否拦截cookie***


postMatch = "on" --是否拦截post***


whiteModule = "on" --是否开启URL白名单


ipWhitelist={"127.0.0.1"} --ip白名单,多个ip用逗号分隔


ipBlocklist={"1.0.0.1"} --ip黑名单,多个ip用逗号分隔


CCDeny="on" --是否开启拦截cc***(需要nginx.conf的http段增加luashareddict limit 10m;)


CCrate = "100/60" --设置cc***频率,单位为秒. --默认1分钟同一个IP只能请求同一个地址100次


html=[[Please go away~~]] --警告内容,可在中括号内自定义



备注:不要乱动双引号,区分大小写



修改nginx配置,在HTTP里面加入 记得改自己的路径


lua_need_request_body on;


lua_package_path "/usr/local/webserver/nginx/conf /?.lua";


lua_shared_dict limit 10m;


init_by_lua_file /usr/local/webserver/nginx/conf/init.lua;


access_by_lua_file /usr/local/webserver/nginx/conf/waf.lua;


limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s;


limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s;


然后启动nginx.


测试创建个test.php文件,内容为test,使用curl来访问,当然前提是nginx做好了虚拟主机,这里就不介绍怎么做虚拟主机了.


curl http://localhost/test.php?id=../etc/passwd


返回的内容:test
因为127.0.0.1允许的所以能看见页面的内容,因为域名地址是不允许的所以能看不见页面的内容,说明生效了


curl http://blog.slogra.com/test.php?id=../etc/passwd


返回的内容:


img_a941cf85c1c2aba12a1554fab41d1c07.png


目录
相关文章
|
7月前
|
存储 安全 网络协议
绕过WAF和多个防护软件提权案例
绕过WAF和多个防护软件提权案例
96 0
|
5月前
|
监控 安全 网络安全
分析web应用防火墙与防火墙的功能与用途
分析web应用防火墙与防火墙的功能与用途
|
7月前
|
SQL 监控 Cloud Native
基于云原生网关插件实现WAF防护能力
一起体验云原生网关开箱即用,支持热插拔的WAF防护能力,同时您将掌握云原生网关上的插件使用方式
403 0
|
7月前
|
SQL 安全 算法
Web 应用防火墙 -- 规则防护
4.4.2 白名单加白 基于请求特征对误报流量加白, 加白后的流量会被 WAF bypass,从而解决误报问题。
81 0
|
8月前
|
云安全 机器学习/深度学习 移动开发
|
安全 JavaScript 前端开发
WAF 功能——数据风控 | 学习笔记
快速学习 WAF 功能——数据风控
167 0
|
安全 数据安全/隐私保护 开发者
WAF 功能——精准访问控制 | 学习笔记
快速学习 WAF 功能——精准访问控制
211 0
|
安全 网络安全 API
WAF 功能-CC 自定义规则 | 学习笔记
快速学习 WAF 功能-CC自 定义规则
259 0
|
数据采集 安全 大数据
未来2年,70%用户将选择云WAF防护
WAF就是Web应用防火墙,那WAAP又是什么?为何 Gartner发布的2021年WAF魔力象限预测:到2024年,70%的组织将青睐云WAAP服务?本文有解读,笔者坚信这个比例一定是90%以上!
327 0
未来2年,70%用户将选择云WAF防护
|
SQL 安全 网络安全
普及云WAF防护刻不容缓
从国家互联网应急中心发布的《中国互联网网络安全报告》可以看出:我国网站安全态势还是很严峻的,特别是网站被植入后门、网页篡改和网站挂马等安全问题,本文给出了解决方案,值得一读!
208 1
普及云WAF防护刻不容缓