一种基于白名单的内容锁防火墙方法及系统与流程

文档序号:22506049发布日期:2020-10-13 09:43阅读:112来源:国知局
一种基于白名单的内容锁防火墙方法及系统与流程

本发明涉及网络安全领域,尤其涉及防火墙领域。



背景技术:

防火墙是网站安全防护的主要手段。防火墙从功能上可以分为包过滤防火墙和内容过滤防火墙。包过滤防火墙在不复杂网络中被广泛使用,因为只检查ip层和tcp层的包头信息,速度比较快。包过滤防火墙的主要问题是无法对数据包的内容进行核查。内容过滤防火墙可以对数据包内容进行过滤,检测内容可以是url地址、特征码等。url是internet上每一个网页及其资源的唯一的标识。使用url过滤,通过提取用户http连接get/post请求中的url字段,并判断url合法性对http请求包进行放行或者拦截。通常内容过滤防火墙厂商使用大数据技术对恶意流量进行分析、训练和学习得到恶意流量检测模型库,并用来对访问流量进行过滤。这种技术方案的优点是可以追加新的恶意流量检测模型,有效提升网络恶意流量检测的精确度。缺点是从新型网络攻击出现到建立并更新模型有时间差,这期间的攻击无法被拦截。

此外,针对特定网站的漏洞攻击,使用大数据技术无法有效学习到。系统漏洞修复一直是web应用程序不得不面对的问题。对于系统漏洞问题,除了定期升级系统软件外,使用扫描软件对自身网站进行漏洞扫描也是一种方案,但网站漏洞扫描软件基本都需要付费。平台扫描是近几年兴起的另一种解决方式,要将网站提交到平台认证,认证后将扫描结果通过邮件以漏洞清单的形式发给用户。上面提到的方案也只是查找网站漏洞,找到漏洞后还需要专业人员去修复漏洞,另外,据imperva统计超过三分之一的web应用程序漏洞没有可用的解决方案。

网站挑选防火墙需要考虑其自身业务量、服务对象、内容敏感度和维护成本等因素。多数网站功能相对固定,更新需求不高,比如高校和企事业单位的官方网站,以及一些小公司的门户网站,据统计约68.3%的网站超过6个月才更新一次。这类网站一般不愿或不能承担专业维护的高成本,只使用简单的防火墙防护,从而使网站暴露在被攻击的风险中。



技术实现要素:

防火墙的过滤规则可以分为白名单和黑名单。白名单是指匹配规则的流量将都被放行,黑名单是指匹配规则的流量将被拦截。通常包过滤防火墙同时使用白名单和黑名单,内容过滤防火墙一般以黑名单为主。传统防火墙的关键问题是黑名单是不完备的,即使不断更新学习规则库,仍然存在未知类型攻击的可能,并且黑名单的维护成本高。

为解决这一问题,本发明提出了一种基于白名单的内容锁防火墙方法及系统,包括以下:

根据本发明的第一方面,提供了一种基于白名单的内容锁防火墙方法,包括:

步骤200:对网站收到的数据包载荷进行语义解析,获得收到的数据包的解析文本;

步骤300:将所述网站收到的数据包的解析文本与文本模式库进行匹配,以决定对收到的数据包进行转发还是拦截,所述文本模式库包含多个关键字的值域和结构特征。

在本发明的一个实施例中,其中,所述文本模式库通过下述方式生成:

根据对网站已有的正常流量的数据包载荷进行语义解析,通过对解析的文本训练学习,获得多个关键字的值域和结构特征。

在本发明的一个实施例中,其中,所述文本模式库也可通过编写设定生成。

在本发明的一个实施例中,其中步骤200还包括:对网站收到的数据包载荷进行语义解析,获得收到的数据包的解析文本的值域和结构特征;以及

步骤300进一步包括:

对收到数据包的所有解析文本的值域和结构特征与文本模式库进行逐一匹配,如果都正确匹配,则匹配成功,否则匹配失败;

如果匹配成功,则转发收到的数据包;

如果匹配失败,则拦截收到的数据包,并写入拦截日志。

在本发明的一个实施例中,其中,所述文本模式库的生成包括:

步骤110对正常流量进行预处理;

步骤120按照关键字对载荷进行解析获得解析文本;

步骤130根据特定的规则对得到的大量解析文本进行分类,分类规则包括网页url或有效载荷关键字,训练学习每一类解析文本,得到解析文本的值域和结构特征;

步骤140聚合所有解析文本的值域和结构特征形成文本特征库,再将文本特征库中的文本特征逐条转换成文本模式,形成文本模式库。

在本发明的一个实施例中,还包括步骤400:

对拦截日志进行复查;

其中,采用计数器触发或者固定时间对拦截日志进行复查。

在本发明的一个实施例中,步骤400还包括:

对于属于正常访问但被拦截的数据包,则对被拦截的数据包载荷进行解析,获得多个关键字的值域和结构特征,将得到的文本特征追加到所述文本模式库。

在本发明的一个实施例中,其中使用计数器触发包括:

使用计数器对拦截包个数累积计数,当计数器超过设置的阈值时,触发警告提醒查看拦截日志,然后重置计数器。

根据本发明的第二方面,提供了一种计算机可读存储介质,其中存储有一个或者多个计算机程序,所述计算机程序在被执行时用于实现本发明的基于白名单的内容锁防火墙方法。

根据本发明的第三方面,提供了一种计算系统,包括:

存储装置、以及一个或者多个处理器;

其中,所述存储装置用于存储一个或者多个计算机程序,所述计算机程序在被所述处理器执行时用于实现本发明的基于白名单的内容锁防火墙方法。

与现有技术相比,本发明的实施例的优点在于:采用正常流量作为样本训练生成文本模式库可以有效防御已知的和新型的网络攻击。将整个数据包的文本内容是否符合文本模式库作为检测条件而不是仅仅使用url或者特征码可以避免攻击者利用检测条件的盲点发起攻击,对于站点自身系统漏洞的利用,通常都不是正常访问行为,不符合文本模式库,可以直接被过滤掉。相比于传统防火墙,本方案不需要高成本维护黑名单库,且能防御新型网络攻击模式。对于更新困难的第三方开发的网站,通过部署本防火墙可以在保障正常功能的情况下带着漏洞运行,不需要花高昂成本升级。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

在附图中:

图1示出了根据本发明的一个实施例的处理流程图。

图2示出了根据本发明的一个实施例的系统框图。

具体实施方式

如背景技术中所介绍,传统防火墙技术存在应对缓慢或维护成本较高等问题,因此需要一种更为方便快捷的方法。为此,本专利发明人提出了一种基于白名单的内容锁的数据包过滤方法,其将文本模式库作为白名单,只允许受信任的文本内容通过防火墙。该方法利用网站的正常流量内容是有规律可循的特征,对正常流量内容进行文本解析并训练、学习生成文本模式库,在内容检测过程中仅允许被文本模式库完全匹配的数据包通过防火墙,并对未匹配的数据包进行后台复查,并按需更新文本模式库防止错误拦截。图1示出了该方法的一个实施例的流程图,包含步骤100、200、300和400,每个步骤的具体内容如下:

步骤[100]生成文本模式库

对正常流量中的每一个数据包载荷进行语义解析得到多个解析文本,并按照约定形式对解析文本进行分类。训练学习每一类文本的特征,包括文本值域、结构等,将不同的文本特征聚集在一起形成文本模式库,文本模式库也可以由网站内容设计者直接编写设定。步骤[100]包括以下步骤:

步骤[110]:采集正常流量并对正常流量进行预处理。采集正常流量的方法包括但不限于封闭环境采集以及开放环境的采集后标注。然后,将流量解析为单个的包,并根据数据包网络层包头的长度字段过滤无载荷数据包,如果数据包有载荷则进入步骤[120]进一步处理,否则处理正常流量的下一个数据包继续判断是否有载荷;

步骤[120]:提取数据包的载荷,然后按关键字段对载荷进行语义解析得到解析文本;如果需要,对数据包进行解压缩和格式转换。

例如url中不能包含非ascii字符,当需要使用ascii码无法表示的内容时,会将url中的非ascii字符转换为ascii字符,采用的规则是:将非ascii字符按照一定的编码方式(典型的就是utf-8)转换为unicode中的码位,然后用码位对应数值的16进制形式,加上%号前缀,形成编码后的字符串,用这个字符串替换掉url中对应的非ascii字符串,对于这种url需做格式转换后再进行处理。

如果是http包,则关键字段源自http协议规定的字段,如host,get,cookie,user-agent,origin等,解析文本以关键字段开头,以“\r\n”结尾。

比如对于如下http消息

get

/player_auth?data=d1ff06c5adce6daee3264fbedebc904dda19ef6035ffbf5ed29973445940f34de80e06cba65bbfaffedfb7af8d8d7c0ef39994e1c1fefaef16d37285ec9bea7dec5e44326a61069ea26c6d5cba7dc75fhttp/1.1

host:wf1.394225.com:8855

cdn-src-ip:61.166.74.129

user-agent:mozilla/5.0(windowsnt6.1;wow64)applewebkit/537.36(khtml,likegecko)chrome/55.0.2883.87safari/537.36

origin:http://www.wf5558.com

accept:*/*

referer:http://www.wf5558.com/

accept-language:zh-cn,zh;q=0.8

accept-encoding:gzip

x-via:1.1erdianxin12:10(cdncacheserverv2.0)

connection:keep-alive

cookie:io=mehilvc_lhaxuav4aaas

可被解析成如下12个解析文本

(1)get

/player_auth?data=d1ff06c5adce6daee3264fbedebc904dda19ef6035ffbf5ed29973445940f34de80e06cba65bbfaffedfb7af8d8d7c0ef39994e1c1fefaef16d37285ec9bea7dec5e44326a61069ea26c6d5cba7dc75fhttp/1.1

(2)host:wf1.394225.com:8855

(3)cdn-src-ip:61.166.74.129

(4)user-agent:mozilla/5.0(windowsnt6.1;wow64)applewebkit/537.36(khtml,likegecko)chrome/55.0.2883.87safari/537.36

(5)origin:http://www.wf5558.com

(6)accept:*/*

(7)referer:http://www.wf5558.com/

(8)accept-language:zh-cn,zh;q=0.8

(9)accept-encoding:gzip

(10)x-via:1.1erdianxin12:10(cdncacheserverv2.0)

(11)connection:keep-alive

(12)cookie:io=mehilvc_lhaxuav4aaas

观察解析文本,以确定是否进一步分解。例如url的格式为protocol://hostname[:port]/path/[;parameters][?query]#fragment,其中符号“?”标识其后的字符串为query,query的格式为field=value,先后按“&”和“=”切割query字符串,就可以获得对应的关键字,例如对于url中的query

“?eio=3&transport=polling&t=mehg-fo&sid=brboevtvu7wsyymwaaas”,用此方法可以获得对应的关键字{eio,transport,t,sid}及其value。除url外,关键字也可从http消息头的其它部分获得,例如cookie等。

例如解析文本post

/players/8/?eio=3&transport=polling&t=mevfx_q&sid=k7wwafvpa4s3dylaacpkhttp/1.1就可以通过关键字transport,t,sid等进行进一步分解,将原文本分解成如下6个短文本:

(1)post/players/8/;

(2)eio=3;

(3)transport=polling;

(4)t=mevfx_q;

(5)sid=k7wwafvpa4s3dylaacpk;

(6)http/1.1。

步骤[130]:根据特定的规则对步骤[110]和步骤[120]得到的大量解析文本进行分类,分类规则可以是但不限于网页url或有效载荷关键字;训练学习每一类解析文本,得到解析文本的值域和结构特征。值域包括文本字符类型范围,文本长度范围;结构特征是指解析文本的构造形式。

例如,将访问同一url的请求中含有cookie字段的文本归为一类,含sid字段的文本归为一类,含有t字段的归为一类文本。

例如步骤[120]中示例cookie的值域类型含字母、数字和特殊字符,长度为20。示例sid的文本字符类型只有字母和数字,字母包括大小写,文本长度为20。而示例t的文本字符类型包括字母和_,不包含数字,文本长度为7。

比如字段content-type的文本内容有content-type:application/json;charset=utf-8,也可以有content-type:text/plain;charset=utf-8。从给出的两个示例可以看出,content-type字段的解析文本的结构特征可以表述成“content-type:字符串1/字符串2;字符串3=字符串4”。其中,字符串1有两个取值application和text,字符串2也有两个取值json和plain,且application和json是成对出现的。这里只是给出了两个示例,当有更多示例时,字符串的取值可能更多。

步骤[140]:聚合步骤[130]得到的所有解析文本的值域和结构特征形成文本特征库,再将文本特征库中的文本特征逐条转换成文本模式,形成文本模式库。

如正则表达式便是文本模式的一种。上述cookie字段的文本特征结构可以用正则表达式表示成cookie:io=[-0-9a-za-z_]{20}。而含有t字段的文本特征结构可以用正则表达式表示成t=[-a-za-z_]{7}。

步骤[200]流量内容语义解析

网卡接收数据包,解析数据包包头并根据长度字段过滤没有载荷的数据包,对有载荷的数据包进行语义解析,如果需要,对数据包进行解压缩和格式转换等操作。步骤[200]包括以下步骤:

步骤[210]:网卡收到数据包后,解析数据包头,根据包头长度字段判断是否包含有效载荷,如果具有有效载荷,则进入步骤[220];对无载荷的数据包根据公认的规则判断处理,这一部分功能本专利不涉及。

步骤[220]:提取数据包的载荷,对载荷进行语义解析,如果需要,对数据包进行格式转换和解压缩等操作。

步骤[300]匹配内容锁防火墙,执行放行或拦截操作

内容锁防火墙将步骤[100]得到的文本模式库与步骤[200]得到的解析文本进行匹配检查,所有文本的字符类型、长度范围、结构等都与文本模式库正确匹配则转发数据包,否则拦截数据包并写入拦截日志,然后回到步骤[200]。可使用计数器对拦截数据包计数,计数器超过阈值则触发预警,提示管理员查看拦截日志。步骤[300]包括以下步骤:

步骤[310]:将步骤[100]得到的文本模式库与步骤[200]得到的解析文本进行匹配,匹配范围包括文本的字符类型、文本长度和文本结构等;

步骤[320]:一个数据包的载荷的所有文本都能被文本模式库正确匹配,则认为该数据包合法,同时转发该数据包,然后回到步骤[210]继续执行。如不能完全匹配,则拦截该数据包,将拦截数据包写入日志,并采用计数器对拦截包个数累积计数,然后回到步骤[210]开始执行,当计数器超过设置的阈值时触发警告提醒管理员查看拦截日志,然后重置计数器;

步骤[400]复查日志并按需更新文本模式库

管理员后台查看拦截日志对步骤[320]拦截的数据包进行复查,如果属于正常访问但被拦截,则对数据包载荷进行训练和学习,将得到的文本特征追加到文本模式库。步骤[400]包括以下步骤:

步骤[410]:管理员后台复查拦截日志,对拦截数据包进行复查,检查数据包载荷内容。如果属于正常范围数据包被拦截,则对数据包按照步骤[120]到步骤[140]的过程生成文本模式,再将新的文本模式追加到文本模式库实现更新。对触发查看拦截日志可有两种方式,一是步骤[320]中的计数器触发,二是每隔固定时间查看,间隔时间粒度可以根据错误拦截量调整。

图2示出了基于白名单的内容锁的数据包过滤方法的一个系统实施例,包括模块10、20、30和40,以下是它们的介绍:

模块10:文本模式库生成模块,其对正常流量进行预处理,将流量处理成单个的数据包,并根据数据包包头的长度字段过滤无载荷数据包。然后对每一个数据包载荷进行语义解析得到多个解析文本,并按照约定形式对解析文本进行分类。训练学习每一类文本的特征,包括文本值域、结构等,最后合并所有文本特征生成文本模式库,文本模式库也可以由网站内容设计者直接编写设定。模块10进一步包括模块11、12、13、14。

模块11:将正常流量按包解析成单个数据包,并根据数据包包头的长度字段过滤无载荷数据包,然后将有载荷数据包送到模块12进行处理;

模块12:提取模块11得到的数据包的载荷,然后按关键字段对载荷进行语义解析得到解析文本。如果需要,对数据包进行解压缩和格式转换等操作;例如,如果是http数据包,那么关键字段源自http协议规定的字段,如host,get,cookie,user-agent,origin等,观察初步解析得到的解析文本是否可以进一步解析,如解析文本post/players/8/?eio=3&transport=polling&t=mevfx_q&sid=k7wwafvpa4s3dylaacpkhttp/1.1就可以进一步通过关键字transport,t,sid等进行分解,将原文本分解成如下6个短文本:(1)post/players/8/;(2)eio=3;(3)transport=polling;(4)t=mevfx_q;(5)sid=k7wwafvpa4s3dylaacpk;(6)http/1.1;

模块13:将模块11和模块12得到的大量解析文本进行分类,分类规则可以是但不限于网页url或有效载荷关键字;训练学习每一类解析文本,得到解析文本的值域和结构特征。值域包括文本字符类型范围,文本长度范围;结构特征是指解析文本的构造形式;

如对于访问同一url中含有关键字sid的文本可以分为一类,关键字sid的文本内容由数字和字母组成,且长度固定为20。

模块14:聚集模块13得到的所有解析文本的值域和结构特征形成文本特征库,再将文本特征库中的文本特征逐条转换成文本模式,形成文本模式库。

例如,正则表达式便是一种文本模式,如sid的文本特征用正则表达式可以表示成sid=[-0-9a-za-z_]{20}。

模块20:数据包解析模块,用于对数据包进行解析及过滤,此模块处理由网卡收到的数据包,先根据数据包包头过滤没有载荷的数据包,然后对有载荷的数据包进行语义解析,如果需要进行格式转换、解压缩等操作,得到能被文本模式库识别的文本。模块20进一步包括模块21、22。

模块21:解析数据包包头,根据数据包包头长度字段过滤无载荷数据包,判断方法同模块11,得到有载荷数据包;

模块22:提取模块21得到的数据包载荷,然后按关键字段对载荷进行语义解析得到解析文本。如果需要,对数据包进行解压缩和格式转换等操作;

模块30:数据包过滤模块,此模块将模块10得到的文本模式库与模块20得到的解析文本进行匹配,匹配范围包括文本字符类型,文本长度,文本结构等,然后检查匹配结果,都正确匹配则通过网卡转发该数据包,否则拦截数据包,并写入拦截日志,同时采用计数器对拦截数据包累积计数,当累计拦截数据包个数超过设定的阈值则触发预警提示管理员查看拦截日志,并重置计数器。模块30进一步包括模块31、32。

模块31:将模块10得到的文本模式库与模块20得到的所有解析文本进行匹配,匹配范围包括文本字符类型、文本长度、文本结构等;

模块32:检查模块31的匹配结果,如解析文本与文本模式库都匹配则转发该数据包,并回到模块21检查下一个数据包,如未完全匹配则拦截数据包,并将拦截数据包记录在拦截日志中,使用计数器对拦截数据包进行计数,如计数器超过设定的阈值可触发预警提示管理员查看拦截日志,然后重置计数器,再回到模块21开始检查下一个数据包。

模块40:拦截包后台检查模块,用于对拦截数据包进行复查,防止正常访问网站数据包被模块32拦截,根据数据包载荷的字段内容进行检查,如有正常数据包被拦截,则将数据包的文本特征追加到模块12中得到的文本模式库。模块40进一步包括模块41。

模块41:管理员查看拦截日志,检查拦截数据包载荷内容。如果属于正常数据包被拦截,则将数据包送到模块12处理,将数据包的文本特征追加到文本模式库。触发查看拦截日志可有两种方式,一是模块32中的计数器触发,二是每隔固定时间查看,间隔时间粒度可以根据错误拦截量调整。

需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1