一种防火墙攻击防御方法与流程

文档序号:16848317发布日期:2019-02-12 22:30阅读:560来源:国知局
一种防火墙攻击防御方法与流程

本发明属于网络安全领域,具体涉及一种防火墙攻击防御方法。



背景技术:

网络攻击是指利用网络存在的漏洞和安全缺陷对网络系统的硬件、软件及其系统中的数据进行的攻击。随着计算机网络的广泛应用,网络攻击技术也在不断发展。网络攻击的方式和方法已经从早期的粗糙、单一的攻击方法发展到今天的精致、综合的攻击方法。目前,internet上常见的网络攻击分为以下三类:单包攻击、扫描攻击和泛洪攻击:

(1)单包攻击

单包攻击又称畸形报文攻击。攻击者向目标机器发送有缺陷的ip报文(如分片重叠的ip报文、具有非法标志位的tcp报文等),由于目标机器无法正确处理此类ip报文,因此导致系统崩溃。另一种方式是,攻击者通过发送大量无用报文,恶意占用网络带宽,导致网络阻塞。

(2)扫描攻击攻击者运用扫描工具对网络进行主机地址或端口进行扫描,通过准确定位潜在目标的位置,探测目标系统的网络拓扑结构和启用的服务类型,并利用搜集到的信息实施进一步的攻击。

(3)泛洪攻击

泛洪攻击是dos攻击的一种方式,包括tcpsynflood攻击和udpflood攻击等。攻击者在短时间内向目标系统发送大量的虚假请求,导致目标系统疲于应付无用信息,大量消耗关键资源,无法为合法用户提供正常服务,即发生拒绝服务。

在各种网络攻击中,dos攻击由于其实施简单、破坏力强,成为最常见的一种攻击方法。数据显示,超过90%的dos攻击是利用tcp协议的漏洞实现的,而tcpsynflood攻击是使用最普遍的攻击手段。internet上任何提供基于tcp的网络服务的系统,例如web服务器、ftp服务器和邮件服务器,都容易受到tcpsynflood攻击。因此,针对synflood攻击的良好的防范能力在防火墙攻击防范的整体功能中占有举足轻重的作用。

防火墙作为保护网络安全的重要手段,应能有效防范各种网络攻击。近年来,大规模网络攻击行为的不断出现,对防火墙提出了更高的要求。随着防火墙的广泛应用和组网环境的变化,防火墙的策略配置方式也向着更易用、更高效的趋势发展。

传统的防火墙基于内网/外网模式,防火墙处于内部网络和外部网络之间,只要根据网络报文的入接口和出接口进行安全策略的配置。但随着防火墙的不断发展,出现了基于区域划分的防火墙部署方案,即内网/外网/dmz(非军事区)模式。其中,dmz是一个不同于内网或外网的特殊网络区域,dmz内通常放置一些不含机密信息的公用服务器,比如web、mail、ftp服务器等。这样,来自外网的访问者可以访问dmz中的服务,但不能接触到存放在内网中的公司机密或私人信息等,即使dmz中服务器受到破坏,也不会对内网中的机密信息造成影响。在这种模式下,防火墙处于三个区域的中心,以三角方式将它们连接起来。

在这种基于区域划分的组网环境中,传统的基于接口的策略配置方式需要为每一个接口配置安全策略,安全策略的维护工作量成倍增加,从而也增加了因为配置引入安全风险的概率。因此,现代防火墙中引入了安全区域的概念。安全区域(securityzone)是指共享同一组安全属性的网络资产和资源的逻辑分组(有时也是物理分组),是防火墙实施策略和配置管理的核心元素。引入安全区域的概念之后,安全管理员将安全需求相同的接口或ip地址进行分类,划分到不同的安全区域,对应于实际网络结构中的内网、外网和dmz等网络区域。通过安全区域的划分,防火墙的配置能够更加灵活地同现有的网络结构相结合,实现策略的分层管理,提高防火墙策略配置的便捷性和安全性。

现今很多防火墙都提供三个独立的安全区域:受信安全区域(trust)、非受信安全区域(uuntrust)和非军事化区域(dmz)。除此之外,还可以根据实际需要添加更多的安全区域,通过在安全区域上配置策略,实现防火墙的各项功能。

虽然已有防火墙具备基于安全区域的配置管理、报文管理和会话管理等功能,但是均缺乏能够检测多种类型的攻击、并对攻击采取合理的防范措施的全面防范功能,难以利用有效的攻击防范技术主动防御各种常见的网络攻击,无法保证网络在遭受越来越频繁的攻击的情况下能够正常运行。即现有技术中仍缺少防火墙的整体安全解决方案。



技术实现要素:

针对现有技术存在的上述缺陷,本发明提供一种防火墙攻击防御方法,实现网络攻击检测,精确检测单包攻击、扫描攻击和泛洪攻击;检测到网络攻击后,根据配置采取相应的防范措施。

为实现上述发明目的本发明采取的技术方案是:

一种防火墙攻击防御方法,由配置攻击防范策略的方法、单包攻击检测与防范方法、扫描攻击检测与防范方法、泛洪攻击检测与防范方法、syn洪水攻击检测与防范方法组成;

配置攻击防范策略的方法包括以下步骤:

接收到配置消息;

对配置消息进行解析并提取配置参数,同时对配置参数进行合法性检查;

对于不合法的配置显示错误提示信息,对于合法的配置,使新配置的策略应用生效;

单包攻击检测与防范方法包括以下步骤:

接收报文;

根据当前配置的策略检查报文字段,判断报文的合法性;

检测到攻击后,根据当前配置的策略返回报文处理结果为丢弃或放行;

输出告警日志;

扫描攻击检测与防范方法包括以下步骤:

接收到报文;

查询源ip地址的新建连接速率,判断是否超过阈值;

检测到攻击后,根据当前配置的策略返回报文处理结果为丢弃或放行;

将攻击者ip地址列入黑名单;

输出告警日志;

泛洪攻击检测与防范包括以下步骤:

接收报文;

查询目的ip地址的新建连接速率,判断是否超过阈值;

检测到攻击后,根据当前配置的策略返回报文处理结果为丢弃或放行;

接口输出告警日志;

syn洪水攻击检测与防范方法包括以下步骤:

接收tcpsyn报文;

查询目的ip地址的半开连接数和新建连接速率,若超过阈值则检测为syn洪水攻击;

检测到攻击后,如果启用了tcp代理,则将目的ip添加到受保护ip地址列表,否则根据当前配置的策略返回报文处理结果为丢弃或放行;

输出告警日志。

所述syn洪水攻击检测与防范方法中,目的ip地址添加到受保护ip地址列表后,应用safereset技术实施保护,在不影响正常流量的同时拦截攻击流量,实现syn洪水攻击防范。

通过将一攻击防范模块应用于防火墙实现攻击防范策略配置处理,以及各种网络攻击的检测并通过调用防火墙的功能模块接口采取相应的攻击防范措施,所述防火墙具备安全区域管理、配置管理、报文管理、黑名单管理、策略管理、日志管理和会话管理功能模块,所述攻击防范模块包括配置处理子模块、攻击检测子模块和tcp代理子模块。

本发明取得的显著有益效果是:

本发明能够检测多种类型的攻击、并对攻击采取合理的防范措施;

通过采用经过改进的safereset技术,并结合基于流量异常检测的tcp代理联动机制,更加高效和稳定地实现synflood攻击防范。

附图说明

图1是攻击防范模块及外部模块关系图;

图2是配置策略处理流程图;

图3是单包攻击检测与防范处理流程图;

图4是扫描攻击检测与防范处理流程图;

图5是泛洪攻击检测与防范处理流程图;

图6是tcpsynflood攻击原理图;

图7是tcp代理联动机制处理流程图。

具体实施方式

以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种防火墙防御方法,其通过将一攻击防范模块应用于已具备基于安全区域的配置管理、报文管理和会话管理等功能的防火墙实现,能够实现网络攻击检测,精确检测单包攻击、扫描攻击和泛洪攻击。单包攻击具体包括:icmp重定向攻击、icmp不可达攻击、ip源站选路选项攻击、路由记录选项攻击、land攻击、smurf攻击、fraggle攻击、winnuke攻击。扫描攻击具体包括:地址扫描攻击、端口扫描攻击。泛洪攻击包括:tcpsynflood攻击、icmpflood攻击、udpflood攻击。检测到网络攻击后,根据配置采取相应的防范措施,例如丢弃报文、加入黑名单、输出告警日志等。实现tcp代理联动机制下的safereset技术,有效防御tcpsynflood攻击。

本发明基于安全区域的防火墙的攻击防范模块(简称攻击防范模块)实现,集成于防火墙主要实现攻击防范策略配置处理,以及各种网络攻击的检测并通过调用外部模块(防火墙的功能模块)接口采取相应的攻击防范措施。所述防火墙已具备安全区域管理、配置管理、报文管理、黑名单管理、策略管理、日志管理和会话管理等功能。攻击防范模块与外部模块接口的连接、通信采用常规技术方式,不再赘述。整个攻击防范模块包括配置处理子模块、攻击检测子模块和tcp代理子模块。其中,由于tcpsynflood攻击防范需要以采用safereset技术的tcp代理方式实现,其原理比较复杂,所以将tcp代理功能划分为单独的子模块。攻击检测子模块检测到tcpsynflood攻击后,通知tcp代理子模块启用tcp代理功能,防御tcpsynflood攻击。

配置处理子模块、攻击检测子模块与tcp代理子模块之间,以及整个攻击防范模块与外部模块之间的关系如图1所示:

各模块间的数据流如下:

d1:配置消息。管理员通过用户界面配置攻击防范策略时,由配置管理模块将配置消息传递给攻击防范模块,攻击防范模块根据配置对后续的报文应用策略。

d2:配置处理返回的数据。攻击防范模块返回给配置管理模块的配置处理结果。

d3:安全区域信息。攻击防范模块在输出日志时,需要从安全区域模块获取指定的安全区域的相关信息。

d4:原有的攻击防范策略信息。攻击防范模块在检查报文时,需要从策略管理模块获取报文所属安全区域上的攻击防范策略信息。

d5:更新的攻击防范策略信息。管理员通过用户界面配置攻击防范策略时,由攻击防范模块将新的策略信息传递给策略管理模块,策略管理模块负责更新策略信息。

d6:会话信息。对于扫描攻击和泛洪攻击的检测,攻击防范模块需要从会话管理模块查询会话信息,获取网络上指定ip地址的半开连接数和新建连接速率。

d7:更新的会话状态。攻击防范模块检测到攻击后,采取相应的防范措施,有时需要更新会话状态。

d8:接收的报文数据。攻击防范模块对防火墙接收的报文进行合法性检查。

d9:转发的报文数据。经过攻击防范模块检查的报文,其中的某些字段可能需要修改,对于放行的报文直接继续转发。

d10:列入黑名单的条目信息。对于检测到的扫描攻击,可以将攻击者的ip地址列入黑名单,在指定的时间内屏蔽来自该主机的所有报文。

d11:输出的日志信息。检测到攻击时,将当前时间、攻击类型、源主机和目的主机信息等输出到日志中。

d12:配置参数。配置管理子模块通过解析外部配置管理模块传递的配置消息,设置配置参数,传递给攻击检测子模块,使其应用相应的功能。

d13:受保护的主机信息。攻击检测子模块检测到tcpsynflood攻击后,启用tcp代理联动机制,将攻击目标主机列入受保护主机,tcp代理模块利用safereset技术为受保护主机实施防御。

攻击防范的主要处理流程如下:

(一)配置攻击防范策略的处理流程

管理员可以通过命令行和web页面两种方式配置防火墙攻击防范策略。攻击防范模块可配置的策略内容包括:创建、删除和修改单包攻击、扫描攻击和泛洪攻击防范策略。攻击防范策略的属性设置包括应用策略的安全区域、各种具体的攻击检测的使能和相关阈值的设置,以及检测到攻击后需要采取的防范措施等。其中,防范措施包括输出告警日志、丢弃攻击报文以及攻击ip列入黑名单等。除此之外,对于tcpsynflood攻击,还可以设置启用tcp代理功能进行防范。

配置攻击防范策略的处理主要由配置处理子模块完成,其处理流程如图2所示。配置处理子模块接收到外部配置管理模块传递的配置消息后,对其进行解析并提取配置参数,同时对配置参数进行合法性检查,对于不合法的配置显示错误提示信息,对于合法的配置,首先在控制平面更新策略,然后将配置相应地下发给攻击检测子模块,使新配置的策略应用生效。

(二)单包攻击检测与防范的处理流程

如果管理员在某个安全区域上配置了单包攻击防范策略,则攻击检测子模块将接收到该安全区域上入方向的报文,并根据当前配置的策略检查报文。管理员可配置不同类型的单包攻击的检测使能状态,可以有选择性地对各种单包攻击进行防范。如果发现报文具有攻击特征,则采取防范措施。如果管理员在策略中配置了检测到攻击丢包,则丢弃攻击报文,否则放行攻击报文。如果没有检测到任何攻击特征,则认为是正常的报文,直接放行并继续转发。只要检测到攻击,无论攻击报文被丢弃还是被放行,都要输出告警日志,提示检测到的攻击类型、攻击报文的相关信息,以及防火墙采取的过滤动作等。

单包攻击检测与防范的处理流程如图3所示。攻击检测子模块接收到外部的报文管理模块传递的安全区域上入方向的报文后,根据当前配置的策略检查报文字段,判断报文的合法性。检测到攻击后,根据当前配置的策略返回报文处理结果为丢弃或放行,最后通过调用外部的日志管理模块提供的接口输出告警日志。

(三)扫描攻击检测与防范的处理流程

如果管理员在某个安全区域上配置了扫描攻击防范策略,则攻击检测子模块将接收到该安全区域上入方向的报文,并从报文中解析出源ip地址,查询源ip地址的新建连接速率,如果超过了管理员在策略中配置的新建连接速率阈值,则认为此报文是扫描攻击报文。对于扫描攻击,防火墙会强制丢弃攻击报文,管理员不能对是否丢弃攻击报文进行配置。此外,如果策略配置将攻击ip地址列入黑名单,则将攻击报文的源ip地址列入黑名单。在一定时间内,源ip地址被列入黑名单的报文将全部被直接丢弃。如果报文源ip地址的新建连接速率没有超过策略配置的阈值,则认为是正常的报文,直接放行并继续转发。最后,只要检测到扫描攻击,都要输出告警日志,提示检测到的攻击类型、攻击报文的相关信息,以及防火墙采取的过滤动作等。

扫描攻击检测与防范的处理流程如图4所示。攻击检测子模块接收到外部的报文管理模块传递的安全区域上入方向的报文后,通过调用外部的会话管理模块提供的接口查询源ip地址的新建连接速率,判断是否超过阈值。检测到攻击后,根据当前配置的策略返回报文处理结果为丢弃或放行,并通过调用外部的黑名单管理模块提供的接口将攻击者ip地址列入黑名单,最后通过调用外部的日志管理模块提供的接口输出告警日志。

(四)泛洪攻击检测与防范的处理流程

如果管理员在某个安全区域上配置了泛洪攻击防范策略,则攻击检测子模块将接收到该安全区域上出方向的报文,并从报文中解析出目的ip地址,然后判断报文类型,如果为非tcpsyn报文,则查询目的ip地址的新建连接速率,若速率超过管理员在策略中设定的阈值,则认为是泛洪攻击,并根据策略配置对攻击报文执行丢弃或放行。对于判定为正常的报文,则直接放行并继续转发。只要检测到泛洪攻击,都要输出告警日志,提示检测到的攻击类型、攻击报文的相关信息,以及防火墙采取的过滤动作等。

泛洪攻击检测与防范的处理流程如图5所示。攻击检测子模块接收到外部的报文管理模块传递的安全区域上出方向的报文后,通过调用外部的会话管理模块提供的接口查询目的ip地址的新建连接速率,判断是否超过阈值。检测到攻击后,根据当前配置的策略返回报文处理结果为丢弃或放行,最后通过调用外部的日志管理模块提供的接口输出告警日志。

(五)tcpsynflood(也称syn洪水攻击)攻击检测与防范处理流程

在泛洪攻击中,tcpsynflood攻击最难处理,对其检测与防范采用tcp代理联动机制和safereset技术。

tcpsynflood攻击是一种最常见的ddos攻击方式,它利用tcp连接建立过程中的缺陷,通过发送大量伪造的tcp连接请求,使得被攻击方资源耗尽,从而无法处理正常客户请求。其攻击实现简单,但难于检测。这是因为攻击流量和正常流量是相互混杂的,难以正确区分,攻击流量没有固定的特征,无法通过特征库方式识别。通常把tcp连接建立的过程称为“tcp三次握手”,其具体步骤可简洁地概括为:(1)客户向服务器发送syn报文;(2)服务器向客户返回synack报文;(3)客户再次向服务器返回ack报文。

tcp连接建立过程中,客户和服务器各自为当前的连接分配资源。在上述三次握手过程中,服务器收到客户发送的syn报文段后,即第一次握手完成后,服务器会为即将建立的tcp连接分配tcb资源。tcb(tcpcontrolblock,tcp控制块)包含了tcp为各连接维护的所有结点信息,包括两个方向的序号、窗口大小、重传次数等信息。每个tcp连接都需要维护一个tcb,每个tcb需要占用140字节存储空间。此时的tcp连接没有完全建立,称为半开连接。这种半开连接仅在服务器收到客户的ack应答报文或连接超时后才断开,而客户端在收到synack报文之后才会分配tcb资源,因此这种不对称的资源分配模式会被攻击者利用,形成tcpsynflood攻击。

如图6所示,攻击者使用一个并不存在的源ip地址向目标服务器发起连接,该服务器回应synack消息作为响应,由于应答消息的目的地址并不是攻击者的实际地址,所以这个地址将无法对服务器进行响应。因此,tcp握手的最后一个步骤将永远不可能发生,该连接就一直处于半开状态直到连接超时后被释放。如果攻击者用快于服务器tcp连接超时的速度,连续对目标服务器开放的端口发送syn报文,服务器的所有tcb资源都将被消耗,以至于不能再接受其他客户端的正常连接请求。

传统的针对tcpsynflood攻击的防范主要是基于新建连接速率和半开连接数限制的流量异常检测,当源主机对目的主机发起的tcp连接速率或建立的半开连接数超过一定阈值后,防火墙将会阻断后续流量。但这种方法的缺点是无法区分攻击流量和正常流量,一旦检测到tcpsynflood攻击,后续的所有的tcp报文将被丢弃,使服务器无法响应正常用户的连接请求。

tcp代理机制解决了上述问题。客户端通过tcp代理请求与受保护的服务器建立连接时,tcp代理首先验证客户端的请求是否为tcpsynflood攻击。验证通过后,客户端和服务器之间才能建立tcp连接,从而避免服务器受到攻击。

常见的实现tcp代理的方式是syncookie技术。它改变了资源分配的策略,通过检查tcp连接的合法性,在为服务器过滤掉恶意连接报文的同时保证了常规业务的正常运行。

syncookie技术的原理及其详细处理过程已是现有技术,不再赘述。

然而在实际应用中,syncookie技术具有一定限制。由于syncookie技术最终是依靠防火墙对客户端与服务器之间的所有连接报文进行代理实现的,因此要求防火墙设备必须部署在所保护的服务器入口和出口的关键路径上,保证所有客户端向服务器发送的报文以及服务器向客户端回应的报文都需要经过该设备。但是在实际的组网环境中,服务器回应客户端的报文可能并不经过防火墙。此时,syncookie技术就无法正常生效了。

为此,本发明采用经过改进的safereset技术,同样基于tcp代理机制,实现tcpsynflood攻击检测与防范。

safereset技术是防火墙通过对正常tcp连接进行干预来识别合法客户端的一种技术。防火墙对tcp建立连接的协商报文进行处理,修改应答报文的确认序号并使其携带认证信息(称之为cookie),再通过验证客户回应的协商报文中携带的信息来进行报文有效性确认。

防火墙在利用safereset技术认证tcp连接的过程中,对合法客户的报文进行正常转发,对虚假客户以及简单模拟tcp协议栈的非法客户发起的新建连接报文进行丢弃,这样服务器就不会为虚假或非法客户发起的syn报文分配连接资源,从而避免遭受tcpsynflood攻击。

safereset技术的原理及其详细处理过程同样已是现有技术,不再赘述。

本发明为进一步提升应用safereset技术后的网络通信性能,采用流量异常检测结合tcp代理联动机制的方法,实现对tcpsynflood攻击的防范。流量异常检测包括两种方式:半开连接数检测和新建连接速率检测。

当恶意客户端向目标服务器发起tcpsynflood攻击时,如果恶意客户端采用了仿冒的源ip地址,那么在目标服务器上会存在大量半开连接。同时,当恶意客户向目标服务器发起tcpsynflood攻击时,不管恶意客户采用仿冒源ip地址的手段还是使用真实的ip地址,其呈现的结果就是发往服务器的报文会在短时间内大量增加。因此,当受保护机器的半开连接数或新建连接速率超过一定阈值时,则可认为该机器受到了tcpsynflood攻击。

tcp代理联动机制的处理流程如图7所示。攻击检测子模块接收到外部(防火墙)的报文管理模块传递的安全区域上出方向的tcpsyn报文后,通过调用外部(防火墙)的会话管理模块提供的接口查询目的ip地址的半开连接数和新建连接速率,若超过阈值则检测为tcpsynflood攻击。检测到攻击后,如果启用了tcp代理,则将目的ip添加到tcp代理子模块的受保护ip地址列表,否则根据当前配置的策略返回报文处理结果为丢弃或放行,最后通过调用外部的日志管理模块提供的接口输出告警日志。

目的ip地址添加到受保护ip地址列表后,tcp代理子模块应用safereset技术对其实施保护,在不影响正常流量的同时拦截攻击流量,实现tcpsynflood攻击防范。

safereset技术的具体实现主要完成以下处理:接收到客户发送给服务器的syn报文时,根据报文信息生成一个cookie值,并将此值作为确认序号写入synack报文,返回给客户。如果接收到客户发送的rst报文,验证其序号字段携带的cookie值是否合法,如果合法则将本次连接记为可信连接,否则记为不可信连接。

接收到syn报文的处理流程如下:

(1)解析并提取报文四元组(源ip地址,目的ip地址,源端口,目的端口);

(2)查询已通过验证的四元组记录,判断syn报文是否可信;

(3)如果syn报文可信,则继续转发,否则构造错误的synack报文并发送。其中,构造synack报文的方法为,修改syn报文的字段,将其转换为synack报文。具体操作是,对于syn报文,交换其源ip和目的ip,交换其源端口和目的端口,将tcp标志中的syn标志位和ack标志位置位,计算cookie值,将确认序号设置为cookie值,最后调整校验和。这样便构造好了用于返回给客户的synack报文。其中计算cookie值的计算方法如下:

其中hash是一个散列函数,将输入的四元组生成一个散列值。将当前系统时间作为时间戳添加到cookie值中,以便后续的连接合法性验证。

接收到rst报文的处理流程如下:

(1)解析并提取报文四元组(源ip地址,目的ip地址,源端口,目的端口);

(2)验证报文的序号是否合法。正确的序号应为接收到syn报文时计算的cookie值加1。

(3)如果验证合法,则认为是可信连接,将四元组添加到记录中,否则停止转发报文。

其中,验证序号是否合法的方法为,从cookie值计算出在此之前添加的时间戳,用当前系统时间与之前的系统时间相减,求得一个时间间隔,若此时间间隔在一定的范围之内,则认为是合法的确认序号,若时间间隔超过了一定的范围,则认为是非法的确认序号。求得时间间隔的计算方法如下:

式(4.1)与式(4.2)中的hash是同一个散列函数。hash函数可以有多种定义方式,在此不必详述。

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