买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于目标站点自学习建模的WAF防御方法_杭州汉领信息科技有限公司_201910267017.6 

申请/专利权人:杭州汉领信息科技有限公司

申请日:2019-04-03

公开(公告)日:2021-09-17

公开(公告)号:CN110012010B

主分类号:H04L29/06(20060101)

分类号:H04L29/06(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.09.17#授权;2019.08.06#实质审查的生效;2019.07.12#公开

摘要:本发明公开了一种基于目标站点自学习建模的WAF防御方法,基于NginxModSecurity模块搭建WAF,并自主学习目标站点进行自学习建模,在切换防御模式后通过学习到的模型生成ModSecurity规则来实现对目标站点的异常访问,包含URI、COOKIE、HEAD、参数名、参数值的拦截,实现全方位保护目标站点安全的功效。这些规则基于发起http或者https的访问,对访问的报文进行深度解析,监测与该服务相关的所有通信,并利用学习到的所有信息来针对目标站点进行特征防御。

主权项:1.一种基于目标站点自学习建模的WAF防御方法,其特征在于,包括以下步骤:1Linux服务器上用Apache开源模块ModSecurity和Nginx搭建WAF;2开启学习模式:目标站点发起网络访问后,WAF通过Nginx调用ModSecurity的Lua脚本采集目标站点信息,包括URI、HEAD、COOKIE、参数名、参数值;3对步骤2采集到的目标站点信息进行处理,包括以下步骤:3.1将采集到的URI存入数据库URI表,将参数名、HEAD、COOKIE存入参数名表,将参数值存入参数值表,将参数名表和URI表ID相关联,将参数值表和URI表ID相关联,将参数值表和参数名表参数名关联;参数名表记录参数名次数和参数名正则;参数值表记录参数值正则;3.2相同的URI在URI表中只记录一次,URI表设置学习次数来标记相同URI采集次数;3.3步骤3.2中学习次数达到设定次数后,根据URI表ID找到参数名表对应的所有参数名,若每个参数名对应的参数名次数均等于学习次数,则参数名正则设置为和参数名一致,若有参数名对应的参数名次数不等于学习次数,则自定义正则匹配参数名填入参数名正则;3.4参数值表中将相同参数名的所有参数值与正则库进行正则比对,得到匹配该参数名所有参数值的正则,设置为参数值正则;4关闭学习模式,切换防御模式,根据数据库中URI表、参数值表和参数名表生成ModSecurity规则,添加规则到nginx配置文件中,开启ModSecurity模块,对目标站点进行针对性防御。

全文数据:一种基于目标站点自学习建模的WAF防御方法技术领域本发明属于信息安全领域,涉及一种基于目标站点自学习建模的WAF防御方法。背景技术随着网络技术的不断发展,Web服务器以其强大的计算能力、处理性能及蕴含的较高价值逐渐成为主要攻击目标。SQL注入、网页篡改、网页挂马等安全事件,频繁发生。Web应用防护系统英文:WebApplicationFirewall,简称:WAF应运而生,WAF部署在应用层,通过对来自客户端的各类请求进行检测和验证,来确保各种站点的安全性。其中WAF的安全规则起到决定性作用,市面上可见的WAF规则策略多采取维护中的规则库策略,缺乏时效性和特异性。面对一些专门针对目标站点的攻击往往失去效果,从到导致服务器收到攻击引发一系列安全问题。ModSecurity是一个免费、开源的Apache模块,可以充当Web应用防火墙WAF。ModSecurity是一个入侵探测与阻止的引擎.它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙。ModSecurity的目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击。Nginx支持Modsecurity模块是一项比较新的技术,因为Nginx是开源的,可以扩展与Modsecurity的模块,所以在NGginx搭配ModSecurity模块部署WAF成为市面上的主流。发明内容本发明的目的在于针对现有技术的不足,提供一种基于目标站点自学习建模的WAF防御方法,在针对不同网站环境下的目标站点防御起到关键作用。本发明的目的是通过以下技术方案来实现的:一种基于目标站点自学习建模的WAF防御方法,包括以下步骤:1Linux服务器上用Apache开源模块ModSecurity和Nginx搭建WAF;2开启学习模式:目标站点发起网络访问后,WAF通过Nginx调用ModSecurity的Lua脚本采集目标站点信息,包括URI、HEAD、COOKIE、参数名、参数值;3对步骤2采集到的目标站点信息进行处理,包括以下步骤:3.1将采集到的URI存入数据库URI表,将参数名、HEAD、COOKIE存入参数名表,将参数值存入参数值表,将参数名表和URI表ID相关联,将参数值表和URI表ID相关联,将参数值表和参数名表参数名关联;参数名表记录参数名次数和参数名正则;参数值表记录参数值正则;3.2相同的URI在URI表中只记录一次,URI表设置学习次数来标记相同URI采集次数;3.3步骤3.2中学习次数达到设定次数后,根据URI表ID找到参数名表对应的所有参数名,若每个参数名对应的参数名次数均等于学习次数,则将参数名正则设置为和参数名一致,若有参数名对应的参数名次数不等于学习次数,则自定义正则匹配参数名填入参数名正则;3.4参数值表中将相同参数名的所有参数值与正则库进行正则比对,得到匹配该参数名所有参数值的正则,设置为参数值正则;4关闭学习模式,切换防御模式,根据数据库中URI表、参数值表和参数名表生成ModSecurity规则,添加规则到nginx配置文件中,开启ModSecurity模块,对目标站点进行针对性防御。进一步地,所述步骤2中,lua脚本获取信息包括以下公式:req_uri=m.getvar"REQUEST_URI"公式1;headers=m.getvars"REQUEST_HEADERS"公式2;cookies=m.getvars"REQUEST_COOKIES"公式3;args=m.getvars"ARGS",{"none"}公式4;公式1为获取URL;公式2为获取HEAD;公式3为获取COOKIE;公式4为获取参数名、参数值;公式中,返回变量是luatable类似perl的hash数据类型的数据类型,以公式4为例,返回变量args有两个索引,第一个表示参数名,第二个表示参数名对应的参数值。进一步地,所述步骤3.2中,针对前部分相同的若干相似URI,截取相同部分保留,去掉不同部分,且学习次数为所有部分的学习次数相加;例如:index.phptp_nameid1、index.phptp_nameid2;可以保留成index.phptp_nameid,且学习次数为两部分的学习次数相加,index.phptp_nameid1、index.phptp_nameid2对应的参数名表中相同参数名去重合并,参数名表中重复参数名的参数名次数相加,参数值表相同参数值去重合并。进一步地,可以对数据库中采集到的站点信息进行人为更改,使最后生成的防御模型更加贴合目标站点。进一步地,切换防御模式后可以重新进入学习模式,以避免漏学。本发明的有益效果:在传统WAF死板规则下经常会有误报的攻击和漏过的攻击,本发明针对目标站点自学习建立匹配目标站点的防御策略,大大减少了误报和漏报,同时,防御策略模型的建立支持手自动一体,即可人为修改学习数据,从而建立一套更加贴合目标站点的防护策略模型。附图说明图1为本方法实现流程图;图2为WAF自学习白名单建模具体实现逻辑图。具体实施方式下面结合附图和具体实施例对本发明作进一步详细说明。如图1、2所示,本发明提供的一种基于目标站点自学习建模的WAF防御方法,包括以下步骤:1Linux服务器上用Apache开源模块ModSecurity和Nginx搭建WAF;2开启学习模式:目标站点发起网络访问后,WAF通过Nginx调用ModSecurity的Lua脚本采集目标站点信息,包括URI、HEAD、COOKIE、参数名、参数值;3对步骤2采集到的目标站点信息进行处理,包括以下步骤:3.1将采集到的URI存入数据库URI表,将参数名、HEAD、COOKIE存入参数名表,将参数值存入参数值表,将参数名表和URI表ID相关联,将参数值表和URI表ID相关联,将参数值表和参数名表参数名关联;参数名表记录参数名次数和参数名正则;参数值表记录参数值正则;3.2相同的URI在URI表中只记录一次,URI表设置学习次数来标记相同URI采集次数;3.3步骤3.2中学习次数达到设定次数后可以设置为三次,根据URI表ID找到参数名表对应的所有参数名,若每个参数名对应的参数名次数均等于学习次数,则将参数名正则设置为和参数名一致,若有参数名对应的参数名次数不等于学习次数,如有参数:name_1、name_2、name_3次数不等于学习次数,则自定义正则匹配参数名填入参数名正则,,上例参数名正则自定义为^name_[0-9]{1}$;3.4参数值表中将相同参数名的所有参数值与正则库进行正则比对,得到匹配该参数名所有参数值的正则,设置为参数值正则;正则库需要自己收集,越详细生成的正则越可靠;4关闭学习模式,切换防御模式,根据数据库中URI表、参数值表和参数名表生成ModSecurity规则,添加规则到nginx配置文件中,开启ModSecurity模块,对目标站点进行针对性防御。例一、目标站点的一条URI地址为index.php?listRows=1,参数名为listRows,参数值为1,学习次数达到3次,参数名次数等于3,参数名正则为listRows,参数值正则为?#01-1^[\s]*[+-]?[0-9]+[\s]*$|^$;生成的对应规则为:1、针对URI的防御:SecRuleREQUEST_URI"@streqindex.php""phase:2,id:10002,nolog,pass"2、针对参数名的防御,包含参数名、长度、类型、值:SecRuleREQUEST_URI"@beginsWithindex.php""phase:2,id:10004,allow,nolog,chain"SecRule&ARGS_NAMES"@eq1""chain"SecRuleARGS_GET:listRows"@le12""chain,t:length"SecRuleARGS_GET:listRows"?i?#01-1^[\s]*[+-]?[0-9]+[\s]*$|^$"Nginx配置文件加载规则后启用防御模式;在防御模式下,若访问URI为index.phpindexindex.html?listRows=1;被URI规则拦截;若访问URI为index.php?listRows=1&p=2;因参数名不同被拦截;若访问URI为index.php?listRows=test;因参数值不符合参数值正则被拦截;若访问URI为index.php?listRows=11111111111111;因参数值长度超长被拦截;规则参数在表1中解释;表1例二、目标站点有URI如index.phpDevAccteditid11,id后数字可变,可删除原URI,将URI改为index.phpDevAccteditid存入URI表,并将此条URI标记为收敛URI。规则匹配URI采用可写为:SecRuleREQUEST_URI"@beginsWithindex.phpDevAccteditid""phase:2,id:10002,nolog,pass"规则1代替:SecRuleREQUEST_URI"@streqindex.phpDevAccteditid""phase:2,id:10002,nolog,pass"规则2如例中URIindex.phpDevAccteditid11在规则1中匹配到放行,在规则2中会无法匹配被拦截;例三、目标站点有URI如index.phpuserindex,想要放行所有该URI为开头的URI,可以在URI表中将此条URI标记为白名单放行,规则为:SecRuleREQUEST_URI"@beginsWithindex.phpuserindex""ctl:ruleRemoveById=10197";当URI为index.phpuserindex开头的任意URI会被直接放行。上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

权利要求:1.一种基于目标站点自学习建模的WAF防御方法,其特征在于,包括以下步骤:1Linux服务器上用Apache开源模块ModSecurity和Nginx搭建WAF;2开启学习模式:目标站点发起网络访问后,WAF通过Nginx调用ModSecurity的Lua脚本采集目标站点信息,包括URI、HEAD、COOKIE、参数名、参数值;3对步骤2采集到的目标站点信息进行处理,包括以下步骤:3.1将采集到的URI存入数据库URI表,将参数名、HEAD、COOKIE存入参数名表,将参数值存入参数值表,将参数名表和URI表ID相关联,将参数值表和URI表ID相关联,将参数值表和参数名表参数名关联;参数名表记录参数名次数和参数名正则;参数值表记录参数值正则;3.2相同的URI在URI表中只记录一次,URI表设置学习次数来标记相同URI采集次数;3.3步骤3.2中学习次数达到设定次数后,根据URI表ID找到参数名表对应的所有参数名,若每个参数名对应的参数名次数均等于学习次数,则参数名正则设置为和参数名一致,若有参数名对应的参数名次数不等于学习次数,则自定义正则匹配参数名填入参数名正则;3.4参数值表中将相同参数名的所有参数值与正则库进行正则比对,得到匹配该参数名所有参数值的正则,设置为参数值正则;4关闭学习模式,切换防御模式,根据数据库中URI表、参数值表和参数名表生成ModSecurity规则,添加规则到nginx配置文件中,开启ModSecurity模块,对目标站点进行针对性防御。2.根据权利要求1所述的一种基于目标站点自学习建模的WAF防御方法,其特征在于,所述步骤2中,lua脚本获取信息包括以下公式:req_uri=m.getvar"REQUEST_URI"公式1;headers=m.getvars"REQUEST_HEADERS"公式2;cookies=m.getvars"REQUEST_COOKIES"公式3;args=m.getvars"ARGS",{"none"}公式4;公式1为获取URL;公式2为获取HEAD;公式3为获取COOKIE;公式4为获取参数名、参数值。3.根据权利要求1所述的一种基于目标站点自学习建模的WAF防御方法,其特征在于,所述步骤3.2中,针对前部分相同的若干相似URI,截取相同部分保留,去掉不同部分,且学习次数为所有部分的学习次数相加,相似URI对应的参数名表相同参数名去重合并,参数名表中重复参数名的参数名次数相加,参数值表相同参数值去重合并。4.根据权利要求1所述的一种基于目标站点自学习建模的WAF防御方法,其特征在于,可以对数据库中采集到的站点信息进行人为更改,使最后生成的防御模型更加贴合目标站点。5.根据权利要求1所述的一种基于目标站点自学习建模的WAF防御方法,其特征在于,切换防御模式后可以重新进入学习模式,以避免漏学。

百度查询: 杭州汉领信息科技有限公司 一种基于目标站点自学习建模的WAF防御方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。