CN109905410A - Web应用安全防护方法与Web应用防火墙*** - Google Patents
Web应用安全防护方法与Web应用防火墙*** Download PDFInfo
- Publication number
- CN109905410A CN109905410A CN201910308063.6A CN201910308063A CN109905410A CN 109905410 A CN109905410 A CN 109905410A CN 201910308063 A CN201910308063 A CN 201910308063A CN 109905410 A CN109905410 A CN 109905410A
- Authority
- CN
- China
- Prior art keywords
- access request
- request
- service line
- server
- waf
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供的Web应用安全防护方法与WAF***中,WAF***包括Web服务器与nginx服务器;Web服务器采用python的tornado框架搭建;利用Web服务器,检测nginx服务器传送来的访问请求是否为异常请求,得到检测结果;利用Web服务器向nginx服务器中lua脚本发送检测结果;利用nginx服务器读取传入lua脚本的检测结果,以确定访问请求是否为异常请求;若访问请求为异常请求,则利用lua脚本对访问请求进行拦截处理;否则,利用nginx服务器将访问请求转发至相应的业务线源站。该WAF***在实现Web应用安全防护时,无需占用过多的服务器资源,降低了WAF***对服务器资源的占用率。
Description
技术领域
本发明涉及网络应用安全技术领域,更具体的说,涉及Web应用安全防护方法与Web应用防火墙***。
背景技术
WAF(Web应用防火墙,Web Application Firewall)***,主要用于实现对Web特有入侵方式的加强防护,如DDOS防护、SQL注入、XML注入、XSS等。
现有的WAF***占用内存较大,解析请求会消耗较多的时间,对延时较敏感的业务影响较大。尤其是在处理大量的实时请求时,出于保证请求检测的准确性与实时性的考虑,通常需要耗费大量的服务器资源来提供支撑,导致WAF***对服务器资源的占用率较高,进而影响其他业务对服务器资源的正常使用。
因此,目前迫切需要一种切实有效的技术方案,以降低WAF***对服务器资源的占用率。
发明内容
有鉴于此,本发明提供了一种Web应用安全防护方法与Web应用防火墙***,以解决现有WAF***对服务器资源占用率较高的技术问题。
为实现上述目的,本发明提供如下技术方案:
一种Web应用安全防护方法,应用于Web应用防火墙WAF***,所述WAF***至少包括Web服务器与nginx服务器;所述Web服务器是采用python中的tornado框架搭建的;所述方法包括:
利用所述Web服务器,检测由所述nginx服务器传送来的访问请求是否为异常请求,得到检测结果;
利用所述Web服务器,向所述nginx服务器中预置的lua脚本发送所述检测结果;
利用所述nginx服务器读取传入所述lua脚本的所述检测结果,以确定所述访问请求是否为异常请求;
当所述访问请求为异常请求时,利用所述预置的lua脚本,对所述访问请求进行拦截处理;
当所述访问请求不为异常请求时,利用所述nginx服务器,将所述访问请求转发至相应的业务线源站。
优选的,所述利用所述Web服务器,检测由所述nginx服务器传送来的访问请求是否为异常请求,得到检测结果包括:
利用所述Web服务器,检测由所述nginx服务器传送来的访问请求是否与所述Web服务器中预置的白名单相匹配;
若所述访问请求与所述白名单相匹配,则生成所述访问请求不为异常请求的检测结果;
若所述访问请求与所述白名单不匹配,则检测所述访问请求是否与所述Web服务器中预置的攻击模型相匹配;
若所述访问请求与所述攻击模型相匹配,则生成所述访问请求为异常请求的检测结果;
若所述访问请求与所述攻击模型不匹配,则生成所述访问请求不为异常请求的检测结果。
优选的,所述方法还包括:
利用所述Web服务器,对预设时间周期内接收到的访问请求进行统计分析,获取正常请求的参数格式;
基于所述正常请求的参数格式,更新所述白名单;
将所述预设时间周期内接收到的访问请求中,不符合所述正常请求的参数格式的访问请求,与所述攻击模型进行匹配;
当所述不符合所述正常请求的参数格式的访问请求,与所述攻击模型不匹配时,输出所述不符合所述正常请求的参数格式的访问请求,以供人工复检;
根据所述人工复检的结果,更新所述攻击模型。
优选的,所述方法还包括:
获取需要开启WAF服务的第一业务线的域名;
将所述lua脚本与所述第一业务线的域名相关联;
为所述第一业务线加载所述lua脚本,以开启所述第一业务线的WAF服务。
优选的,所述方法还包括:
当检测到第二业务线遭受到攻击时,为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务;
当检测到所述第二业务线不再遭受攻击时,终止所述第二业务线的WAF服务。
优选的,所述当检测到第二业务线遭受到攻击时,为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务包括:
当检测到第二业务线遭受到攻击时,获取攻击者的ip地址;
将所述攻击者的ip地址,添加到所述lua脚本的ip黑名单中;
为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务,拒绝来自所述攻击者的ip地址的访问请求。
一种Web应用防火墙WAF***,所述WAF***至少包括Web服务器与nginx服务器;所述Web服务器是采用python中的tornado框架搭建的;
所述Web服务器,用于检测由所述nginx服务器传送来的访问请求是否为异常请求,得到检测结果,并向所述nginx服务器中预置的lua脚本发送所述检测结果;
所述nginx服务器,用于利用nginx服务器读取传入所述lua脚本的所述检测结果,以确定所述访问请求是否为异常请求;当所述访问请求为异常请求时,利用所述预置的lua脚本,对所述访问请求进行拦截处理;当所述访问请求不为异常请求时,将所述访问请求转发至相应的业务线源站。
优选的,所述Web服务器包括:
白名单匹配单元,用于检测由所述nginx服务器传送来的访问请求是否与所述Web服务器中预置的白名单相匹配;若所述访问请求与所述白名单相匹配,则生成所述访问请求不为异常请求的检测结果;
攻击模型匹配单元,用于若所述访问请求与所述白名单不匹配,则检测所述访问请求是否与所述Web服务器中预置的攻击模型相匹配;若所述访问请求与所述攻击模型相匹配,则生成所述访问请求为异常请求的检测结果;若所述访问请求与所述攻击模型不匹配,则生成所述访问请求不为异常请求的检测结果。
优选的,所述nginx服务器包括:
主动防护单元,用于获取需要开启WAF服务的第一业务线的域名;将所述lua脚本与所述第一业务线的域名相关联;为所述第一业务线加载所述lua脚本,以开启所述第一业务线的WAF服务。
优选的,所述nginx服务器还包括:
被动防护单元,用于当检测到第二业务线遭受到攻击时,为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务;当检测到所述第二业务线不再遭受攻击时,终止所述第二业务线的WAF服务。
从上述的技术方案可以看出,本发明提供的Web应用安全防护方法与Web应用防火墙***中,该WAF***至少包括Web服务器与nginx服务器;Web服务器采用python中的tornado框架搭建。基于该WAF***,利用Web服务器检测由nginx服务器传送来的访问请求是否为异常请求,得到检测结果;利用Web服务器向nginx服务器中预置的lua脚本发送检测结果;利用nginx服务器读取传入lua脚本的检测结果,以确定访问请求是否为异常请求;当访问请求为异常请求时,利用预置的lua脚本对访问请求进行拦截处理;当访问请求不为异常请求时,利用nginx服务器将访问请求转发至相应的业务线源站。该WAF***利用python解析请求,使用lua脚本,依托于nginx服务器部署,在实现Web应用安全防护的同时,无需占用过多的服务器资源,降低了WAF***对服务器资源的占用率,且更易于后期更新和维护。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的Web应用安全防护方法的一种流程图;
图2为本发明实施例提供的Web应用安全防护方法的另一种流程图;
图3为本发明实施例提供的白名单与攻击模型的更新过程的流程图;
图4为本发明实施例提供的白名单与攻击模型的更新过程的示意图;
图5为本发明实施例提供的Web应用安全防护方法的又一种流程图;
图6为本发明实施例提供的Web应用安全防护方法的再一种流程图;
图7为本发明实施例提供的Web应用安全防护方法的***流程示例图;
图8为本发明实施例提供的WAF***的一种结构示意图;
图9为本发明实施例提供的WAF***的另一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明针对现有WAF(Web应用防火墙,Web Application Firewall)***对服务器资源占用率较高的情况,提供了基于lua-nginx的轻量级的WAF***,以及适用于该WAF***的Web应用安全防护方法。
请参阅图1,图1为本发明实施例提供的Web应用安全防护方法的一种流程图。
本发明提供的WAF***中至少包括Web服务器与nginx服务器;其中,Web服务器是采用python中的tornado框架搭建出来的。
如图1所示,本实施例的Web应用安全防护方法可包括:
S101:利用Web服务器,检测由nginx服务器传送来的访问请求是否为异常请求,得到检测结果。
Web服务器所具备的功能可包括:接收访问请求、处理访问请求以及判断访问请求是否为异常请求等。
Web服务器在检测访问请求是否为异常请求时,可基于预置的WAF规则库,来对接收到的访问请求进行异常检测。具体地,在使用Web服务器时预先编译好了WAF规则库中的正则表达式,其中也可包括适用于字符串匹配的其他规则,来提高整体的匹配效率。
WAF规则库可采用json文件的形式预置在Web服务器中,在后续也可以不断进行迭代更新。WAF规则库对应的json文件可命名为rule.js,当然也可命名为其他名称,在此不作具体限定。
Web服务器接收到由nginx服务器传送来的访问请求后,可提取访问请求中目标参数的值,并将目标参数的值与WAF规则库中的Web漏洞的正则表达式进行匹配,以确定由nginx服务器传送来的访问请求是否为异常请求。其中,目标参数是指由nginx服务器传送来的访问请求中用于确定访问请求是否为异常请求的相关参数,访问请求的目标参数可包括uri、body、arguments、headers等,这些目标参数均为Nginx的请求中的字段。
在不断接收访问请求的过程中,在确定出正常请求与异常请求之后,还可以将正常请求与异常请求分别保存在Web服务器中,以便后续统计分析使用。
如果匹配成功,则意味着在匹配过程中发现了攻击,则确定访问请求为异常请求,此时,Web服务器可以为其生成一个函数返回值“check-status=bad”来作为检测结果。
S102:利用Web服务器,向nginx服务器中预置的lua脚本发送检测结果。
其中,Web服务器具体是向nginx服务器中预置的lua脚本返回相应的检测结果。
nginx服务器中预置的lua脚本,是采用lua语言编写的,具体地,lua脚本是采用lua-nginx-module编写的。其中,lua-nginx-module是一个结合了lua和nginx的开源模板,可以理解为函数库,它提供了很多接口以供调用。
一示例中,Web服务器会向nginx服务器发送处理请求,可在该处理请求中携带检测结果。
S103:利用nginx服务器读取传入lua脚本的检测结果,以确定访问请求是否为异常请求。
lua脚本可用于接收Web服务器发送来的检测结果(如函数返回值“check-status=bad”),然后,nginx服务器读取传入lua脚本的检测结果,便可确定访问请求是否为异常请求。此外,在lua脚本中也可以设置ip黑名单,以对黑名单中的ip地址发送来的访问请求进行拦截。
S104:当访问请求为异常请求时,利用预置的lua脚本,对访问请求进行拦截处理。
在lua脚本接收到Web服务器向nginx服务器发送处理请求后,如果nginx服务器从传入lua脚本的处理请求中读取到函数返回值为“check-status=bad”的检测结果,则确定该访问请求为异常请求,并对该访问请求进行拦截处理,阻止该访问请求到达相应的业务线源站。
进一步地,在确定该访问请求为异常请求后,还可通过nginx服务器向该访问请求的发送端返回错误码“403”。
S105:当访问请求不为异常请求时,利用nginx服务器,将访问请求转发至相应的业务线源站。
如果利用nginx服务器确定出访问请求不是异常请求时,则通过nginx服务器将访问请求转发至相应的业务线源站,由业务线源站执行相应的请求处理流程。
本实施例提供的Web应用安全防护方法,应用于WAF***,该WAF***至少包括Web服务器与nginx服务器;Web服务器采用python中的tornado框架搭建。基于该WAF***,利用Web服务器检测由nginx服务器传送来的访问请求是否为异常请求,得到检测结果;利用Web服务器向nginx服务器中预置的lua脚本发送检测结果;利用nginx服务器读取传入lua脚本的检测结果,以确定访问请求是否为异常请求;当访问请求为异常请求时,利用预置的lua脚本对访问请求进行拦截处理;当访问请求不为异常请求时,利用nginx服务器将访问请求转发至相应的业务线源站。该WAF***利用python解析请求,使用lua-nginx-module,依托于nginx服务器部署,在实现Web应用安全防护的同时,无需占用过多的服务器资源,降低了WAF***对服务器资源的占用率,且更易于后期更新和维护。
本发明前期主要是参照开源项目和依据近期频发漏洞创建WAF规则库,来对访问请求进行检测,并且定期更新。后期主要是创建白名单,并采用机器学习算法,根据识别出的异常请求,训练出攻击模型,来对访问请求进行检测,以提高检测准确率。
请参阅图2,图2为本发明实施例提供的Web应用安全防护方法的另一种流程图。
如图2所示,本实施例的Web应用安全防护方法包括:
S201:利用Web服务器,接收由nginx服务器传送来的访问请求。
nginx服务器在接收到的公网发送的Internet请求后,可通过lua脚本转发访问请求到Web服务器。
S202:判断访问请求是否与白名单相匹配,若是,则执行步骤S205;若否,则执行步骤S203。
利用Web服务器,检测由nginx服务器传送来的访问请求是否与Web服务器中预置的白名单相匹配。
通过分析Web服务器记录下来大量的正常请求,利用统计方法得出大部分正常请求的参数格式特征,基于正常请求的参数格式特征,便可生成白名单,并预置在Web服务器中。
其中,白名单也可采用正则形式来表达。白名单匹配的原则和前面的WAF规则库的匹配原则相类似,在此不再赘述。
S203:判断访问请求是否与攻击模型相匹配,若是,则执行步骤S204;若否,则执行步骤S205。
若访问请求与白名单不匹配,则检测访问请求是否与Web服务器中预置的攻击模型相匹配。
其中,对异常请求的参数信息进行分析,利用机器学习算法HMM(隐马尔可夫模型,Hidden Markov Model)可建立起基于uri、body、arguments、header等请求参数的攻击模型,可用于对不符合白名单的访问请求执行进一步检测,以减少误判机率。该攻击模型可预置在Web服务器中。进一步地,该攻击模型可具体为正则化的攻击模型。
S204:生成访问请求为异常请求的检测结果。
若访问请求与攻击模型相匹配,则生成访问请求为异常请求的检测结果。
S205:生成访问请求不为异常请求的检测结果。
其中,若访问请求与白名单相匹配,则会生成访问请求不为异常请求的检测结果。在这里,采用白名单模式,可直接匹配出与白名单相匹配的访问请求,也即不属于异常请求的访问请求,无需进行模型匹配,从而能够提高访问请求的检测效率。
另一方面,若访问请求与攻击模型不匹配,则同样也会生成访问请求不为异常请求的检测结果。
S206:利用Web服务器,向nginx服务器发送检测结果。
具体地,利用Web服务器,向nginx服务器中预置的lua脚本发送检测结果。
S207:判断访问请求是否为异常请求,若是,则执行步骤S208;若否,则执行步骤S209。
利用nginx服务器读取传入lua脚本的检测结果,以确定访问请求是否为异常请求。
S208:利用预置的lua脚本,对访问请求进行拦截处理。
当访问请求为异常请求时,利用预置的lua脚本,对访问请求进行拦截处理。
S209:利用nginx服务器,将访问请求转发至相应的业务线源站。
当访问请求不为异常请求时,利用nginx服务器,将访问请求转发至相应的业务线源站。
单纯使用白名单会增加WAF被绕过的几率,而单纯使用机器模型(如攻击模型)又会增加WAF的处理时间,增加请求处理时延。所以,本发明将这两种模式相结合,利用白名单和攻击模型双重保障,可以在很大程度上克服现有WAF的痛点,大符提升WAF处理访问请求的效率和准确率。
本实施例提供的Web应用安全防护方法,利用Web服务器,检测由nginx服务器传送来的访问请求是否与白名单相匹配;若访问请求与白名单相匹配,则生成访问请求不为异常请求的检测结果;若访问请求与白名单不匹配,则检测访问请求是否与攻击模型相匹配;若访问请求与攻击模型相匹配,则生成访问请求为异常请求的检测结果;若访问请求与攻击模型不匹配,则生成访问请求不为异常请求的检测结果,利用白名单和攻击模型双重保障,大符提升了WAF处理访问请求的效率和准确率,提高了Web应用安全防护的可靠性。
相应的,本发明实施例也提供了白名单与攻击模型的更新方案。
请参阅图3~4,图3为本发明实施例提供的白名单与攻击模型的更新过程的流程图;图4为本发明实施例提供的白名单与攻击模型的更新过程的示意图。
如图3~4所示,本实施例的白名单与攻击模型的更新过程包括:
S301:利用Web服务器,对预设时间周期内接收到的访问请求进行统计分析,获取正常请求的参数格式。
S302:基于正常请求的参数格式,更新白名单。
S303:将预设时间周期内接收到的访问请求中,不符合正常请求的参数格式的访问请求,与攻击模型进行匹配。
S304:当不符合正常请求的参数格式的访问请求,与攻击模型不匹配时,输出不符合正常请求的参数格式的访问请求,以供人工复检。
S305:根据人工复检的结果,更新攻击模型。
其中,在人工复检后,可先获取人工复检的结果,再根据人工复检的结果,来更新攻击模型。
在步骤S305执行结束后,可继续执行步骤S301,使得整个更新过程形成一个循环迭代过程。
本实施例提供的Web应用安全防护方法,根据Web服务器接收到的访问请求,不断地反复进行迭代分析,根据分析结果,不断地更新白名单与攻击模型,持续得到新的白名单和新的攻击模型,如此反复迭代处理下来,能够使得WAF处理访问请求的准确性得到显著提升。
对于非轻量级的WAF***,由于耗费服务器资源较高,难以为各个业务线分别实施定制化的WAF服务;而基于轻量级的WAF***,便可以充分满足各个业务线定制化WAF服务的需求,实现了业务线的定制化服务。
请参阅图5,图5为本发明实施例提供的Web应用安全防护方法的又一种流程图。
本实施例的Web应用安全防护方法,是在前述实施例的基础上提出的,改进之处在于,本实施例是针对单个业务线实施的Web应用安全防护方法。
如图5所示,本实施例的Web应用安全防护方法包括:
S501:获取需要开启WAF服务的第一业务线的域名。
其中,需要开启WAF服务的第一业务线,可以是指当前所有业务线中需要开启WAF服务的任一业务线。
需要开启WAF服务的第一业务线的域名,可以是业务线根据自身的WAF服务需求主动提供出来的自身的域名,也可以是企业内部安全团队通过评估发现的漏洞较多的业务线的域名。
S502:将lua脚本与第一业务线的域名相关联。
lua脚本可命名为“security.conf”,当然也可以取其他名称。
通常情况下,WAF服务只需要一个lua脚本,所有域名对应的都是同一个脚本。但如果业务线有其他定制化的需求,则可以修改lua脚本,使业务线与修改后的lua脚本相匹配。
其中,将lua脚本与第一业务线的域名相关联时,具体可以是将lua脚本嵌入到nginx配置文件中,并在nginx配置文件中需要开启WAF服务的第一业务线的域名中添加代码“include security.conf”即可。
S503:为第一业务线加载lua脚本,以开启第一业务线的WAF服务。
通过重启nginx可以让第一业务线的lua脚本生效,从而开启第一业务线的WAF服务。
其中,nginx的重启可采用nginx reload命令来执行。采用nginx reload命令来重启nginx,只会重新加载相应的lua脚本,而对已经运行的nginx服务不会造成影响,以保证已经运行的nginx服务不被中断。
本实施例提供的Web应用安全防护方法,获取需要开启WAF服务的第一业务线的域名,将lua脚本与第一业务线的域名相关联,并为第一业务线加载lua脚本,以主动开启第一业务线的WAF服务,从而实现了业务线的定制化服务与主动式防护,并可使WAF***无感知的服务于业务线,从而提高了WAF服务的针对性与准确性。
请参阅图6,图6为本发明实施例提供的Web应用安全防护方法的再一种流程图。
如图6所示,本实施例的Web应用安全防护方法包括:
S601:当检测到第二业务线遭受到攻击时,为第二业务线加载lua脚本,以开启第二业务线的WAF服务。
其中,第二业务线为当前所有业务线中的任一业务线,如果某个业务线突然遭受攻击,就可以立刻为其加载lua脚本,将其纳入到WAF保护之下。
一示例中,步骤S601可包括:
A1、当检测到第二业务线遭受到攻击时,获取攻击者的ip地址;
A2、将攻击者的ip地址,添加到lua脚本的ip黑名单中;
A3、为第二业务线加载lua脚本,以开启第二业务线的WAF服务,拒绝来自攻击者的ip地址的访问请求。
当某个业务线遭受攻击后,通过在lua脚本中设置ip黑名单,可以直接拒绝来自攻击者ip的访问请求。
此外,根据业务线遭受攻击的情况,如果现有WAF规则不能阻止其攻击,则还可以在WAF规则库(rule.js)中添加该攻击对应的新规则。新规则可以是通过分析该攻击而提炼出来的正则表达式。
S602:当检测到第二业务线不再遭受攻击时,终止第二业务线的WAF服务。
一示例中,步骤S602可具体为:检测到第二业务线在预设时长内不再遭受攻击时,终止第二业务线的WAF服务。
本实施例提供的Web应用安全防护方法,在某个业务线突然遭受到攻击的情况下,可以把其自动置于WAF服务的保护模式下,并且马上增加相应的WAF规则来抵御攻击;当该业务线不再遭受到明显攻击时,便可以自动为其移除出WAF服务,从而实现了业务线的被动式防护,并可使WAF***无感知地服务于业务线,进一步提高了WAF服务的定制化水平,不仅不会显著增加业务延时,避免对业务造成影响,而且可以释放相关资源供其他有需要的业务使用。
请参阅图7,图7为本发明实施例提供的Web应用安全防护方法的***流程示例图。
如图7所示,本实施例的Web应用安全防护方法的***流程主要包括:
nginx接收internet请求;
公网向nginx服务器集群发送internet请求,nginx服务器接收来自公网的internet请求。
②、通过lua脚本转发到Web服务器;
nginx服务器,通过预置的lua脚本,将访问请求转发至Web服务器。
③、匹配规则;
Web服务器利用WAF规则库,对接收到的访问请求进行匹配,得到检测结果。
④、Web服务器向lua脚本返回检测结果;
Web服务器将检测结果发送给nginx服务器,向nginx服务器中预置的lua脚本返回检测结果。
⑤、如果步骤④检测出来是攻击,则通过nginx服务器返回错误码403;
如果步骤④检测出来是攻击,则通过nginx服务器向请求发送方的浏览器返回错误码403。
⑥、如果步骤④未检测到攻击,则将请求转发至业务线源站。
如果步骤④未检测到攻击,则将请求转发至业务线源站,业务线源站执行请求的正常处理流程。
本发明提供的Web应用安全防护方法与WAF***,大致可满足以下几个方面的需求:
1)、轻量级。不需要耗费额外的服务器资源,依赖于企业现有的几台服务器即可实现对业务线的定制化服务,且开发代码简洁。
2)、高效性。可同时处理大量请求,并且延时可以忽略不计。
3)、准确性。WAF***对异常请求具有拦截功能,对异常请求的判断准确、误杀较少,不会影响正常业务请求。
本实施例提供的Web应用安全防护方法的***流程,从***的角度充分展现了本发明的WAF***中Web应用安全防护方法的处理流程。该WAF***利用python解析请求,使用lua-nginx-module,依托于nginx服务器部署,在实现Web应用安全防护的同时,无需占用过多的服务器资源,降低了WAF***对服务器资源的占用率,且更易于后期更新和维护。
本发明实施例还提供了Web应用防火墙WAF***,所述WAF***可用于实施本发明实施例提供的Web应用安全防护方法,下文描述的WAF***的技术内容,可与上文描述的Web应用安全防护方法的技术内容相互对应参照。
请参阅图8,图8为本发明实施例提供的WAF***的一种结构示意图。
如图8所示,WAF***至少包括Web服务器100与nginx服务器200;Web服务器100是采用python中的tornado框架搭建的。
Web服务器100,用于检测由nginx服务器200传送来的访问请求是否为异常请求,得到检测结果,并向nginx服务器200中预置的lua脚本发送检测结果;
nginx服务器820,用于利用nginx服务器200读取传入lua脚本的检测结果,以确定访问请求是否为异常请求;当访问请求为异常请求时,利用预置的lua脚本,对访问请求进行拦截处理;当访问请求不为异常请求时,将访问请求转发至相应的业务线源站。
本实施例提供的WAF***,至少包括Web服务器与nginx服务器;Web服务器采用python中的tornado框架搭建。基于该WAF***,利用Web服务器检测由nginx服务器传送来的访问请求是否为异常请求,得到检测结果;利用Web服务器向nginx服务器中预置的lua脚本发送检测结果;利用nginx服务器读取传入lua脚本的检测结果,以确定访问请求是否为异常请求;当访问请求为异常请求时,利用预置的lua脚本对访问请求进行拦截处理;当访问请求不为异常请求时,利用nginx服务器将访问请求转发至相应的业务线源站。该WAF***采用lua脚本,依托于nginx服务器部署,并用python解析请求,在实现Web应用安全防护的同时,无需占用过多的服务器资源,降低了WAF***对服务器资源的占用率,且更易于后期更新和维护。
请参阅图9,图9为本发明实施例提供的WAF***的另一种结构示意图。
如图9所示,WAF***包括前述实施例中的Web服务器100与nginx服务器200。
一示例中,Web服务器100可包括:白名单匹配单元110与攻击模型匹配单元120。
白名单匹配单元110,用于检测由nginx服务器传送来的访问请求是否与Web服务器中预置的白名单相匹配;若访问请求与白名单相匹配,则生成访问请求不为异常请求的检测结果。
攻击模型匹配单元120,用于若访问请求与白名单不匹配,则检测访问请求是否与Web服务器中预置的攻击模型相匹配;若访问请求与攻击模型相匹配,则生成访问请求为异常请求的检测结果;若访问请求与攻击模型不匹配,则生成访问请求不为异常请求的检测结果。
一示例中,nginx服务器200可包括:主动防护单元210与被动防护单元220。
主动防护单元210,用于获取需要开启WAF服务的第一业务线的域名;将lua脚本与第一业务线的域名相关联;为第一业务线加载lua脚本,以开启第一业务线的WAF服务。
被动防护单元220,用于当检测到第二业务线遭受到攻击时,为第二业务线加载lua脚本,以开启第二业务线的WAF服务;当检测到第二业务线不再遭受攻击时,终止第二业务线的WAF服务。
其中,当检测到第二业务线遭受到攻击时,为第二业务线加载lua脚本,以开启第二业务线的WAF服务包括:当检测到第二业务线遭受到攻击时,获取攻击者的ip地址;将攻击者的ip地址,添加到lua脚本的ip黑名单中;为第二业务线加载lua脚本,以开启第二业务线的WAF服务,拒绝来自攻击者的ip地址的访问请求。
在其他示例中,Web服务器100还可包括:请求统计分析单元、白名单更新单元与攻击模型更新单元。
请求统计分析单元,用于利用Web服务器,对预设时间周期内接收到的访问请求进行统计分析,获取正常请求的参数格式。
白名单更新单元,用于基于正常请求的参数格式,更新白名单。
攻击模型更新单元,用于将预设时间周期内接收到的访问请求中,不符合正常请求的参数格式的访问请求,与攻击模型进行匹配;当不符合正常请求的参数格式的访问请求,与攻击模型不匹配时,输出不符合正常请求的参数格式的访问请求,以供人工复检;根据人工复检的结果,更新攻击模型。
本实施例提供的WAF***,利用白名单和攻击模型双重保障,大符提升了WAF处理访问请求的效率和准确率,提高了Web应用安全防护的可靠性;WAF***在业务线无感知的情况下为其提供了定制化的服务,实现了针对业务线的主动防护与被动防护;WAF***不仅能够避免业务延时的显著增加,避免对业务造成负面影响,而且可以释放相关资源供其他有需要的业务使用。
本发明提供的基于lua-nginx的轻量级的WAF***,可从很大程度上节约服务器资源,通过对大量请求数据进行分析也可以保证WAF的效率和准确性;可以对业务线进行个性化定制服务,在业务无感知的情况下及时解决业务线的攻击;而且规则更新时不影响其他业务。通过运用本发明的技术方案,能够充分减少企业搭建高质量WAF的成本。
最后,还需要说明的是,在本文中,诸如第一和第一等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式来实现。基于这样的理解,本申请的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种Web应用安全防护方法,其特征在于,应用于Web应用防火墙WAF***,所述WAF***至少包括Web服务器与nginx服务器;所述Web服务器是采用python中的tornado框架搭建的;所述方法包括:
利用所述Web服务器,检测由所述nginx服务器传送来的访问请求是否为异常请求,得到检测结果;
利用所述Web服务器,向所述nginx服务器中预置的lua脚本发送所述检测结果;
利用所述nginx服务器读取传入所述lua脚本的所述检测结果,以确定所述访问请求是否为异常请求;
当所述访问请求为异常请求时,利用所述预置的lua脚本,对所述访问请求进行拦截处理;
当所述访问请求不为异常请求时,利用所述nginx服务器,将所述访问请求转发至相应的业务线源站。
2.如权利要求1所述的方法,其特征在于,所述利用所述Web服务器,检测由所述nginx服务器传送来的访问请求是否为异常请求,得到检测结果包括:
利用所述Web服务器,检测由所述nginx服务器传送来的访问请求是否与所述Web服务器中预置的白名单相匹配;
若所述访问请求与所述白名单相匹配,则生成所述访问请求不为异常请求的检测结果;
若所述访问请求与所述白名单不匹配,则检测所述访问请求是否与所述Web服务器中预置的攻击模型相匹配;
若所述访问请求与所述攻击模型相匹配,则生成所述访问请求为异常请求的检测结果;
若所述访问请求与所述攻击模型不匹配,则生成所述访问请求不为异常请求的检测结果。
3.如权利要求2所述的方法,其特征在于,还包括:
利用所述Web服务器,对预设时间周期内接收到的访问请求进行统计分析,获取正常请求的参数格式;
基于所述正常请求的参数格式,更新所述白名单;
将所述预设时间周期内接收到的访问请求中,不符合所述正常请求的参数格式的访问请求,与所述攻击模型进行匹配;
当所述不符合所述正常请求的参数格式的访问请求,与所述攻击模型不匹配时,输出所述不符合所述正常请求的参数格式的访问请求,以供人工复检;
根据所述人工复检的结果,更新所述攻击模型。
4.如权利要求1所述的方法,其特征在于,还包括:
获取需要开启WAF服务的第一业务线的域名;
将所述lua脚本与所述第一业务线的域名相关联;
为所述第一业务线加载所述lua脚本,以开启所述第一业务线的WAF服务。
5.如权利要求1所述的方法,其特征在于,还包括:
当检测到第二业务线遭受到攻击时,为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务;
当检测到所述第二业务线不再遭受攻击时,终止所述第二业务线的WAF服务。
6.如权利要求5所述的方法,其特征在于,所述当检测到第二业务线遭受到攻击时,为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务包括:
当检测到第二业务线遭受到攻击时,获取攻击者的ip地址;
将所述攻击者的ip地址,添加到所述lua脚本的ip黑名单中;
为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务,拒绝来自所述攻击者的ip地址的访问请求。
7.一种Web应用防火墙WAF***,其特征在于,所述WAF***至少包括Web服务器与nginx服务器;所述Web服务器是采用python中的tornado框架搭建的;
所述Web服务器,用于检测由所述nginx服务器传送来的访问请求是否为异常请求,得到检测结果,并向所述nginx服务器中预置的lua脚本发送所述检测结果;
所述nginx服务器,用于利用所述nginx服务器读取传入所述lua脚本的所述检测结果,以确定所述访问请求是否为异常请求;当所述访问请求为异常请求时,利用所述预置的lua脚本,对所述访问请求进行拦截处理;当所述访问请求不为异常请求时,将所述访问请求转发至相应的业务线源站。
8.如权利要求7所述的WAF***,其特征在于,所述Web服务器包括:
白名单匹配单元,用于检测由所述nginx服务器传送来的访问请求是否与所述Web服务器中预置的白名单相匹配;若所述访问请求与所述白名单相匹配,则生成所述访问请求不为异常请求的检测结果;
攻击模型匹配单元,用于若所述访问请求与所述白名单不匹配,则检测所述访问请求是否与所述Web服务器中预置的攻击模型相匹配;若所述访问请求与所述攻击模型相匹配,则生成所述访问请求为异常请求的检测结果;若所述访问请求与所述攻击模型不匹配,则生成所述访问请求不为异常请求的检测结果。
9.如权利要求7所述的WAF***,其特征在于,所述nginx服务器包括:
主动防护单元,用于获取需要开启WAF服务的第一业务线的域名;将所述lua脚本与所述第一业务线的域名相关联;为所述第一业务线加载所述lua脚本,以开启所述第一业务线的WAF服务。
10.如权利要求7所述的WAF***,其特征在于,所述nginx服务器还包括:
被动防护单元,用于当检测到第二业务线遭受到攻击时,为所述第二业务线加载所述lua脚本,以开启所述第二业务线的WAF服务;当检测到所述第二业务线不再遭受攻击时,终止所述第二业务线的WAF服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910308063.6A CN109905410A (zh) | 2019-04-17 | 2019-04-17 | Web应用安全防护方法与Web应用防火墙*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910308063.6A CN109905410A (zh) | 2019-04-17 | 2019-04-17 | Web应用安全防护方法与Web应用防火墙*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109905410A true CN109905410A (zh) | 2019-06-18 |
Family
ID=66954091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910308063.6A Pending CN109905410A (zh) | 2019-04-17 | 2019-04-17 | Web应用安全防护方法与Web应用防火墙*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109905410A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110545269A (zh) * | 2019-08-22 | 2019-12-06 | 西安四叶草信息技术有限公司 | 访问控制方法、设备及存储介质 |
CN110928568A (zh) * | 2019-11-05 | 2020-03-27 | 杭州衣科信息技术有限公司 | 一种发布更新web应用程序时业务服务不间断的方法 |
CN111030894A (zh) * | 2020-01-07 | 2020-04-17 | 广州思正电子股份有限公司 | 分布式通信***的前端测试方法 |
CN111988280A (zh) * | 2020-07-24 | 2020-11-24 | 网宿科技股份有限公司 | 服务器与请求处理方法 |
CN112131021A (zh) * | 2020-09-21 | 2020-12-25 | 上海博泰悦臻电子设备制造有限公司 | 一种访问请求处理方法及装置 |
CN112187737A (zh) * | 2020-09-10 | 2021-01-05 | 中信银行股份有限公司 | 一种PaaS容器云平台环境下的结合WAF的防护方法 |
CN113190838A (zh) * | 2021-03-29 | 2021-07-30 | 贵州电网有限责任公司 | 一种基于表达式的web攻击行为检测方法及*** |
CN114157441A (zh) * | 2020-08-18 | 2022-03-08 | 京东科技控股股份有限公司 | 请求处理***、方法、电子设备及存储介质 |
CN114513343A (zh) * | 2022-01-26 | 2022-05-17 | 广州晨扬通信技术有限公司 | 信令防火墙分级拦截方法、装置、***、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140372533A1 (en) * | 2011-02-09 | 2014-12-18 | Cliqr Technologies, Inc. | Apparatus, systems, and methods for cloud agnostic multi-tier application modeling and deployment |
CN105227571A (zh) * | 2015-10-20 | 2016-01-06 | 福建六壬网安股份有限公司 | 基于nginx+lua的web应用防火墙***及其实现方法 |
CN106021085A (zh) * | 2016-05-24 | 2016-10-12 | 北京金山安全软件有限公司 | 一种性能测试方法、装置及数据服务器 |
CN106209894A (zh) * | 2016-07-27 | 2016-12-07 | 福建富士通信息软件有限公司 | 一种基于nginx统一认证的方法以及*** |
CN106453397A (zh) * | 2016-11-18 | 2017-02-22 | 北京红马传媒文化发展有限公司 | 一种通过分析大数据自动识别网络抢票及入侵的方法 |
CN107786545A (zh) * | 2017-09-29 | 2018-03-09 | 中国平安人寿保险股份有限公司 | 一种网络攻击行为检测方法及终端设备 |
CN108965348A (zh) * | 2018-10-12 | 2018-12-07 | 深圳前海微众银行股份有限公司 | 网络安全防护方法、设备及计算机可读存储介质 |
-
2019
- 2019-04-17 CN CN201910308063.6A patent/CN109905410A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140372533A1 (en) * | 2011-02-09 | 2014-12-18 | Cliqr Technologies, Inc. | Apparatus, systems, and methods for cloud agnostic multi-tier application modeling and deployment |
CN105227571A (zh) * | 2015-10-20 | 2016-01-06 | 福建六壬网安股份有限公司 | 基于nginx+lua的web应用防火墙***及其实现方法 |
CN106021085A (zh) * | 2016-05-24 | 2016-10-12 | 北京金山安全软件有限公司 | 一种性能测试方法、装置及数据服务器 |
CN106209894A (zh) * | 2016-07-27 | 2016-12-07 | 福建富士通信息软件有限公司 | 一种基于nginx统一认证的方法以及*** |
CN106453397A (zh) * | 2016-11-18 | 2017-02-22 | 北京红马传媒文化发展有限公司 | 一种通过分析大数据自动识别网络抢票及入侵的方法 |
CN107786545A (zh) * | 2017-09-29 | 2018-03-09 | 中国平安人寿保险股份有限公司 | 一种网络攻击行为检测方法及终端设备 |
CN108965348A (zh) * | 2018-10-12 | 2018-12-07 | 深圳前海微众银行股份有限公司 | 网络安全防护方法、设备及计算机可读存储介质 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110545269A (zh) * | 2019-08-22 | 2019-12-06 | 西安四叶草信息技术有限公司 | 访问控制方法、设备及存储介质 |
CN110928568A (zh) * | 2019-11-05 | 2020-03-27 | 杭州衣科信息技术有限公司 | 一种发布更新web应用程序时业务服务不间断的方法 |
CN111030894A (zh) * | 2020-01-07 | 2020-04-17 | 广州思正电子股份有限公司 | 分布式通信***的前端测试方法 |
CN111030894B (zh) * | 2020-01-07 | 2022-01-18 | 燕东科技(广东)有限公司 | 分布式通信***的前端测试方法 |
CN111988280A (zh) * | 2020-07-24 | 2020-11-24 | 网宿科技股份有限公司 | 服务器与请求处理方法 |
CN114157441A (zh) * | 2020-08-18 | 2022-03-08 | 京东科技控股股份有限公司 | 请求处理***、方法、电子设备及存储介质 |
CN112187737A (zh) * | 2020-09-10 | 2021-01-05 | 中信银行股份有限公司 | 一种PaaS容器云平台环境下的结合WAF的防护方法 |
CN112131021A (zh) * | 2020-09-21 | 2020-12-25 | 上海博泰悦臻电子设备制造有限公司 | 一种访问请求处理方法及装置 |
CN112131021B (zh) * | 2020-09-21 | 2024-01-12 | 博泰车联网科技(上海)股份有限公司 | 一种访问请求处理方法及装置 |
CN113190838A (zh) * | 2021-03-29 | 2021-07-30 | 贵州电网有限责任公司 | 一种基于表达式的web攻击行为检测方法及*** |
CN114513343A (zh) * | 2022-01-26 | 2022-05-17 | 广州晨扬通信技术有限公司 | 信令防火墙分级拦截方法、装置、***、设备及存储介质 |
CN114513343B (zh) * | 2022-01-26 | 2022-10-04 | 广州晨扬通信技术有限公司 | 信令防火墙分级拦截方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109905410A (zh) | Web应用安全防护方法与Web应用防火墙*** | |
CN109861985B (zh) | 基于风险等级划分的ip风控方法、装置、设备和存储介质 | |
CN102934122B (zh) | 用于适配信息***基础设施的安全策略的方法 | |
US7506056B2 (en) | System analyzing configuration fingerprints of network nodes for granting network access and detecting security threat | |
US9807120B2 (en) | Method and system for automated incident response | |
CN102332072B (zh) | 用于检测恶意软件和管理恶意软件相关信息的***和方法 | |
CN110730175B (zh) | 一种基于威胁情报的僵尸网络检测方法及检测*** | |
US7437760B2 (en) | Antiviral network system | |
US20130031625A1 (en) | Cyber threat prior prediction apparatus and method | |
CN105376245A (zh) | 一种基于规则的apt攻击行为的检测方法 | |
US20110280160A1 (en) | VoIP Caller Reputation System | |
CN106790313A (zh) | 入侵防御方法及装置 | |
CA2787933A1 (en) | System and method for network security including detection of man-in-the-browser attacks | |
CN109711173B (zh) | 一种口令文件泄漏检测方法 | |
CN113179280B (zh) | 基于恶意代码外联行为的欺骗防御方法及装置、电子设备 | |
Riccardi et al. | A framework for financial botnet analysis | |
CN105141573A (zh) | 一种基于web访问合规性审计的安全防护方法和*** | |
CN109413016A (zh) | 一种基于规则的报文检测方法和装置 | |
EP4152729B1 (en) | Interactive email warning tags | |
CN114301659A (zh) | 网络攻击预警方法、***、设备及存储介质 | |
CN109361676A (zh) | 一种基于防火墙***的dns劫持防御方法、装置及*** | |
Yermalovich et al. | Formalization of attack prediction problem | |
CN109729089B (zh) | 一种基于容器的智能网络安全功能管理方法及*** | |
US8001243B2 (en) | Distributed denial of service deterrence using outbound packet rewriting | |
CN115952375A (zh) | 一种威胁情报数据有效性验证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190618 |