1、简介

Web应用防火墙(Web Application Firewall, WAF),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击(Cross Site Scripting  xss)、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC(挑战黑洞)攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。

本文主要是通过春哥的开源框架openresty来实现WAF;

参考:https://github.com/openresty

2、架构

整体架构:春哥的openresty开源框架(该框架集成了nginx、lua、lua-nginx-module等模块),推荐使用该框架;

如果想使用原生的nginx、lua来搭建waf,请参阅  nginx lua lua-nginx-module构建web应用防火墙(waf)

3、实现功能

支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。
    支持URL白名单,将不需要过滤的URL进行定义。
    支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
    支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。
    支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。
    支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。
    支持URL参数过滤,原理同上。
    支持日志记录,将所有拒绝的操作,记录到日志中去。
    日志记录为JSON格式,便于日志分析,例如使用ELKStack进行攻击日志收集、存储、搜索和展示。

4、安装包下载

提供了各种版本openresty,点击链接,去下载适合版本。

openresty-1.13.6.2.tar.gz
5、安装openresty

创建安装包目录并将下载的安装包上传至该目录(也可以直接通过wget命令直接下载)

mkdir -p /app/openresty/install
    cd /app/openresty/install/

解压 tar zxvf openresty-1.13.6.2.tar.gz

cd openresty-1.13.6.2

安装基本包

yum install -y readline-devel pcre-devel openssl-devel gcc gcc-c++ perl.x86_64

配置环境

./configure --prefix=/usr/local/openresty --with-luajit --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-pcre --with-pcre-jit --with-file-aio --with-http_dav_module

编译 gmake

安装 gmake install

修改nginx.conf,测试是否安装成功

编辑nginx.conf

vi nginx.conf

server {
        location /hello {
                default_type text/html;
                content_by_lua_block {
                    ngx.say("HelloWorld")
                }
            }
    }

启动nginx 一次执行下面代码段

cd ../sbin
    ps -ef|grep nginx
    ./nginx -t
    ./nginx
    ps -ef|grep nginx

关闭防火墙或者开放虚拟机防火墙端口,

这里为了方便,直接就关闭防火墙了,生产中必须采用开放防火墙端口的方式

systemctl stop firewalld

systemctl status firewalld

浏览器访问测试 http://10.10.91.23/hello

6、部署waf

下载waf包  https://github.com/unixhot/waf

可以使用wget,也可以下载到本地,让后上传到虚拟机

解压后,将waf复制到 /usr/local/openresty/nginx/conf/

cp -r waf /usr/local/openresty/nginx/conf/

修改Nginx的配置文件,加入以下配置。注意路径,同时WAF日志默认存放在/tmp/日期_waf.log

/usr/local/openresty/nginx/conf

vi nginx.conf

#WAF
        lua_shared_dict limit 50m;
        lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
        init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua";
        access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";

修改waf中的配置信息

cd /waf

vi config.lua

重启nginx即可测试
---------------------
作者:ccx_jy
来源:CSDN
原文:https://blog.csdn.net/chuanxincui/article/details/86089763
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/wuchangsoft/p/10950739.html

开源框架openresty+nginx 实现web应用防火墙(WAF)相关推荐

  1. [等保测评]Web应用防火墙WAF产品汇总

    WAF是Web应用防火墙(Web Application Firewall)的简称,WAF是当前对Web业务进行防护的一种比较常用且有效的手段之一,目前市场上的WAF产品也相对比较成熟,为了提高Web ...

  2. 腾讯云web应用防火墙(WAF)防护设置步骤介绍

    腾讯云web应用防火墙(WAF)防护设置步骤介绍 最近有很多朋友问腾讯云web应用防火墙(WAF)防护设置怎么操作?小编赵一八笔记特意从腾讯云官网整理相关资料,希望能够帮到大家. 对需要防护网站点击& ...

  3. 什么是 Web 应用防火墙(WAF)?

    时下,网络攻击和针对网站的攻击与日俱增.同时,在我们的日常生活中,安全的重要性也迅速提升.因此,保证在线上世界的安全变得越来越重要.更重要的是,保护你的网站和所存储的数据的安全.所以,我们将介绍什么是 ...

  4. [转]Web应用防火墙WAF详解

    通过nginx配置文件抵御攻击 0x00 前言 大家好,我们是OpenCDN团队的Twwy.这次我们来讲讲如何通过简单的配置文件来实现nginx防御攻击的效果. 其实很多时候,各种防攻击的思路我们都明 ...

  5. Web应用防火墙WAF简介

    本文将对Web应用防火墙(WAF)做一个简单介绍,主要会讨论下面几个主题: WAF预防的攻击类型 WAF部署方式 WAF安全模式 开放Web应用安全项目(OWASP) WAF和DDos WAF测试 W ...

  6. 网络防御系统之WEB应用防火墙-WAF概念和功能介绍

    一.WAF产生的背景 随着B/S架构的广泛应用,WEB应用的功能越来越丰富,也就意味着蕴含着越来越有价值的信息.于是WEB应用成为了黑客主要的攻击目标(第五层应用层).传统防火墙无法解析HTTP应用层 ...

  7. Web应用防火墙(WAF:Web Application Firewall)简介

    了解WAF 1.1 什么是WAF Web应用防火墙(Web Application Firewall, 简称 WAF)基于云安全大数据能力,用于防御SQL注入.XSS跨站脚本.常见Web服务器插件漏洞 ...

  8. java开源框架有哪些_java web开发框架有哪些

    1 java web开发框架有哪些 java,互联网发展出来的产物,如今变成了屈指可数的几大编程语言之一,他的未来是不可限量的.因此很多人都想要学会这门技术,希望在以后能有他的一席之地.那么下面小编给 ...

  9. JS开源框架Stimulus:让web应用在移动端达到原生体验!

    很多开发者一年来通过Basecamp写了很多JavaScript,但是并没有用它来创建现代意义上的"JavaScript应用程序".所有的应用程序都以服务器端呈现的HTML为核心, ...

最新文章

  1. 使用cocoapods时,import 找不到头文件。
  2. 手机微站webapp
  3. tomcat 配置方法
  4. python面向对象的三个基本特征 含义和作用简介_面向对象语言的三个基本特征各自特点及优势...
  5. mysql把latin1编码的中文转成gbk(或utf8)编码
  6. 这个超逼真的虚拟小姐姐,可能是腾讯游戏未来的样子
  7. autocad哪个版本最好用_分享家用游戏用Win10哪个版本最好最稳定(个人见解篇)...
  8. mysql replication-rewrite-db_多主一从mysql replication同步表的大胆尝试.
  9. spring 属性注入
  10. 浅谈管道模型(Pipeline)
  11. Verilog 7人投票表决器
  12. 中国数字音乐——版权问题之公司分析
  13. Adobe Flash Player已不再受支持 解决方案
  14. android 连接tftp 服务器
  15. iOS中百度地图API的总结
  16. 如何搭建高质量、高效率的前端工程体系--页面结构继承
  17. 2018山东冬令营:还钱问题,UPC(5700) 还钱问题
  18. 定时执行mysql数据库任务方案
  19. 酷我音乐linux版本,酷我音乐盒的 Gtk/Linux 实现 – v2.5 版本发布
  20. 关于CPU寄存器的那些事儿(3)——通用寄存器

热门文章

  1. tcp协议的端口状态
  2. c# 静态构造函数与私有构造函数共存
  3. 使用POI生成Excel文件,可以自动调整excel列宽
  4. Check the difficulty of problems - poj 2151 (概率+DP)
  5. YUI3学习笔记 ( 8 )
  6. 同一解决方案内的多个项目之间如何引用?
  7. Wizard的动态添加
  8. oracle domnode释放,关于释放引用DOM对象内存的问题
  9. MapReduce之二次排序
  10. Linux脚本5秒后启动程序,嵌入式Linux启动时间优化的秘密之四-启动脚本