基于nginx+lua的web应用防火墙系统及其实现方法

文档序号:9474293阅读:480来源:国知局
基于nginx+lua的web应用防火墙系统及其实现方法
【技术领域】
[0001]本发明涉及网络安全入侵检测领域,特别是一种基于nginx+lua的web应用防火墙系统及其实现方法。
【背景技术】
[0002]Web应用防火墙(waf)的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击。目前世界第一大web服务器非apache莫属,它的发展时间很长。也正是因为这个原因,目前市面主流web防火墙一般使用apache+modsecurity的技术方案。modsecurity作为一个开源的项目可以作为Apache Web服务器的一个模块或单独的应用程序来运。
[0003]但是,apache+modsecurity的模式存在以下几个问题:
首先,apache web服务器性能存在瓶颈。Apache服务器出现的时间太长,在它兴起的年代,互联网的规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的web服务器。在apache服务器上,如果有数以万计的并发http请求同时访问,就会导致服务器上消耗大量的内存,操作系统内核对成百上千的Apache进程做进程间切换也会消耗大量的CPU资源,并导致http请求的平均响应速度降低,这些都决定了它不可能成为高性能的web服务器,在一些响应业务性能需求极高的网站,若web应用防火墙性能不够高,则很有可能影响受防护站点的业务。
[0004]其次,modsecurity提供的规则语法不够灵活,导致规则的配置较为复杂,且扩展性不高,若要实现某些需求则需要改动核心引擎代码。比如modsecurity语法中有一种最常用的设置规则的配置接口叫
SecRule
Syntax: SecRule VARIABLES OPERATOR [ACT1NS]
Example Usage: SecRule REQUEST—URI 〃 aa.jpg〃,,phase: 1,log,deny,id: 1〃
该这句话表明,当请求的URL参数中有aa.jpg时,则触发规则指定的动作,也就是deny,阻断请求。
[0005]Example Usage: SecRule REQUEST_HEADERS: Referer〃χχχ.com〃〃phase:1, log, deny, id: 2〃
这句话表明,当请求头中的Referer中包含xxx.com时,则触发规则制定的动作。
[0006]如果现在有某种防盗链需求需要在同时满足Referer的值为xxx.com,并且REQUEST_URI含有aa.jpg的情景下,才触发规则。使用modsecuriy默认语法的话,只能使用规则链将这两条规则组成一个规则链,把第一条规则作为第二条规则的一个条件。但是如果需要实现更复杂的逻辑,比如当url中含aa.jpg, refer需要为xxx.com则才触发规贝1J,而当url中含有bbb.jpg时,refer又需要为yyy.com时才触发规则,又比如当源ip为地址为192.168.1.*时,则以上规则又都不触发,当请求源ip地址为192.168.*.*时,只触发第一条,等等。这些个性化的定制,在modsucrity默认语法中就很难通过配置实现。
[0007]另外modsecurity天生作为apache的一个模块,其所有代码设计均是基于apache,所以能跟apache很好的配合工作。但同时也带来了一个问题就是可移植性不高,将modsecurity移植到其他web服务器会有很多不兼容问题。
[0008]不难发现,nginx天生为性能而生,在性能上做到极致。它使用基于事件驱动的架构能够处理百万级别的tcp连接,高度模块化的设计和自由的许可证使得扩展nginx的第三方模块层出不穷,而且优秀的设计带来了极佳的稳定性,因此其作为web服务器被广泛应用到大流量网站上,包括腾讯,新浪,网易淘宝等访问量巨大的网站。使用nginx作为web应用防火墙的代理服务,从根本上解决web服务器的性能瓶颈问题。并且高度模块化的设计,使得模块的开发非常方便。同时nginx还是一个跨平台的web服务器,可以运行在linux, freebsd, solaris, aix, mac os, windows等操作系统上,并且他还可以使用当前操作系统特有的一些高效api来提高自己的性能。例如对于处理高效处理大规模并发连接,它支持 Iinux 上的 epoll, solaris 上的 event ports 和 freebsd 上的 kqueue 等。
[0009]同时,Iua语言以小巧轻便著称,并且在目前所有脚本引擎中,Iua的速度是最快的。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行,具备了良好的跨平台性。

【发明内容】

[0010]有鉴于此,本发明的目的是提出一种基于nginx+lua的web应用防火墙系统及其实现方法,能够高效并且灵活地防御web应用攻击。
[0011]本发明的系统采用以下方案实现:一种基于nginx+lua的web应用防火墙系统,包括nginx http代理层以及业务层;所述的nginx http代理层包括协议解析模块、连接管理模块、模块调度模块以及内存管理模块;所述的业务层包括授权管理模块、Iua规则引擎模块、入库管理模块、配置管理模块以及nginx接口管理模块;所述的nginx http代理层与所述的业务层通过所述的nginx接口管理模块相连。
[0012]本发明的方法采用以下方案实现:一种基于上文系统所述的基于nginx+lua的web应用防火墙系统的实现方法,具体包括以下步骤:
步骤SI:nginx主程序初始化;
步骤S2:判断是否开启web应用防火墙,若是,则进入步骤S4 ;否则,进入步骤S3 ; 步骤S3:nginx正常启动,不启用web应用防火墙,所有请求不经过web应用防火墙流程;
步骤S4:初始化Iua环境;
步骤S5:执行Iua文件的init,进行规则的初始化设置;
步骤S6:顺序初始化nginx其他模块;
步骤S7:正常监听客户端请求,有连接事件则解析当前的连接的数据,并进入步骤S8 ; 步骤S8:根据当前请求数据设置变量值;
步骤S9:调用Iua进行规则检测;
步骤SlO:根据Iua返回值判断当前请求是触发规则,若是,则进入步骤Sll ;若否,则进入步骤S12 ;
步骤Sll:根据配置进行拦截或其他对应处理,返回步骤S7 ; 步骤S12:正常调用其他模块完成代理服务器功能,返回步骤S7。
[0013]进一步地,所述步骤SI具体包括:配置解析、网络设置以及调用自定义的第三方模块 ngx_waf_handler0
[0014]进一步地,所述步骤S4具体包括注册可以供Iua调用的接口函数、加载Iua文件。
[0015]与现有技术相比,本发明可以很好的对防护规则进行扩展,并具有非常高的性能,能够高效并且灵活地防御web应用攻击。
【附图说明】
[0016]图1为本发明的系统框图。
[0017]图2为本发明的方法流程示意图。
【具体实施方式】
[0018]下面结合附图及实施例对本发明做进一步说明。
[
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1