nginx+ngx_lua支持WAF防护功能

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

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

用途:防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等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

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

返回的内容:

原文地址:http://blog.51cto.com/lwm666/2073972

时间: 2024-10-11 06:18:42

nginx+ngx_lua支持WAF防护功能的相关文章

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

nginx lua模块淘宝开发的nginx第三方模块,它能将lua语言嵌入到nginx配置中,从而使用lua就极大增强了nginx的能力.nginx以高并发而知名,lua脚本轻便,两者的搭配堪称完美. 用途:防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备份之类文件泄漏 防止ApacheBench之类压力测试工具的攻击 屏蔽常见的扫描黑客工具,扫描器 屏蔽异常的网络请求 屏蔽图片附件类目录php执行权限 防止webshell上传 系统:cent

Nginx 支持 WAF 防护功能实战

WAF(Web Application Firewall),中文名称叫做“Web应用防火墙 WAF的定义是这样的:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,通过从上面对WAF的定义中,我们可以很清晰地了解到:WAF是一种工作在应用层的.通过特定的安全策略来专门为Web应用提供安全防护的产品.用途: 用于过滤post,get,cookie方式常见的web攻击 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等we

Nginx 配置支持 WAF

WAF(Web Application Firewall),中文名叫做"Web应用防火墙" WAF的定义是这样的:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,通过从上面对WAF的定义中, 我们可以很清晰地了解到:WAF是一种工作在应用层的.通过特定的安全策略来专门为Web应用提供安全防护的产品. ngx_lua_waf是一个基于ngx_lua的web应用防火墙. # ngx_lua_waf用途: 防止sql注入,本地包含,部分

使用NGINX+Openresty实现WAF功能

一.了解WAF1.1 什么是WAF Web应用防护系统(也称:网站应用级入侵防御系统 .英文:Web Application Firewall,简称: WAF).利用国际上公认的一种说法:Web应用 防火墙 是通过执行一系列针对HTTP/HTTPS的 安全策略 来专门为Web应用提供保护的一款产品. 1.2 WAF的功能 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝.支持URL白名单,将不需要过滤的URL进行定义.支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返

使用Nginx+Lua实现waf

使用Nginx+Lua实现waf 软件包需求: 1 .Nginx兼容性[最后测试到1.13.6] wget http://nginx.org/download/nginx-1.13.6.tar.gz 2 .PCRE为Nginx编译安装关系的依赖 wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz 3 .下载luajit解释器和ngx_devel_kit以及lua-nginx-module模块

nginx搭建支持http和rtmp协议的流媒体服务器之一

实验目的: 让Nginx支持flv和mp4格式文件,支持RTMP协议的直播和点播: 同时打开RTMP的HLS功能 ?资料: HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议. HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器. 它也很容易使用内容分发网络来传输媒体流. 使用ffmpeg来完成对flv.mp4.mp3等格式的转化(点播实验暂时不测试) 一.准备工作

烂泥:nginx同时支持asp.net与php

本文首发于烂泥行天下. 经过两天的实验,终于让nginx同时支持asp.net与php了.下面就把具体的配置过程记录如下. 注意:本次实验OS:centos6 64bit. 尽管网络上有很多windows下nginx与asp.net集成的资料,但是windows环境下一直未测试成功.以下的实验全部是在linux环境下进行的.nginx已经安装成功,并运行如下: 在此我们讲解的nginx与asp.net集成不是通过nginx的反向代理功能,也不是使用windows提供的IIS,而是通过fastcg

nginx不支持.htaccess解决办法

可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦,下面我来给各位总结一下配置方法. 其实nginx和.htaccess一点关系都没有,只是一大堆人深受apache的影响觉得nginx应该也要支持.htaccess功能.在nginx的配置中直接include .htaccess文件就好 include /站点目录/.htaccess; 多么简单,但是更让人哭笑不得的是有大部分人根本就不知道

android圆形旋转菜单,并支持移动换位功能

LZ最近接手公司一个项目,需要写一个圆形的旋转菜单,并且支持菜单之间的移动换位,本来以为这种demo应该网上是很多的,想不到度娘也是帮不了我,空有旋转功能但是却不能换位置,所以LZ就只能靠自己摸索了. 最终LZ参考了网上的部分代码,重写了一个自定义的view终于实现了这个看似很吊,却没有实际意义的功能.在此贡献出来给广大码农们共享. 话不多说,先上代码: 自定义view类: public class RoundSpinView extends View { private Paint mPain