基于ngx_lua_waf模块的配置web应用防火墙

前言

ngx_lua_waf是一个基于lua-nginx-module(openresty)的web应用防火墙

github地址:https://github.com/loveshell/ngx_lua_waf

1,用途:

防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击

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

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

屏蔽常见的扫描黑客工具,扫描器

屏蔽异常的网络请求

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

防止webshell上传

2,安装配置

2.1下载安装 luajit

Luajit是一个C语言写的lua解释器。

#git clone http://luajit.org/git/luajit-2.0.git

#make  install PREFIX=/usr/local/luajit

# export LUAJIT_LIB=/usr/local/luajit/lib

# export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0 导出环境变量

# vim /etc/profile.d/luajit  添加全局环境变量

export PATH=/usr/local/luajit/bin:$PATH

2.2下载安装ngx_devel_kit

Ngx_devel_kit是nginx的一个模块,用来扩展nginx服务器的核心功能,其他模块可以在这个框架下更好的开发。

#git clone https://github.com/simpl/ngx_devel_kit.git 下载好不用编译

#/usr/local/soft/ngx_devel_kit 找到位置即可。

2.3下载安装下载lua-nginx-module

#wget https://github.com/openresty/lua-nginx-module/archive/v0.9.15.tar.gz

#tar -zxvf v0.9.15.tar.gz

#/usr/local/soft/lua-nginx-module-0.9.15  解压后找到位置即可

2.4重新编译nginx,需要注意编译顺序

--with-ld-opt="-Wl,-rpath, /usr/local/luajit/lib " --add-module=/usr/local/soft/ngx_devel_kit --add-module=/usr/local/soft/lua-nginx-module-0.9.15

以上luajit的lib,ngx_devel_kit,lua-nginx模块只主要添加的模块。最后得到如下配置。

#  wget http://nginx.org/download/nginx-1.7.10.tar.gz  建议使用nginx1.7版本,之前我使用1.9一直报错。

#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx 
--error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log 
--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock 
--with-http_ssl_module --with-http_stub_status_module 
--with-http_gzip_static_module --with-http_flv_module 
--with-http_mp4_module 
--http-client-body-temp-path=/var/tmp/nginx/client 
--http-proxy-temp-path=/var/tmp/nginx/proxy 
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi 
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi 
--with-ld-opt="-Wl,-rpath,/usr/local/luajit/lib" 
--add-module=/usr/local/soft/ngx_devel_kit 
 --add-module=/usr/local/soft/lua-nginx-module-0.9.15  && make 
&&make install

安装完成之后查看版本:

[[email protected] nginx-1.7.10]# /usr/local/nginx/sbin/nginx -V

nginx version: nginx/1.7.10

built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)

TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=nginx
--group=nginx --error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock
--with-http_ssl_module --with-http_stub_status_module
--with-http_gzip_static_module --with-http_flv_module
--with-http_mp4_module
--http-client-body-temp-path=/var/tmp/nginx/client
--http-proxy-temp-path=/var/tmp/nginx/proxy
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
--with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib
--add-module=/usr/local/soft/ngx_devel_kit
--add-module=/usr/local/soft/lua-nginx-module-0.9.15

2.3平滑重启nginx

#kill -HUP `cat /var/run/nginx/nginx.pid`
#/usr/local/nginx/sbin/nginx -s reload

2.4下载之后后解压,把ngx_lua_waf移动到nginx安装目录的conf目录下,改名为waf

# wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip

# mv ngx_lua_waf-master/  waf

在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;

2.5在conf.lua里的waf规则目录(/usr/local/nginx/conf/waf)

RulePath = "/usr/local/nginx/conf/waf/wafconf/"  注意规则配置文件的路径

重启nginx即可。

3.测试

测试waf防火墙配置 /?a=union select,证明拦截成功~ok.

[以上内容脚本一键安装:wafinstall.sh 下之后#bash  wafinstall.sh 即可安装。]

4.总结

Ngx_lua_waf安装还算顺利,在此需要注意的就是luajit(解释器)->ngx_devel_kit(快速开的模
块)->lua-nginx-module(模块),luajit的需要编译和指定安装目录,在后续nginx编译模块时候需要该参数。还有下载好
的ngx_devel_kit和lua-nginx-module模块,无需编译只需要下载之后,找到路径,然后编译nginx的时候编译进去即可。同时
建议使用nginx1.7版本。

本文来自:控企鹅的‘Blog,永久链接:https://www.mrliangqi.com/1074.html

时间: 2024-11-05 18:50:33

基于ngx_lua_waf模块的配置web应用防火墙的相关文章

缓存初解(五)---SpringMVC基于注解的缓存配置--web应用实例

之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见 Spring基于注解的缓存配置--EHCache AND OSCache 现在介绍一下如何在基于注解springMVC的web应用中使用注解缓存,其实很简单,就是将springMVC配置文件与缓存注解文件一起声明到context中就OK了. 下面我就来构建一个基于spring注解小型的web应用,这里我使用EHCache来作为缓存方案 jar依赖: ehcache-core-1.7.

2、基于wsgiref模块DIY一个web框架

一 web框架 Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法.web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了.浏览器和服务器的是基于HTTP协议进行通信的.也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率. 二 wsgiref模块 最简单的Web

缓存初解(三)---Spring3.0基于注解的缓存配置+Ehcache和OScache

本文将构建一个普通工程来说明spring注解缓存的使用方式,关于如何在web应用中使用注解缓存,请参见: Spring基于注解的缓存配置--web应用实例 一.简介 在spring的modules包中提供对许多第三方缓存方案的支持,包括: EHCache OSCache(OpenSymphony) JCS GigaSpaces JBoss Cache 等等. 将这些第三方缓存方案配置在spring中很简单,网上有许多介绍,这里只重点介绍如何配置基于注解的缓存配置. 本文将通过例举EHCache和

NGINX安全防护之基于ngx_lua的web应用防火墙

NGINX安全防护 ngx_lua_waf安装说明文档 作者github地址: https://github.com/loveshell/ngx_lua_waf 转自作者说明文档: ngx_lua_waf是我一个基于ngx_lua的web应用防火墙. 代码很简单,开发初衷主要是使用简单,高性能和轻量级. 现在开源出来.其中包含我们的过滤规则.如果大家有什么建议和想fa,欢迎和我一起完善.   用途: 用于过滤post,get,cookie方式常见的web攻击 防止sql注入,本地包含,部分溢出,

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理 通常我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做.至于4层负载均衡和7层负载均衡的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6137881.html.然而Nginx从1.9.0版本开始,新增加了一个stream模块,用来实现四层协

Tomcat服务器本地的搭建,以及在 IDEA软件下的配置,以及项目的测试运行(基于supermvc框架下的web)

一.声明 使用了基于springmvc的supermvc的web框架.实习公司的框架. 二.tomact的下载与安装 1选择适合自己电脑配置的jdk和jre版本(截图来自tomcat的官方网站http://tomcat.apache.org/whichversion.html) 我的电脑是jAVA版本是8,所以我可以选择任意版本的Apache Tomcat version. PS:如果你问我,java版本怎么看.(ー?ー|||)(1)在命令行中输入java -version (2)在高级系统设置

Web应用防火墙云WAF详细介绍

Web应用防火墙,或叫Web应用防护系统(也称为:网站应用级入侵防御系统.英文:Web Application Firewall,简称: WAF).利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品. 一.WAF产生的背景: 过去企业通常会采用防火墙,作为安全保障的第一道防线:当时的防火墙只是在第三层(网络层)有效的阻断一些数据包:而随着web应用的功能越来越丰富的时候,Web服务器因为其强大的计算能力,处理性能,蕴含

基于Corosync和Pacemaker实现Web服务的高可用

Corosync+Pacemaker+iscsi+Httpd实现web服务的高可用 一.软件介绍 Corosync实现的是membership和可靠组通信协议 Pacemaker则基于Corosync/Linux-HA实现服务的管理 Corosync包括如下组件:   Totem  protocol   EVS   CPG   CFG   Quorum Extended Virtual  Synchrony算法(EVS)提供两个功能:   组成员列表的同步:   组消息的可靠组播. Pacema

一个配置web.xml的编程方法

使用编程方法针对任何java/j2ee配置web.xml Introduction本文介绍了Java和J2EE项目使用任何一种编程方法的web.xml配置 Background作为一种传统的方法,Java和J2EE的Web应用中的任何servlet上下文和其他监听器的配置都是在web.xml文件中配置的.与此相反,Servlet 3引言旨在提供配置web.xml的条目的实用方法. 任何Servlet 3基于Web应用可以实现一个servletcontainerinitializer接口,该接口将